去除程序重启自效验的三种方式(上)

程序自效验又称暗桩。为了使程序破解更加的困难,程序会使用假效验迷惑破解者,之后进行重启自效验。自效验的数据可能使MD5、文件的大小等等。

0x01 准备

OD
52PJ实验程序

0x02 OD载入,去自效验

1.用户输入的数据将会储存在文件中,程序重启之后将取出文件中的数据来进行效验。
2.首先看看可执行文件的内容
去除程序重启自效验的三种方式(上)_第1张图片
去除程序重启自效验的三种方式(上)_第2张图片
3.既然使用文件储存必然会有文件的操作,输入123456,点击重启验证1看一下会发生什么
去除程序重启自效验的三种方式(上)_第3张图片
4.可以看到程序在桌面创建了一个52PoJie.txt文件,打开发现里面储存的123456
去除程序重启自效验的三种方式(上)_第4张图片去除程序重启自效验的三种方式(上)_第5张图片
5.重启程序,看看程序会不会读取这个52PoJie.txt文件
去除程序重启自效验的三种方式(上)_第6张图片
6.发现使用readfile这个API读取了这个文件
去除程序重启自效验的三种方式(上)_第7张图片
7.OD载入,对这个API下断点,文件名就是关键字
去除程序重启自效验的三种方式(上)_第8张图片
8.运行程序,在端点处断下,右下角可以发现调用了readfileAPI,这个API调用的特点是,调用API结束后,文件的内容会储存在buffer的地址中,记下buffer字段的地址是0012F348
去除程序重启自效验的三种方式(上)_第9张图片
9.F8向下运行直到跳出这个函数
去除程序重启自效验的三种方式(上)_第10张图片
10.运行完readfile这个API之后查看buffer所指向的地址,发现为123456,这个就是文件中储存的数据
去除程序重启自效验的三种方式(上)_第11张图片
11.下图中绿色部分就是strcmp函数,用于比较文件中的数据和目标数据是否相等,也就是自效验的内容
去除程序重启自效验的三种方式(上)_第12张图片
12.这里我打了注释,主要就是需要将我们的数据和自效验的数据(JXU2MjExJXU2)相等
去除程序重启自效验的三种方式(上)_第13张图片
13.修改程序自效验数据去除程序重启自效验的三种方式(上)_第14张图片
去除程序重启自效验的三种方式(上)_第15张图片
14.最后保存二进制数据,重启程序看看
去除程序重启自效验的三种方式(上)_第16张图片

你可能感兴趣的:(脱壳破解)