一、简介
(一)、目标
本次我们需要破解的是的文件有三个,分别是Tut.ReverseMe1.exe、ReverseMe2.exe、CConvert.exe,他们都是VB程序,但依赖的库很老旧,在windows7下需要额外下载msvbvm50.dll这个库。
(二)、工具
本次破解只使用x32dbg
二、破解过程
(一)、Tut.ReverseMe1.exe
1.程序界面,需要去掉弹窗和计算注册码,如下图。
2.载入程序到x32dbg中,按f9跳转到入口点,并查找弹窗的字符串,并在调用字符串的地方下断点。
3.ctrl+f2重启程序,程序停在断点处,f8单步跳转,往上寻找,找到这个函数的入口点,将语句改为ret。
4.在重启时,程序的nag窗口语句消失了,接下来研究注册过程,也查找字符串,找到字符后,下断点
5.程序停在断点处,往上滚动,发现有个字符串的比较,试下这个字符串是不是key。
6.发现我们的猜想是正确的
(二)、CConvert.exe
1.程序界面如下,我们需要去除窗口,计算验证码。
2.先查找字符串,用nop充填,弹窗消失。
3.打开注册界面,随便输入一些值,点击注册,获取一些特征字符串,如下图。
4.查找弹窗所显示的字符串所在位置,往上滚动,会发现注册成功与否的跳转判断,如下图
4.其实到这修改跳转已经算成功了,但我们继续研究下它的注册算法,由于我输入的是h123120,所有注册码应该是首字母h的ascii码乘上20即2080,然后拼接上两个单词,输入此注册码,注册成功。
(三)、ReverseMe2.exe
1.其程序界面如下图,需要我们寻找注册码,但输入注册码之后,我们发现程序的注册按钮一直是灰色的。
2.查找字符串,分析一些比较可疑的字符串。
3.通过以上字符串,找到这段代码,可能文件需要一个reginfo.key,创建一个空的reginfo.key文件在相同目录下,此时提示比变了。
4.继续寻找到跳转成功的区域,往上滚动,找到这个函数的入口点,再查找引用。
5.查看403390这个地址,但是跳转到这个地址后,完全就没思路了,冥思苦想之后,我想起来还可以用寻找api的方式
一般vb的验证的api总少不了_vbaVarTsteq()这个函数,我在所有的这个函数的调用之上下断点,最后终于在输入的验证码的时候程序停在了如下地址。
6.往上滚动,查看到注册码,输入,注册成功
7.分析算法流程
查看上面的代码,应该也是在用ascii码怎么分析,具体我就不分析了。
三、总结
(一)字符串查找的路子走不通可以寻找api
(二)vb程序的窗口有的时候需要在函数入口处直接ret