X86逆向7:特殊窗体的分析思路

本章我们来看两个案例,这两个案例同样使用爆破的方式破解,但是与其他的程序不同,这个程序没有弹窗,提示成功或失败使用的是图片或是一个类似图片的窗体,本章将学习两个新的API函数的使用技巧。

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

 

通过GetDlgItemTextA破解

1.直接OD载入程序,来看一下这个弹窗,该弹窗并不是一个MessageBox。

 

2.我们直接下一个【GetDlgItemTextA】,点击【设置API断点】,选择字符串,然后下断点。

 

3.直接运行程序,然后输入假的注册码,点击注册,回到OD发现断下,直接【alt + F9】返回到用户模块,返回后如下图。

 

4.这一层,我们直接单步【F8】跟随,发现关键CALL与关键跳转了,上面的关键CALL就是验证CALL楼。

 

5.直接把JE指令改成NOP指令,运行程序,破解完成,保存文件即可。

 

通过GetWindowTextA破解

1.接着看第二个程序,直接OD载入并运行,输入假码点击登录,发现程序没有任何反映,只有我们输入真正的密码才会提示登录成功。

 

2.对待这种程序,我们可以直接下【GetWindowTextA】断点,下好断然后点击登录。

 

3.程序会被断下,说明我们断对了,接下来就是直接出CALL然后找关键跳转了。

 

4.经过不断的出CALL最后在第五层发现了关键跳转,我们直接把JE改成NOP然后保存文件即可破解。

 

通过EnableWindow破解

1.接着来看一下以下窗体,该窗体默认无法输入内容,无法点击登录按钮,且内部有时钟干扰我们。

 

2.重新载入程序,不要运行首先下【SetTimer】,然后在下一个【EnableWindow】断点,然后直接运行程序。

 

3.运行程序,第一次断下的是时钟,我们不要犹豫直接将其返回,让其失效,然后取消这个断点。

 

4.再次运行程序,程序会断下,此时我们看堆栈,Enable=FALSE 说明登录按钮变成了假。

 

5.我们选择Enable这一行然后按下,【Ctrl + E】将最后一位修改成1,运行程序即可。

 

6.运行后,窗体上的按钮会变为可点击状态,此时在爆破即可。