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、把修改过的程序复制出来,保存成新的。