由于自己是个新手,菜鸟一个.研究这个的过程是非常的艰辛 前前后后得有半个月,不知道改了多少个地方才成功.发悬赏申请内存 动态地址 如何逆向打补丁?很多前辈们也给了多种方法,自己基础太差真的是告诉我方法我也不会操作.就把自己的解决办法发一下吧!
由于这个程序的关键地方是申请的内存,动态的地址,目前已知的是无法用补丁工具打补丁,要写劫持补丁,好像易语言的劫持补丁无法用在64位的程序上,c++的又很难找到劫持源码 .就换一个思路 不改这个区段的内容,找下其他的地方.
1.程序打开会闪退,因为找不到那个联网验证的程序,我给删掉了.下退出断点
1.png (366.37 KB, 下载次数: 0)
下载附件
2023-6-9 09:13 上传
2.运行程序,断在退出的地方 是那个动态地址的区段调用的退出,既然无法补丁那个区段就直接ret系统领空的退出.
2.png (523.16 KB, 下载次数: 0)
下载附件
2023-6-9 09:15 上传
3.f8单步一直往下走 到主程序区段这个地方发现rax=0 直接修改为1 (这里我也不知道为什么改成1就可以了,我是乱改的 不知道原理,其它地方我也改过是0改1 是1改0,试出来的结果)有高手知道原理的可以来解释一下.这个地方不改直接运行会提示dll加载的错误.
3.png (253.39 KB, 下载次数: 0)
下载附件
2023-6-9 09:17 上传
4.在f9运行 竟然可以了,刚开始就没有想过要修改系统领空的东西 但是在你实在没办法到时候 就乱改呗,说不定就成功了
4.png (257.46 KB, 下载次数: 0)
下载附件
2023-6-9 09:20 上传
5.在x64dbg里面成功 ,不算成功,用大白打上补丁才算OK,又折腾了很久才搞定 找到退出断点右键复制rva=240F0 (系统的断点每台电脑不一样) 模块选择ntdll.dll
5.png (104.89 KB, 下载次数: 0)
下载附件
2023-6-9 09:28 上传
6.找到rax赋值的地方 修改寄存器rax的值为1 这个地方也是难点因为程序会多次调用这个地方 只需要修改一次 经过反复测试设置条件断点为2 成功
6.png (196.33 KB, 下载次数: 0)
下载附件
2023-6-9 09:30 上传
7.系统领空的退出被改了 程序永不退出了 怎么让程序在第一次调用退出不退出 其它退出正常执行呢 这个地方想了很久 最后直接给设置的延时100毫秒 成功搞定 不得不说@Nisy校长的大白补丁工具是真的牛啊.
7.png (149.16 KB, 下载次数: 0)
下载附件
2023-6-9 09:31 上传
补丁运行的视频演示https://710898798.lanzoum.com/isCFT0ynvefi
有其他思路的可以跟帖交流. 欢迎论坛的前辈们大神们指点.