简单逆向分析使用案例(7)–Reverse001.exe 获取密码

环境:

     win7 旗舰版 x64

      OD1.1(吾爱破解版)

      PEiD0.95

使用资源

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

技巧:

     找对话框函数,耐心。

第一步:简单测试。
 
第二步:使用PEiD查看程序信息。
发现有我们要找的MessageBoxW函数。
 
第三步:进入OD调试
1、将程序拖入OD中,并打断点  BP MessageBoxW—-注意大小写
 
2、查看是否有存在1中打的断点
 
3、按C进行返回,并点击运行。进行任意输入,并回车。程序会在MessageBoxW函数处进行断住。
 
4、点击堆栈窗口中的栈顶回车,进入到CPU窗口,此时CPU窗口就是MessageBoxW调用后栈中压入的返回值。
 
5、向上查找代码,发现了我输入的字符
 
6、向下查找代码
 
发现
00378BFD   .  6BC8 00       imul ecx,eax,0x0  
00378C00   .  0FBE540D 80   movsx edx,byte ptr ss:[ebp+ecx-0x80]  
这里应该对应的是输入字符串的第一位。

00378C05   .  83FA 32       cmp edx,0x32

00378C08   . /74 32         je short Reverse0.00378C3C
发现edx会和0x32进行比较 结果为0的时候才会进行跳转,也就是说输入的第一位为 0x32

7、将跳转到00378C3C位置进行查看
 
00378C3C   > \B8 01000000   mov eax,0x1
00378C41   .  C1E0 00       shl eax,0x0
00378C44   .  0FBE4C05 80   movsx ecx,byte ptr ss:[ebp+eax-0x80]
此时eax为0x1,而byte ptr ss:[ebp+eax-0x80]应该为输入数据的第二位。
那么也就说
00378C49   .  83F9 73       cmp ecx,0x73
00378C4C   . /74 32         je short Reverse0.00378C80
这里比较的是第二位,那么第二应该就是0x73,接下来跳转到地址00378C80处进行查看
我们发现后面和这个步骤差不多,那么我们就可以总结如下:

位置

十六进制

十进制

1

0x32

2

2

0x73

S

3

0x38

8

4

0x33

3

5

0x67

g

6

0x72

r

7

0x33

3

8

0x6B

k

9

0x79

y

10

0x33

3

11

0x6B

k

12

0x77

w

13

0x33

3

14

0x68

h

15

0x64

d

16

0x71

q

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


 

欢迎评论。
lingkb » 简单逆向分析使用案例(7)–Reverse001.exe 获取密码

发表评论