⑴ 如何防止編譯後的VFP可執行程序不被反編譯
不可能的,編譯與反編譯永遠在較量中前進,道高一尺魔高一丈。只能說不被「一般人」反編譯,除了基本的加殼加密等方式,還有個狠的,就是在程序中設置「邏輯炸彈」(自己設計),當某一個進程或程序段被反復跟蹤、、時該炸彈就會自動「引爆」使整個程序崩潰,而無法繼續反編譯。當然了也有牛人會「拆彈」了,呵呵,畢竟是少數中的少數
計算機界有句名言「沒有解不開的密碼!」和這道理差不多。
以上是我個人理解
⑵ visual foxpro程序防止反編譯
在「項目」-「項目信息」中切換到「項目」選項卡,勾選「加密」,這樣可以防止通過分離提取出app文件以非常方便地看到源代碼了,最少地保障安全。
VFP程序如果連編成exe,那麼exe本質上是外層一個解釋器,內層是需要解釋的app文件,所以,也可以採取更換解釋器的方法來防止反編譯。以前有高手開發過,現在找不到了。
但是要真的完全防止反編譯,那從某些方面來講,就是非常傳統的加殼了——但是,加殼也沒法保證100%安全。
⑶ 如何讓FOXPRO中的DBF文件加密
網上有很多這樣的資料,一般由加密解密構成!給你一份資料,你學習學習吧!!!一、加密、解密思路
我們知道資料庫文件(.dbf)的數據結構分為三部分:文件頭部分、欄位描述部分和記錄部分。文件頭部分的第一個位元組是chr(03),這樣,就可以
通過修改文件頭的第一個位元組,使啟用正常的打開方式不能瀏覽資料庫內容,達到加密的目的;解密時,將加密資料庫文件的文件頭第一個位元組修改為
正常的資料庫文件的第一個位元組,即可對它進行正常操作。
二、加密函數
function jiami
parameters dbf_f_name,curs_set
dbf_f_name=upper(alltr(dbf_f_name))
private all
if .not. file(dbf_f_name)
=messagebox(""要加密的文件不存在!!"",0+48,""錯誤提示"")
else
if ! "".DBF"" $ dbf_f_name
dbf_f_name=dbf_f_name+"".DBF""
endif
hle=FOPEN(dbf_f_name,2)
if hle>0 &&打開文件成功
fbyte=FREAD(hle,1)
=FSEEK(hle,0)
=FWRITE(hle,iif(fbyte==chr(3),chr(0),chr(26)))
&&假如第一個位元組是chr(3)則用chr(0),否則用chr(26)寫入
=FCLOSE(hle)
else
=messagebox(""試圖文件打開錯誤!!"",0+48,""加密錯誤提示"")
endif hle>0
endif
return
三、解密函數
function jiemi
parameters dbf_f_name,curs_set
dbf_f_name=upper(alltr(dbf_f_name))
private all
if .not. file(dbf_f_name)
=messagebox(""要解密的文件不存在!!"",0+48,""錯誤提示"")
else
if ! "".DBF"" $ dbf_f_name
dbf_f_name=dbf_f_name+"".DBF""
endif
hle=FOPEN(dbf_f_name,2)
if hle>0
fbyte=FREAD(hle,1)
=FSEEK(hle,0)
if fbyte=chr(0).or.chr(26)
=FWRITE(hle,iif(fbyte=chr(0),chr(3),chr(245)))
endif
=FCLOSE(hle)
else
=messagebox(""試圖文件打開錯誤!!"",0+48,""解密錯誤提示"")
endif hhandle>0
endif
return
四、調用加(解)密函數
啟動VFP,將加密、解密函數在程序調用之前定義,然後建立表單,在表單中建立兩個命令按鈕,命名為「加密」、「解密」;
在命令按鈕「加密」的click事件中添加代碼:「=jiami(""要加密的資料庫文件名"",off)」
如果要加密多個資料庫文件,則調用幾次加密函數即可);
同理在命令按鈕「解密」的click事件中添加代碼:「=jiemi(""要解密的資料庫文件名"",off)」,如果要解密多個加密資料庫文件,則多調用幾
次解密函數即可。
在表單中,點擊「加密」按鈕,則執行加密操作,點擊「解密」按鈕,執行解密操作。