准备工具: ollydbg ida vs2012
---------------------------------
我们先把目标程序winasm_0.exe拖入peid
主界面
那我们去输入表看看
也好像没什么特别值得关注的。
、那好 简单测试下程序 看有什么状况发生
看 弹出对话框 那我们该想到什么?API断点!messagebox相关!
不急我们把它拖入OD 直接ctrl+A分析
入口点:
习惯性的我把它上下一翻、发现:
这不是我们要找的字符串吗?(
PS:
如果我没翻到 步骤应该会是:
- 搜索字符串
- 下API断点
- 其它...
)
我们截取关键代码分析:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
CPU Disasm
地址 十六进制数据 指令 Profile Comments
获取输入内容
00401066 |. E8 BF000000 CALL <JMP.&USER32.GetDlgItemTextA> ; \USER32.GetDlgItemTextA
0040106B A3 13114000 MOV DWORD PTR DS:[401113],EAX ; MOV DWORD PTR DS:[401113],EAX
比较eax
00401070 |. 83F8 05 CMP EAX,5 ;
00401073 |. 75 13 JNE SHORT 00401088 ;
比较 fubar?
00401075 |. BE 2A334000 MOV ESI,OFFSET 0040332A ;
0040107A |. BF 41304000 MOV EDI,OFFSET 00403041 ; ASCII
"fubar"
0040107F |. B9 06000000 MOV ECX,6 ;
00401084 |. F3:A6 REPE CMPS BYTE PTR DS:[ESI],BYTE PTR ES: ;
看ZF标志以决定转移与否
00401086 |. 74 19 JE SHORT 004010A1 ;
00401088 |> 6A 00 PUSH 0 ;
/Type
= MB_OK|MB_DEFBUTTON1|MB_APPLMODAL
0040108A |. 68 1F334000 PUSH OFFSET 0040331F ; |Caption =
" try again"
0040108F |. 68 0F334000 PUSH OFFSET 0040330F ; |Text =
"no, not really."
00401094 |. 6A 00 PUSH 0 ; |hOwner = NULL
00401096 |. E8 95000000 CALL <JMP.&USER32.MessageBoxA> ; \USER32.MessageBoxA
0040109B |. 33C0 XOR EAX,EAX ;
0040109D |. C9 LEAVE ;
0040109E |. C2 1000 RETN 10 ;
|
那好 我们暂且就这样分析 在地址00401066 处F2断点 F9运行!
那此时肯定会弹出对话框 我们随便输入点什么 以”15PB“为例 再点击check!
会在刚刚所设断点处停下来: