首先运行这个小程序
这个小程序要求我们找出序列号,推测有可能是根据输入的name来生成serial,那么尝试输入
运行check
弹出序列号错误的消息框,多次尝试的结果应是一样的,除非你已经知道了这个程序的加密原理或是凑巧序列号输入正确
虽然这个小程序是使用vb进行编写的,但是在这里不对vb进行讲解
打开ollydbg调试这个程序,调试到此位置,即00401238
那么如何查找相关程序入口呢,那么可以根据刚才的消息框"Wrong Serial!"进行字符串查找,即search->all referenced text strings,然后查找wrong serial,如图
双击定位到此地址
那么对于此程序,若name和serial匹配则应弹出匹配的消息框,那么从编程的角度而言,应该存在字符串的比较,若比较成功则如何,比较不成功又如何,那么查找对应的上下文,最终发现在00403332发现了条件转移的代码
00403329处的函数应为字符串比较函数,上方的两个push的两个通用寄存器应为比较的字符串,然后在00403324处设一个断点,按f8继续运行,直到弹出小程序,然后输入name和serial,,点击check,程序就会在中断处停止,按f8继续,调试到00403329处
然后可以看到eax和edx的值,再寻找对应的地址
对于edx对应的地址为输入的serial,eax对应的地址为实际的serial,最后再运行程序输入对应的name和serial,name和serial对应了