一、实验目的
通过实验继续熟悉调试器与汇编代码,加深对汇编代码和调试技术的认识。
二、实验软硬件要求
软件工具:OllyDbg
操作系统:windows
三、实验内容(实验步骤、测试数据等)
练习
打开示例程序 01\08\bin\abex crackme#2.exe程序,该程序需要用户输入用户名以及对应的注册码。通过逆向分析获得任意用户名的注册码。
四、实验过程
1.基础练习
①程序运行界面如下
②破解注册码这种类型的程序,一般都要把用户输入的内容与程序内存储的注册码进行比较,比较后返回注册结果,所以这题的思路就是先找到调用该窗口的函数,输入内容后调式查看哪里进行了比较。
③首先随便输入一些内容,窗口返回如下
④通过字符串查找, 这里可以看到“Yes,this key is right!”,很显然这是输入正确的注册码后返回的内容,双击其进入。
⑤进入后,我们应该看看有没有进行比较后跳转的操作往下看,我们发现一个“VbaVarTstMe”的Comment(声明),通过其名字我们可以猜测这是进行比较的函数,可以从003419(PUSH EAX)和00341A(PUSH ECX)入手。
⑥在此处设置断点后执行到此处,在输入框输入内容
输入后点击Check,在右上角的寄存器窗口"Follow in Stack"
然后在下方的栈窗口就可以看见前面输入的内容,并且有“A5A5A5A5”这个东西,大胆猜测这是注册码
验证