程序自效验又称暗桩。为了使程序破解更加的困难,程序会使用假效验迷惑破解者,之后进行重启自效验。自效验的数据可能使MD5、文件的大小等等。
0x01 准备
OD
52PJ实验程序
0x02 OD载入,去自效验
1.用户输入的数据将会储存在文件中,程序重启之后将取出文件中的数据来进行效验。
2.首先看看可执行文件的内容


3.既然使用文件储存必然会有文件的操作,输入123456,点击重启验证1看一下会发生什么

4.可以看到程序在桌面创建了一个52PoJie.txt文件,打开发现里面储存的123456


5.重启程序,看看程序会不会读取这个52PoJie.txt文件

6.发现使用readfile这个API读取了这个文件

7.OD载入,对这个API下断点,文件名就是关键字

8.运行程序,在端点处断下,右下角可以发现调用了readfileAPI,这个API调用的特点是,调用API结束后,文件的内容会储存在buffer的地址中,记下buffer字段的地址是0012F348

9.F8向下运行直到跳出这个函数

10.运行完readfile这个API之后查看buffer所指向的地址,发现为123456,这个就是文件中储存的数据

11.下图中绿色部分就是strcmp函数,用于比较文件中的数据和目标数据是否相等,也就是自效验的内容

12.这里我打了注释,主要就是需要将我们的数据和自效验的数据(JXU2MjExJXU2)相等

13.修改程序自效验数据

14.最后保存二进制数据,重启程序看看
