-
-
[讨论]第3篇 5.2警告窗口
-
发表于: 2014-2-10 17:35 12913
-
p112页:
对lpdialogfunc对数(此处为4010c4h)设断。中断后代码如下:
004010C4 . 8B4424 08 mov eax, dword ptr [esp+8]
004010C8 . 2D 10010000 sub eax, 110 ; Switch (cases 110..111)
004010CD . 74 34 je short 00401103
004010CF . 48 dec eax
004010D0 . 75 2D jnz short 004010FF
004010D2 . 8B4424 0C mov eax, dword ptr [esp+C] ; Case 111 of switch 004010C8
004010D6 . 48 dec eax
004010D7 . 75 26 jnz short 004010FF
004010D9 . 6A 00 push 0 ; /Result = 0
先是在w32dasm中加载的,w32dasm有 下断点的功能?好吧,我当你忘了,于是在od中搞。
对lpdialogfunc对数(此处为4010c4h)设断后,中断 断在:
00401053 |. 68 C4104000 push 004010C4 ; |DlgProc = Nag.004010C4
你是怎么转到 书上那处代码去的?。。。
=============================
发发牢骚,被坑 习惯就好.
对lpdialogfunc对数(此处为4010c4h)设断后,运行,(按F9,在OD中搞)。
00401053 |. 68 C4104000 push 004010C4 ; |DlgProc = Nag.004010C4
00401058 |. 6A 00 push 0 ; |hOwner = NULL
0040105A |. 6A 79 push 79 ; |pTemplate = 79
0040105C |. 50 push eax ; |hInst
0040105D |. A3 9C114000 mov dword ptr [40119C], eax ; |
00401062 |. FF15 10104000 call dword ptr [<&USER32.DialogBoxParamA>] ; \DialogBoxParamA
接着按F7,(单步遇call进入---------> 00401062 |. FF15 10104000 call dword ptr [<&USER32.DialogBoxParamA>] ),进入到系统领空后代码:
77D3B144 > 8BFF mov edi, edi ; ntdll.7C930228
77D3B146 55 push ebp
77D3B147 8BEC mov ebp, esp
77D3B149 53 push ebx
77D3B14A 56 push esi
77D3B14B 8B75 08 mov esi, dword ptr [ebp+8]
77D3B14E 6A 00 push 0
77D3B150 FF75 0C push dword ptr [ebp+C]
77D3B153 83CB FF or ebx, FFFFFFFF
接着 按alt+M,打开memory map,对 Address=00401000 Section=.text 下断 后 按F9.
Memory map, item 68
Address=00401000
Size=00001000 (4096.)
Owner=Nag 00400000
Section=.text
Contains=code,data,imports
Type=Imag 01001002
Access=R
Initial access=RWE
(OD复制出来 的,就是这样显示的,我也没法子。)
之后才会转到书上所说的 { 004010C4 . 8B4424 08 mov eax, dword ptr [esp+8] } 这处代码。
本来是要写 求助帖子的,后来看 http://bbs.pediy.com/showthread.php?t=69517 想到的法子,试了下 有用。 之前搜索此版面,好像 就我被坑了。。。
对lpdialogfunc对数(此处为4010c4h)设断。中断后代码如下:
004010C4 . 8B4424 08 mov eax, dword ptr [esp+8]
004010C8 . 2D 10010000 sub eax, 110 ; Switch (cases 110..111)
004010CD . 74 34 je short 00401103
004010CF . 48 dec eax
004010D0 . 75 2D jnz short 004010FF
004010D2 . 8B4424 0C mov eax, dword ptr [esp+C] ; Case 111 of switch 004010C8
004010D6 . 48 dec eax
004010D7 . 75 26 jnz short 004010FF
004010D9 . 6A 00 push 0 ; /Result = 0

对lpdialogfunc对数(此处为4010c4h)设断后,中断 断在:
00401053 |. 68 C4104000 push 004010C4 ; |DlgProc = Nag.004010C4

=============================
发发牢骚,被坑 习惯就好.
对lpdialogfunc对数(此处为4010c4h)设断后,运行,(按F9,在OD中搞)。
00401053 |. 68 C4104000 push 004010C4 ; |DlgProc = Nag.004010C4
00401058 |. 6A 00 push 0 ; |hOwner = NULL
0040105A |. 6A 79 push 79 ; |pTemplate = 79
0040105C |. 50 push eax ; |hInst
0040105D |. A3 9C114000 mov dword ptr [40119C], eax ; |
00401062 |. FF15 10104000 call dword ptr [<&USER32.DialogBoxParamA>] ; \DialogBoxParamA
接着按F7,(单步遇call进入---------> 00401062 |. FF15 10104000 call dword ptr [<&USER32.DialogBoxParamA>] ),进入到系统领空后代码:
77D3B144 > 8BFF mov edi, edi ; ntdll.7C930228
77D3B146 55 push ebp
77D3B147 8BEC mov ebp, esp
77D3B149 53 push ebx
77D3B14A 56 push esi
77D3B14B 8B75 08 mov esi, dword ptr [ebp+8]
77D3B14E 6A 00 push 0
77D3B150 FF75 0C push dword ptr [ebp+C]
77D3B153 83CB FF or ebx, FFFFFFFF
接着 按alt+M,打开memory map,对 Address=00401000 Section=.text 下断 后 按F9.
Memory map, item 68
Address=00401000
Size=00001000 (4096.)
Owner=Nag 00400000
Section=.text
Contains=code,data,imports
Type=Imag 01001002
Access=R
Initial access=RWE
(OD复制出来 的,就是这样显示的,我也没法子。)
之后才会转到书上所说的 { 004010C4 . 8B4424 08 mov eax, dword ptr [esp+8] } 这处代码。
本来是要写 求助帖子的,后来看 http://bbs.pediy.com/showthread.php?t=69517 想到的法子,试了下 有用。 之前搜索此版面,好像 就我被坑了。。。

赞赏
赞赏
雪币:
留言: