《第1期-12 摆脱NAG》学习笔记
2018-05-28 本文已影响0人
听说我在混吃等死
1、打开软件后,发现是未注册,然后点击关闭按钮,会弹出窗口

我们的目的就是为了能够去掉这个弹窗。
2、对这个程序进行查壳,没有什么发现
3、载入OD里面,F9运行起来,随后切换到程序主界面点击关闭按钮,照样弹窗

4、此时,切换到OD中,按下F12暂停,此时OD会出现这样的画面

这时OD把程序给暂停住了
5、在OD中使用快捷键“Alt+K”,出来”调用堆栈“界面

我们在这里分析一下调用堆栈,可以看到上面的都是系统空间的,我们在最后一行红色调用那里右键点击,选择“显示调用”

6、接着OD就来到了这里

在 77D5082A 处按F2下断点,重新运行程序。
7、切换到程序,继续点击关闭按钮,这时OD会断在上一步下的断点那里

8、随后F8单步运行,此时程序会弹窗了,点击对话框里面的“是“或”者“否”让程序能够运行下去。【这里必须点击“是“或”者“否”,否则程序会运行不下去。我在看视频的时候没注意到这里,所以在这一步卡了壳,又重新看了一遍视频才过去的】

随后继续F8单步下去,不久就会运行到程序空间。
9、这时就会看到调用弹窗的那个地方

观察上面的代码,看是否有jmp可以跳过这个的。但是一直找到了段首也没有发现,

既然没有,那我们F8继续单步,返回到上一层的调用
10、返回到了这里

4CDCE6 出的call就是是弹窗出现的call,要是能够把它跳过就相当于跳过了弹窗:
004CDCE6 . E8 CD64F9FF call WebMan.004641B8
那么就往上找jmp吧。但是还是找到段首没找到一个有用的jmp。那就只能是继续F8单步运行,返回上一层调用了
11、返回到了这里:

00460A75 . FF93 98020000 call dword ptr ds:[ebx+0x298] ; WebMan.004CDCC4
上面这个call就是弹窗的call,那么想办法跳过它吧。正好在上面有一个je
00460A69 . /74 10 je short WebMan.00460A7B
总算是找到了这样一个 跳 了。在这里F2下断点,重新运行程序
12、切换到程序界面,点击关闭按钮来关闭程序,OD会停在那里

观察一下,发现这个跳转未实现呀。
既然je不能实现跳,那么改为jne呢?在je代码处点击空格,会弹出窗口让输入汇编代码,我们直接改为jne:

然后F9让程序运行,会发现没有讨厌的弹窗出现了。
13、把修改过的程序复制出来,保存成新的。