VFP的簡單加密,可能很多朋友都已經掌握了。此文僅針對初學者。 (6千字)
以下來說說如何簡單加密VFP[非加密編譯],使得Refox和Unfoxall都不能識別。其實這
都是利用Refox和Unfoxall的BUG來實現的,因為他們都是基於設計機制的反編譯器,而不是
基於執行機制。這只是一種簡單的加密方法,可能很多朋友都已經掌握了。此文僅針對初學
者。
以附件中的Crackme3.exe為例。
工具:Refox8以上、Unfoxall 2.1以上,UltraEdit32
讓我們溫習下APP的結構:
1、用UltraEdit開啟Crackme3.exe,移動游標到檔案尾部最後4個位元組,為 1D 99 00 00
這就是EXE中APP檔案的實際長度了(包含標誌資訊),即APPSIZE=39197,那麼APP在EXE的偏移
為EXESIZE-APPSIZE=46877-39197=7680
(0x1e00)。
0b710h. | 83 41 00 00 00 00 00 00 00 1D 99 00 00
| .A........... |
~~~~~~~~~~~
2、將游標移到1e00h驗證第一步的結果,果然沒錯,出現了APP的特徵了!
01e00h. | FE F2 FF 20 02 03 00 01 00 C4 98 00 00 6E 98 00 | ... .........n..
|
~~~~~ ~~ ~~~~~ ~~~~~ ~~~~~ ~~~~~~~~~~~
~~~~~~~~
A B
C D E F
G
01e10h. | 00 56 00 00 00 00 00 00 00 00 00 00 00 00 00 00
| .V.............. |
~~ ~~~~~~~~~~~
H
01e11h. | 00 00
00 00 00 00 00 0C 7F 20 20 73 63 72 65 65 | ........ scree |
~~~~~
I
A: VFP 特徵
B:加密標誌FF不加密
C:VFP版本,20 是表明VFP為6.0或7.0
D:檔案總數為3
E:主檔案在檔案列表的序號
F:檔案列表的結束位置[98C4h+1E00h=B6C4h]
G:檔案列表的開始位置
H:檔案列表的長度
I:檢校和
FoxChkSum
原檔案:
0b660h. | DF 9B 71 E2 4B BE E3 7B BE F6 1B 08 00
3B 62 61 | ..q.K..{.....;ba |
0b670h. | 63 6B 75 70 73 5C CF EE C4 BF 5C
72 65 62 5C 64 | ckups\....\reb\d |
0b680h. | 65 66 65 5C 63 72 61 63 6B
6D 65 33 5C 00 63 6F | efe\crackme3\.co |
0b690h. | 6E 66 69 67 2E 66 70
77 00 63 3A 5C 77 69 6E 64 | nfig.fpw.c:\wind |
0b6a0h. | 6F 77 73 5C 74
65 6D 70 5C 00 63 72 61 63 6B 6D | ows\temp\.crackm |
0b6b0h. | 65 33 2E
66 78 70 00 33 63 72 61 63 6B 6D 65 2E | e3.fxp.3crackme. |
0b6c0h. | 67
69 66 00 06 29 00 00 00 49 00 00 00 00 00 00 | gif..)...I...... |
~~~~~~~~~~~
~~~~~~~~~~~
A1 B1
0b6d0h. | 00 20 00 00 00 00 00 00 00 00 00 00 00 00 49 00 | . ............I. |
~~~~~~
B2
0b6e0h. | 00 00
30 87 00 00 2B 00 00 00 3C 00 00 00 00 00 | ..0...+...<..... |
~~~~~ ~~~~~~~~~~~
C1
0b6f0h. | 00 00 00 00 00 00 06 30 87
00 00 6E 98 00 00 00 | .......0...n.... |
~~~~~~~~~~~
~~~~~~~~
C2
D1
0b700h. | 00 00 00 49 00 00 00 00 00 00 00 00 00 00 00 00 | ...I............
|
0b710h. | 83 41 00 00 00 00 00 00 00 1D 99 00 00
| .A........... |
A1是什麼?第一個檔案開始位置,Refox和Unfoxall都用它來作為檢測是否為Fox檔案的一
個標記,改掉它 Refox和Unfoxall都認為不是FOX檔案了,是否影響執行?不影響!我們先
不要改這裡,第二次再改,先看看戲。
B1、B2:第二個檔案的開始位置,B1-B2之間為第二個檔案的基本資訊,具體參照上次寫
的FoxStructure。C1、C2、D1如此類推。
在設計環境中,B1、B2、C1、C2....都是不能更改的,一更改了VFP就不翻臉不認人了。:)
在執行環境中呢?B2、C2...才真正有用,B1、C1...只是充當擺設或進一步檢校FOX特徵。
因此,我們把B1改掉後,Unfoxall對檔案大小的確定就發生了錯誤,進而不能正確反編譯。
修改如下....我們可以將這種觀點擴充到.SCT、.VCT檔案中去,照樣可行。
第一次修改:
0b660h. | DF 9B 71 E2 4B BE E3 7B BE F6 1B 08 00 3B 62 61
| ..q.K..{.....;ba |
0b670h. | 63 6B 75 70 73 5C CF EE C4 BF 5C 72 65 62
5C 64 | ckups\....\reb\d |
0b680h. | 65 66 65 5C 63 72 61 63 6B 6D 65 33
5C 00 63 6F | efe\crackme3\.co |
0b690h. | 6E 66 69 67 2E 66 70 77 00 63
3A 5C 77 69 6E 64 | nfig.fpw.c:\wind |
0b6a0h. | 6F 77 73 5C 74 65 6D 70
5C 00 63 72 61 63 6B 6D | ows\temp\.crackm |
0b6b0h. | 65 33 2E 66 78 70
00 33 63 72 61 63 6B 6D 65 2E | e3.fxp.3crackme. |
0b6c0h. | 67 69 66 00
06 29 00 00 00 49 FF FF FF 00 00 00 | gif..+...I...... |
~~~~~~~~~~~ ~~~~~~~~~~~
A1 B1
0b6d0h. | 00
20 00 00 00 00 00 00 00 00 00 00 00 00 49 00 | . ............I. |
~~~~~~
B2
0b6e0h. | 00 00 30 87 FF FF
2B 00 00 00 3C 00 00 00 00 00 | ..0...+...<..... |
~~~~~ ~~~~~~~~~~~
C1
0b6f0h. | 00 00 00 00 00 00 06 30 87 00 00 6E 98
00 00 00 | .......0...n.... |
~~~~~~~~~~~ ~~~~~~~~
C2 D1
0b700h.
| 00 00 00 49 00 00 00 00 00 00 00 00 00 00 00 00 | ...I............ |
0b710h.
| 83 41 00 00 00 00 00 00 00 1D 99 00 00 | .A...........
|
第二次修改改什麼?就是改A1嘍。。。。將A1由29h改成2Bh吧,Refox和Unfoxall都不能
識別了。
第二次修改後:
0b660h. | DF 9B 71 E2 4B BE E3 7B BE F6 1B 08 00 3B
62 61 | ..q.K..{.....;ba |
0b670h. | 63 6B 75 70 73 5C CF EE C4 BF 5C 72
65 62 5C 64 | ckups\....\reb\d |
0b680h. | 65 66 65 5C 63 72 61 63 6B 6D
65 33 5C 00 63 6F | efe\crackme3\.co |
0b690h. | 6E 66 69 67 2E 66 70 77
00 63 3A 5C 77 69 6E 64 | nfig.fpw.c:\wind |
0b6a0h. | 6F 77 73 5C 74 65
6D 70 5C 00 63 72 61 63 6B 6D | ows\temp\.crackm |
0b6b0h. | 65 33 2E 66
78 70 00 33 63 72 61 63 6B 6D 65 2E | e3.fxp.3crackme. |
0b6c0h. | 67 69
66 00 06 29 00 00 00 49 FF FF FF 00 00 00 | gif..+...I...... |
~~~~~~~~~~~
~~~~~~~~~~~
A1 B1
0b6d0h. | 00 20 00 00 00 00 00 00 00 00 00 00 00 00 49 00 | . ............I. |
~~~~~~
B2
0b6e0h. | 00 00
30 87 FF FF 2B 00 00 00 3C 00 00 00 00 00 | ..0...+...<..... |
~~~~~ ~~~~~~~~~~~
C1
0b6f0h. | 00 00 00 00 00 00 06 30 87
00 00 6E 98 00 00 00 | .......0...n.... |
~~~~~~~~~~~
~~~~~~~~
C2
D1
0b700h. | 00 00 00 49 00 00 00 00 00 00 00 00 00 00 00 00 | ...I............
|
0b710h. | 83 41 00 00 00 00 00 00 00 1D 99 00 00
| .A........... |
就這樣先吧,自己動手試驗下,是否覺得很簡單?
下次說說如何讓Refox記憶體溢位和讓Unfoxall非法操作。阿牛預約了,下次先在他的罈子
釋出。
例子和本文下載地址:http://www.uf5du1.chinaw3.com/foxtech/02.zip
相關文章
- 僅以此程式碼獻給我所有朋友或愛好VFP的朋友。 (10千字)2002-09-08
- 初學者作品(6) (1千字)2000-05-04
- 【iOS工具】簡書 MarkDown 編輯模式初學者學習教程(此文僅為個人測試所用)2017-12-13iOS模式
- 6 個例子讓初學者掌握 free 命令2018-01-13
- 給初學者的 6 個 Android 加密工具2015-07-06Android加密
- 最簡單的RSA加密demo,初學者的保姆級即抄即用!2021-12-10加密
- 針對 Node.js 初學者的入門資源彙總2013-04-08Node.js
- vfp&exe加密程式破解實錄 (1千字)2001-08-17加密
- 專門針對初學者的Node.js教程--四個例子絕對可用2014-09-04Node.js
- 初學者(7) (4千字)2000-05-05
- 初學者(8) (4千字)2000-05-07
- 初學者(9) (3千字)2000-05-07
- 初學者(10) (8千字)2000-05-14
- 初學者(11) (2千字)2000-05-18
- 初學者(12) (1千字)2000-06-09
- 初學者(13) (2千字)2000-06-09
- 初學者(14) (5千字)2000-06-10
- 初學者(15) (3千字)2000-07-04
- 初學者(16) (2千字)2000-07-04
- 初學者(17) (1千字)2000-07-04
- 初學者(18) (2千字)2000-07-05
- 初學者(19) (4千字)2000-07-10
- 初學者(20) (3千字)2000-07-15
- 初學者(20) (1千字)2000-08-08
- 初學者(22) (7千字)2000-08-09
- 初學者(23) (7千字)2000-08-13
- 初學者(26) (9千字)2000-08-17
- 初學者(27) (1千字)2000-08-25
- 給初學者的 Android 加密工具2015-07-06Android加密
- 一個簡單的破解,供初學者參考!望高手多加指點! (1千字)2001-03-26
- 破解vfp&exe v1.85 demo加密檔案的簡單方法 (498字)2001-09-07加密
- 對Java初學者的忠告2012-07-05Java
- 給初學者,因為我就是個初學者(1) (3千字)2000-05-03
- 給初學者,因為我就是個初學者(2) (1千字)2000-05-03
- 給初學者,因為我就是個初學者(4) (1千字)2000-05-03
- 初學者請看! (2千字)2000-12-28
- 如何讓您的VFP程式更安全?對VFP程式設計師的一點忠告。 (1千字)2001-11-21程式設計師
- 瘋狂單詞破解實錄(初學者請進!) (9千字)2000-08-24