逆向工程--crackme#2小程序

  首先运行这个小程序

逆向工程--crackme#2小程序_第1张图片

这个小程序要求我们找出序列号,推测有可能是根据输入的name来生成serial,那么尝试输入

逆向工程--crackme#2小程序_第2张图片

运行check

逆向工程--crackme#2小程序_第3张图片

弹出序列号错误的消息框,多次尝试的结果应是一样的,除非你已经知道了这个程序的加密原理或是凑巧序列号输入正确

虽然这个小程序是使用vb进行编写的,但是在这里不对vb进行讲解

打开ollydbg调试这个程序,调试到此位置,即00401238

逆向工程--crackme#2小程序_第4张图片

那么如何查找相关程序入口呢,那么可以根据刚才的消息框"Wrong Serial!"进行字符串查找,即search->all referenced text strings,然后查找wrong serial,如图逆向工程--crackme#2小程序_第5张图片

双击定位到此地址

逆向工程--crackme#2小程序_第6张图片

那么对于此程序,若name和serial匹配则应弹出匹配的消息框,那么从编程的角度而言,应该存在字符串的比较,若比较成功则如何,比较不成功又如何,那么查找对应的上下文,最终发现在00403332发现了条件转移的代码

逆向工程--crackme#2小程序_第7张图片

00403329处的函数应为字符串比较函数,上方的两个push的两个通用寄存器应为比较的字符串,然后在00403324处设一个断点,按f8继续运行,直到弹出小程序,然后输入name和serial,,点击check,程序就会在中断处停止,按f8继续,调试到00403329处

逆向工程--crackme#2小程序_第8张图片

然后可以看到eax和edx的值,再寻找对应的地址

逆向工程--crackme#2小程序_第9张图片

对于edx对应的地址为输入的serial,eax对应的地址为实际的serial,最后再运行程序输入对应的name和serial,name和serial对应了

逆向工程--crackme#2小程序_第10张图片

 

 

你可能感兴趣的:(逆向工程)