程序如何知道自己被修改了的?
最近在学习软件汉化和逆向工程,最近就解除了一个这样的软件。1、软件具有一个adata区段,但是使用od都是能够正常打开和调试。我判断软件没有加壳,但是软件运行的时候代码应该具有自解压功能。
2、我把软件修改后也能够正常保存。
3、但是运行保存的exe提示“解压失败”。
4、使用OD分析:软件启动的时候调用了ReadFile和getFiletime函数。
5、ReadFile只是读取了exe文件中的部分数据,这部分数据没有修改过。
6、我个人手动修改了文件的修改日期和以前的原始文件信息一样。即:GetFileTime返回的修改时间和原始文件也是一样的。
7、但是,exe运行的时候还是提示解压失败。那这个exe是怎么检测文件被修改的呢?还是我修改后保存exe的时候没有保存正确? 有可能是保存的是文件HASH数据或大小等等,每次运行检测,不一样就OVER了 再把检测改了不就行了。有个叫hash&crypto detector的软件,看看使用的校验方法就知道了。 wykdz 发表于 2020-9-21 15:14
再把检测改了不就行了。有个叫hash&crypto detector的软件,看看使用的校验方法就知道了。
软件在哪里检测的呢?有破解的思路么?我想找到检测的函数直接修改。如果只是把弹出的对话框去掉,估计程序接下来的运行肯定也会有问题。 jinlsg 发表于 2020-9-21 16:08
软件在哪里检测的呢?有破解的思路么?我想找到检测的函数直接修改。如果只是把弹出的对话框去掉,估计程 ...
1.没看到目标软件,谁也猜不出来。
2.只是想去掉弹窗,简单修改用个补丁更方便。loader型补丁,和dll型补丁可以解决99%的问题。 读自己MD5 larden520 发表于 2020-9-21 17:05
读自己MD5
没有找到ReadFile把自己的全部内容读出的操作。只是跟踪到了使用ReadFile读取自己部分内容的操作。而且读取的自己的部分内容肯定没有改变。 把没修改过的和修改过的程序用od打开,对比下,看看是不是哪里还有检测,看能不能过掉。
或者看能不能从提示信息入手。 wykdz 发表于 2020-9-21 16:39
1.没看到目标软件,谁也猜不出来。
2.只是想去掉弹窗,简单修改用个补丁更方便。loader型补丁,和dll型 ...
大神,如何制作loader型补丁或者dll型补丁?
页:
[1]