首页
社区
课程
招聘
[求助]如何知道某一地址是从何处执行过来的
发表于: 2009-1-15 14:24 4296

[求助]如何知道某一地址是从何处执行过来的

2009-1-15 14:24
4296
类似如下的汇编代码,怎么知道地址0040AE90从什么地方执行过来的

* Reference To: USER32.DrawMenuBar, Ord:00B8h
                                  |
:0040AE4E FF15B4A64B00            Call dword ptr [004BA6B4]
:0040AE54 C744242054134C00        mov [esp+20], 004C1354
:0040AE5C 8D4C2420                lea ecx, dword ptr [esp+20]
:0040AE60 C644243002              mov [esp+30], 02
:0040AE65 E8A0A40700              call 0048530A
:0040AE6A 8D4C2410                lea ecx, dword ptr [esp+10]
:0040AE6E C7442430FFFFFFFF        mov [esp+30], FFFFFFFF
:0040AE76 E872940700              call 004842ED
:0040AE7B 8B4C2428                mov ecx, dword ptr [esp+28]
:0040AE7F 5F                      pop edi
:0040AE80 5E                      pop esi
:0040AE81 5D                      pop ebp
:0040AE82 64890D00000000          mov dword ptr fs:[00000000], ecx
:0040AE89 5B                      pop ebx
:0040AE8A 83C424                  add esp, 00000024
:0040AE8D C20400                  ret 0004


:0040AE90 8B442404                mov eax, dword ptr [esp+04]  ****************
:0040AE94 81EC04010000            sub esp, 00000104
:0040AE9A 85C0                    test eax, eax
:0040AE9C 7440                    je 0040AEDE
:0040AE9E 8B0D78A14F00            mov ecx, dword ptr [004FA178]
:0040AEA4 8D442400                lea eax, dword ptr [esp]
:0040AEA8 6804010000              push 00000104
:0040AEAD 50                      push eax
:0040AEAE 51                      push ecx

* Reference To: KERNEL32.GetShortPathNameA, Ord:01ADh
                                  |
:0040AEAF FF1560A34B00            Call dword ptr [004BA360]
:0040AEB5 E8D0F60800              call 0049A58A
:0040AEBA 8B4004                  mov eax, dword ptr [eax+04]
:0040AEBD 8D542400                lea edx, dword ptr [esp]
:0040AEC1 52                      push edx


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 229
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看堆栈.................
2009-1-15 14:41
0
雪    币: 200
活跃值: (78)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我也猜出来是看堆栈,在OD里怎么看,能教一下吗?
2009-1-15 14:52
0
雪    币: 563
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
右下角那个窗口
2009-1-15 15:00
0
雪    币: 200
活跃值: (78)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5

0012FD04 004FAEE8 XXXX.004FAEE8
0012FD08 0012FD8C
0012FD0C 00481928 XXXX.00481928
0012FD10 0049CD74 XXXX.0049CD74
0012FD14 00481C97 返回到 XXXX.00481C97 //这个位置
0012FD18 00000000
0012FD1C 00000000
0012FD20 016B0048
0012FD24 016B0048
0012FD28 0013C680
0012FD2C 0012FDC0
0012FD30 0048CEF8 返回到 XXXX.0048CEF8
0012FD34 016B0048
0012FD38 00000001
0012FD3C 016B02EC
0012FD40 00000000
0012FD44 0048CE58 入口地址
0012FD48 00481C97 返回到 XXXX.00481C97



右下角窗口会停在我标注的位置,难道说是从00481C97这个位置过来的?
但那个位置是消息处理部分
麻烦各位在教教我怎么看
2009-1-15 15:30
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
6
OD在正常情况下,是无法得知程序是从哪里跳来的。

试试OD的跟踪功能。

或者看一下以下内容:

Conditional Branch Logger

LastBranchRecord
2009-1-15 17:46
0
雪    币: 200
活跃值: (78)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢书呆彭
你给的两篇文章太高深了
2009-2-12 09:23
0
雪    币: 93
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
在0040AE90处设断点,OD将其断下来后,按ALT+K 可以查看
2009-2-12 09:30
0
雪    币: 199
活跃值: (102)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
是啊,在0040AE90处设断点,当od断下来后,看堆栈的第一个返回地址
2009-2-12 13:02
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我是在调试的时候,用CTRL+F9回去,然后一步步的出栈找调用点。
2009-2-12 14:06
0
游客
登录 | 注册 方可回帖
返回
//