以下来说说如何简单加密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.. | 字串2
~~~~~ ~~ ~~~~~ ~~~~~ ~~~~~ ~~~~~~~~~~~ ~~~~~~~~
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:文件列表的长度
字串8
字串6
修改如下....我们可以将这种观点拓展到.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. |
字串4
字串5