突破Windows加解密禁区
大家都知道,如果要想对程序进行加密或解密,首先要弄清楚程序的入口在哪儿,然后再修改入口处的指令以达到加密或解密的目的,现在我就具体向大家介绍一种很简单而实用的方法,可对Windows下的可执行文件直接进行修改。假设我们要修改的文件为SOL.EXE,具体步骤如下:
1.REN SOL.EXE SOL,然后DEBUG SOL
2.D 13C可得[013C]=0400,这说明Windows首部距离文件起始地址偏移400H,加上PSP的长度得Windows首部地址为500H。
3.D 500可以看到“NE”的标记,我们就找到Windows首部了。
4.D 514 L 4显示83 00 08 00,即入口的CS:IP=0008:0083。
5.D 522可得[0522H]=0040,这表示段表距离Windows首部的偏移量为0040H,即第一个段表的地址为540H。因为每个段表占8个字节,而由第四步可知CS=0008所以入口段的段表地址为0578H。
6.D 578 L 2显示B4 01,这表示入口段距离文件起始位置的偏移量为01B4个扇区。
7.D 532得[532H]=0004,这表示扇区的大小为2**4=10H。而由第四步可知IP=0083H。现在我们就可以算出程序入口处距离文件起始位置的偏移量为:01B4H*10H+0083H=1BC3H再加上PSP空间100H,所以入口处的地址为1BC3H+100H=1CC3H。
8.U 1CC3可以看到入口处代码的庐山真面目
XOR BP,BP
PUSH B P
CALL 0000:FFFF
最后的工作就是修改入口处的指令,然后用W命令存盘。掌握了以上的文件修改方法后,我们就可以对任意的Windows可执行文件进行加解密工作了。比如,按照我以上向大家介绍的方法来分析用BITLOK 2.0 for Windows加密过的软件,只消一分钟的时间就可以找到其入口的指令为CALL 2864;JMP 1C83;我们只要将这条CALL 2864指令改为三条NOP指令即可完成解密工作。很容易吧!你也不妨一试。