X86逆向11:F12暂停法的妙用

本节课将介绍F12暂停法的使用技巧,F12暂停法的原理其实很简单,当我们点击OD中的暂停按钮时,OD会将当前的堆栈状态保存起来,并暂停当前窗体的线程执行,直到我们点击运行按钮OD才会唤醒全部线程并继续执行程序,我们可以在OD暂停的时候得到一些有价值的东西,这在软件破解中也是一个很不错的技巧。

------------------------------------------------------------
本章难度:★★★☆☆☆☆☆☆☆
课程课件:CM_11.zip
------------------------------------------------------------

1.在实战之前先来用一个CM程序来演示F12暂停法的使用技巧,OD直接载入CM程序,然后运行程序点击关闭按钮,会弹出一个提示框,我们将使用F12暂停法把这个弹窗去除掉,好了直接开搞。

 

2.出现弹窗后,直接点击暂停按钮或按下【F12】,程序在暂停后有时会弹出一个窗口,提示是否等待5秒,这里我们选择否,不然又会等5秒。

 

3.紧接着我们按下【Alt+K】,会出现以下提示信息,这个就是堆栈的当前状态,只不过被暂停了,以下我们可以看到MessageBox提示框。

 

4.直接右键,选择显示调用,回来到反汇编窗口。

 

5.直接在这个调用位置,下一个F2断点,然后重新载入程序。

 

6.运行后,我们直接关闭程序,然后回到OD,会发现OD被断下了,直接接单步【F8】出这个CALL。

 

7.出CALL后,会发现这一层并没有能跳过弹窗的关键跳转,不要犹豫【Ctrl + F9】执行到程序返回,【F8】直接出CALL。

 

8.出CALL后发现一个关键跳转,默认是没有跳转的所以弹窗了,我们这里强制它跳转直接改成JMP,然后保存,OK去弹窗成功。