简单逆向分析使用案例(3)--CrackMe_02.exe 找出用户名和序列号

环境:

     win7 旗舰版 x64

     OD2.01,1.1(吾爱破解版)

      PEiD0.95

使用资源

      http://download.csdn.net/detail/obuyiseng/9351217 中的 CrackMe_01.exe

技巧:

     借助OD中的栈回溯,逐一击破。

简单逆向分析使用案例(3)--CrackMe_02.exe 找出用户名和序列号_第1张图片


第一步:简单测试。
随便输入点击确定,发现弹出对话框,那么我们就可以确定,程序里面含有MessageBox函数。

简单逆向分析使用案例(3)--CrackMe_02.exe 找出用户名和序列号_第2张图片

第二步:使用PEiD查看程序信息。

简单逆向分析使用案例(3)--CrackMe_02.exe 找出用户名和序列号_第3张图片

发现该程序是汇编语言编写。查看输入表信息,发现找到了我们需要的MessageBox。

简单逆向分析使用案例(3)--CrackMe_02.exe 找出用户名和序列号_第4张图片

第三步:进入OD调试
1、将程序拖入OD中,并打断点  BP MessageBoxA ----注意大小写


2、查看是否有存在1中打的断点
 
3、按C进行返回,并点击运行。弹出程序窗口,并进行任意输入,并点击确定。程序会在MessageBoxA函数处进行断住。
4、点击堆栈窗口中的栈顶回车,进入到CPU窗口,此时CPU窗口就是MessageBoxA调用后栈中压入的返回值。

简单逆向分析使用案例(3)--CrackMe_02.exe 找出用户名和序列号_第5张图片

简单逆向分析使用案例(3)--CrackMe_02.exe 找出用户名和序列号_第6张图片

(此处使用的  吾爱破解的OD.exe  为了操作方便以后都使用吾爱破解的OD)

5、我们需要的是能够执行到含有“成功”文本MessageBoxA即可。那么分析该处的代码。
 
我们需要or eax,eax 不能等于0即可。那么我们需要得到eax的值即可。想获取他的话,我们需要调用call CrackHe_.00401000。我们点击call CrackHe_.00401000处,右键设置为新的EIP。按F7进入步入,然后按F8进入单步即可。
 
我们运行到如下,00401034   . /75 09         jnz short CrackMe_.0040103F,如下图:

简单逆向分析使用案例(3)--CrackMe_02.exe 找出用户名和序列号_第7张图片

这里我们要注意,因为我们发现如果
00401034   . /75 09         jnz short CrackMe_.0040103F 
执行完后要是等于0的话,就会结束返回;如果不等于0,会跳转到下方并执行strcmp函数。猜测这里应该是文本输入框要比较的内容。所以,我们这里应该让他执行的结果不能为0。

简单逆向分析使用案例(3)--CrackMe_02.exe 找出用户名和序列号_第8张图片

我们发现strcmp中的s2是eax中的值,查看下面代码猜测 "15pb"为用户名。
我们重新运行程序,并在用户名处添加"15pb"。

简单逆向分析使用案例(3)--CrackMe_02.exe 找出用户名和序列号_第9张图片

运行后,发现
00401034   . /75 09         jnz short CrackMe_.0040103F ,结果不为0,


继续执行


发现我们猜对了。接下来,继续查看下面的代码。

简单逆向分析使用案例(3)--CrackMe_02.exe 找出用户名和序列号_第10张图片

发现
0040107D   .  81BD F0FEFFFF>cmp dword ptr ss:[ebp-0x110],0x43728580
这里又存在一个比较,猜测是0x43728580序列号,转换为十进制为1131578752。
我们在序列号处填上1131578752。重新运行并进行测试。

简单逆向分析使用案例(3)--CrackMe_02.exe 找出用户名和序列号_第11张图片

你可能感兴趣的:(逆向,破解,病毒)