简单逆向分析使用案例(8)--Reverse002.exe 获取密码

环境:

     win7 旗舰版 x64

      OD1.1(吾爱破解版)

      PEiD0.95

使用资源

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

技巧:

     细心、耐心。

这个程序和上一个程序其实类似,但是在逻辑上复杂了一点。


第一步:简单测试。
 简单逆向分析使用案例(8)--Reverse002.exe 获取密码_第1张图片
第二步:使用PEiD查看程序信息。
发现有我们要找的MessageBoxW函数。
 简单逆向分析使用案例(8)--Reverse002.exe 获取密码_第2张图片
第三步:进入OD调试
1、将程序拖入OD中,并打断点  BP MessageBoxW----注意大小写
 
2、查看是否有存在1中打的断点
 简单逆向分析使用案例(8)--Reverse002.exe 获取密码_第3张图片
3、按C进行返回,并点击运行。进行任意输入,并回车。程序会在MessageBoxW函数处进行断住。

 
4、点击堆栈窗口中的栈顶回车,进入到CPU窗口,此时CPU窗口就是MessageBoxW调用后栈中压入的返回值。

简单逆向分析使用案例(8)--Reverse002.exe 获取密码_第4张图片
5、向上查找代码,发现了我输入的字符"123456"

简单逆向分析使用案例(8)--Reverse002.exe 获取密码_第5张图片 
6、向下查找代码
00A98C00   .  0FBE540D 80   movsx edx,byte ptr ss:[ebp+ecx-0x80]
00A98C05   .  83FA 33       cmp edx,0x33
00A98C08   . /75 34         jnz short Reverse0.00A98C3E

发现edx值为我们输入的第一个字符,也就是"1", 并且让edx和0x33比较,当不相等的时候,会执行跳转。
 简单逆向分析使用案例(8)--Reverse002.exe 获取密码_第6张图片

跳转到00A98C3E位置:
00A98C46   .  0FBE540D 80   movsx edx,byte ptr ss:[ebp+ecx-0x80]
00A98C4B   .  83FA 31       cmp edx,0x31
00A98C4E   . /74 32         je short Reverse0.00A98C82
我们发现此时还是比较的是第一个字符,并且要和0x31进行比较,当相等的时候就会跳转到00A98C82。
简单逆向分析使用案例(8)--Reverse002.exe 获取密码_第7张图片
综上我们猜测要确定第一个字符的话,需要两个跳转,而真正的值要和第二个跳转中进行判断的值相同。

7、继续验证,移动到00A98C82位置。
00A98C8A   .  0FBE4C05 80   movsx ecx,byte ptr ss:[ebp+eax-0x80]
00A98C8F   .  83F9 31       cmp ecx,0x31
00A98C92   . /75 34         jnz short Reverse0.00A98CC8
发现此时ecx的值是输入的第二个字符,也就是2。
 简单逆向分析使用案例(8)--Reverse002.exe 获取密码_第8张图片
接下来我们跳转到00A98CC8,根据我们上面的经验,可以判断出第二个字符应该是0x73。
我们发现后面和这个步骤差不多,那么我们就可以总结如下:
 

位置

十六进制

十进制

1

0x31

1

2

0x73

S

3

0x68

h

4

0x36

6

5

0x67

g

6

0x72

r

7

0x36

6

8

0x6B

k

9

0x79

y

10

0x36

6

11

0x6B

k

12

0x77

w

13

0x36

6

14

0x68

h

15

0x64

d

16

0x71

q


我们需要使用的是十进制,所以密码应该是1sh6gr6ky6kw6hdq

简单逆向分析使用案例(8)--Reverse002.exe 获取密码_第9张图片

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