运行abex’crackme#2
运行后可以看到要求输入name和serial,首先尝试不输入任何东西,直接check,
可以看到它会提示要求输入至少四个字符的name;那么我们就接着输入name而不输入serial得到一个提示;接着输入合理的name和serial也得到一个提示;可以发现这两次的提示是一样的Nope,this serial is wrong。由此可以推测,serial是由name得到的。
开始调试
载入OD后看到这是一个明显的Visual Basic编写的而成的。
简单分析一下:执行程序后,EP代码首先会调用VB引擎的主函数即 CALL,额,这个就不多说了,自己也没怎么研究过。
再来分析一下这个程序:首先搜索一下字符串发现了错误提示
双击来到此处,经常性的我们会往上看一下,果然看到了一个CALL调用函数,和一个TEST来比较值,还有一个JE条件跳转。可以推测就是此条件跳转没有实现,从而导致输出了错误提示。
那么在CALL处下一个断点,并运行到此处,输入name和serial在此处可以查看一下栈中的内存,在栈窗口中右键->数据窗口跟随;来到数据窗口