广州明创教育:新手破解——API函数断点

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 10:35:11
今天给新手提供另一种方法“API函数断点”,这种方法要求大家记住常用的API函数,我给大家整理了一些常用的API断点:

字符串 GetDlgItemTextA  GetWindowTextA 这两个断点用在程序读取用户输入的字符
对话框 bp MessageBoxA 这个用于弹出“注册成功”“注册失败”的消息框
注意VB的程序的API很特别,与其他语言不同,要另外记忆
其实,还有注册表类的,但对于初学者,先掌握这三个。

今天我们拿“终结者文件加密大师”来说明,程序我已经脱了壳,虽然PEID显示无法辨认,但看程序入口,似乎是汇编语言写的。好,不管这么多,先运行一下软件
2010-7-19 14:06 上传下载附件 (22 KB)
第一次运行这个软件时,程序直接进入,我们可以点击“设置密码”来设密码,这样在以后运行时会提示输入密码(你可以先随意设密码,下面就是要破解这密码,最好不要记住你输的密码,这样更有挑战)
2010-7-19 14:06 上传下载附件 (11 KB)
那接下来我们就是要破解这个“密码功能”,使我们任意输入密码都可以使用软件
怎么破解呢?我们可以使用上次教程的方法进行破解,也可以使用“API函数”
我们首先用Ollydbg载入,然后在Ollydbg左下角的命令框里输入“bpx MessageBoxA”,其中的“bpx”是在所有的调用上下断点的意思。如图

2010-7-19 14:06 上传下载附件 (27 KB)
然后敲回车,接着运行软件,输入任意的密码,当你点击“ok”时,Ollydbg会提示软件暂停,这时“API断点”起作用了。图片上是暂停后的代码
2010-7-19 14:06 上传下载附件 (58 KB)
我们可以分析一下代码,附近并没有疑似的关键。怎么会这样?大家先看图
2010-7-19 14:06 上传下载附件 (20 KB)
母程序会调用子程序(就是CALL),那么我们现在看到的就是子程序,是用来完成弹出“密码错误”的子程序,而我们要找到控制这个子程序的母程序。我们按F8来单步走,走过“RETN”命令的时候会来到调用这个程序的母程序。如图,我们走过2个“RETN”来到我们要找的位置。
2010-7-19 14:06 上传下载附件 (59 KB)
来到这里
2010-7-19 14:06 上传下载附件 (73 KB)
我们分析一下,似乎那个00403793是关键跳,所以我们修改试试,如图,在这行代码上右击,选“汇编”,把原来的"je"改为"jnz"。,为什么要把“je”改成“jnz”呢,其实“je”和“jnz”是相反的。破解中如果有一个跳转控制着程序弹出“成功”或“失败”,那个就是关键跳转,一般我们把关键跳转改成相反的跳转,具体关键跳转的判断,大家多练了就会了。
2010-7-19 14:06 上传下载附件 (65 KB)
2010-7-19 14:06 上传下载附件 (68 KB)

我们保存文件试试
2010-7-19 14:06 上传下载附件 (93 KB)
2010-7-19 14:06 上传下载附件 (88 KB)
运行一下,随意输入密码,可以运行。
好了,教程又结束了,这个教程相对于上一个应该更容易理解。另外提示一下,我后来发现这个程序的密码保存在注册表的这个位置:HKEY_LOCAL_MACHINE\SOFTWARE\SFolder  ,其中code的值就是密码。