吾爱破解培训第二课:实战去弹窗新思路
本帖最后由 骑龟赛跑 于 2018-11-1 11:23 编辑定时弹窗的去除
思路:定时弹窗是会通过新的线程来操作的.可以在OD的日志里查找线程的创建与执行,销毁过程.顺藤摸瓜式的找到线程创建代码,直接nop掉,就行.
运行一次程序让程序完成弹窗.到日志查看线程日志.
看到"7C4106E9"地址创建的,那么双击该行代码
,直接来到该地址(此处为系统代码),直接下断点(F2),日志显示的两条线程创建,都是通过这个地址.所以下一个断点就行了.
然后重新载入程序,让他运行起来,会发现停在"7C8106E9"处了,这时候就单步跟踪下去,再jmp前,看堆栈窗口,里面就是我们要找的地址记录下"0x004010A0",
运行起来,程序又停在了"7C8106E9"处,这是第二个线程要初始化了,同样单步执行到jmp,看堆栈,记录下我们要的地址"0x00401290".
好了,这时候有没有人想,我直接nop掉"7C8106E9"的代码不就可以了吗?
其实我也是这么想的,但是这是系统代码,我们nop了,系统其他程序怎么办?系统怎么办?会崩了吧.所以我们还是对程序代码下手好了.
然后我们Ctrl+G,来到这两个地址看一下,学过编程的都知道Sleep是跟线程相关的,那么我们直接nop掉他,以及他的参数.
至于几个参数,你可以查下开发文档,或者清除所有断点,重新给这两个地址下断.重载程序,单步跟踪一下,看下堆栈就知道了.
我们直接给这两行代码nop掉
.另一处的创建线程也nop掉,
右键"复制到可执行文件","所有修改","全部复制",
右键"保存文件",完成.
good good study day day up。
感谢楼主分享思路。 编辑错误:
7C4106E9应该是7C8106E9,一开始在日志里找半天 请把例子程序也放上来,谢谢!! 已学习,还是需要多练习 weliong 发表于 2018-11-1 11:11
编辑错误:
7C4106E9应该是7C8106E9,一开始在日志里找半天
谢谢指出问题.确实手误打错了. 不错的思路,赞一个 学习到了,感谢LZ分享思路! 感谢楼主分享思路。 还是要懂系统原理啊
页:
[1]
2