骑龟赛跑 发表于 2018-11-1 10:30

吾爱破解培训第二课:实战去弹窗新思路

本帖最后由 骑龟赛跑 于 2018-11-1 11:23 编辑

定时弹窗的去除
    思路:定时弹窗是会通过新的线程来操作的.可以在OD的日志里查找线程的创建与执行,销毁过程.顺藤摸瓜式的找到线程创建代码,直接nop掉,就行.


运行一次程序让程序完成弹窗.到日志查看线程日志.

看到"7C4106E9"地址创建的,那么双击该行代码

,直接来到该地址(此处为系统代码),直接下断点(F2),日志显示的两条线程创建,都是通过这个地址.所以下一个断点就行了.

然后重新载入程序,让他运行起来,会发现停在"7C8106E9"处了,这时候就单步跟踪下去,再jmp前,看堆栈窗口,里面就是我们要找的地址记录下"0x004010A0",

运行起来,程序又停在了"7C8106E9"处,这是第二个线程要初始化了,同样单步执行到jmp,看堆栈,记录下我们要的地址"0x00401290".

好了,这时候有没有人想,我直接nop掉"7C8106E9"的代码不就可以了吗?
其实我也是这么想的,但是这是系统代码,我们nop了,系统其他程序怎么办?系统怎么办?会崩了吧.所以我们还是对程序代码下手好了.

然后我们Ctrl+G,来到这两个地址看一下,学过编程的都知道Sleep是跟线程相关的,那么我们直接nop掉他,以及他的参数.
至于几个参数,你可以查下开发文档,或者清除所有断点,重新给这两个地址下断.重载程序,单步跟踪一下,看下堆栈就知道了.

我们直接给这两行代码nop掉

.另一处的创建线程也nop掉,

右键"复制到可执行文件","所有修改","全部复制",

右键"保存文件",完成.

快乐崇拜 发表于 2018-11-1 11:06

good good study day day up。
感谢楼主分享思路。

weliong 发表于 2018-11-1 11:11

编辑错误:
7C4106E9应该是7C8106E9,一开始在日志里找半天

email123 发表于 2018-11-1 11:15

请把例子程序也放上来,谢谢!!

liweiqing 发表于 2018-11-1 11:21

已学习,还是需要多练习

骑龟赛跑 发表于 2018-11-1 11:24

weliong 发表于 2018-11-1 11:11
编辑错误:
7C4106E9应该是7C8106E9,一开始在日志里找半天

谢谢指出问题.确实手误打错了.

byh3025 发表于 2018-11-1 13:09

不错的思路,赞一个

Contango 发表于 2018-11-1 13:49

学习到了,感谢LZ分享思路!

莫莫 发表于 2018-11-1 14:24

感谢楼主分享思路。

wisoft 发表于 2018-11-1 15:30

还是要懂系统原理啊
页: [1] 2
查看完整版本: 吾爱破解培训第二课:实战去弹窗新思路