能力值:
( LV9,RANK:490 )
|
-
-
2 楼
在函数入口点断下之后,观察堆栈。。。。
到栈顶所在的地址看看。。
|
能力值:
( LV9,RANK:1210 )
|
-
-
3 楼
有个ring3的插件Conditional Branch Logger,我更喜欢ring0的DebugCtlMSR,openrce上有讨论.
Hook int1:
__declspec(naked) void NewInt01()
{
// - Interrupt 1 Handler -
//
// offset | contains
// ---------+-----------------------------
// esp : EIP Context
// esp + 4 : CS Context
// esp + 8 : EFLAGS Context
__asm
{
pushad
mov eax, dr6
bt eax, 0Eh //单步?
jnc __oldint01
mov ecx, 1D9h
rdmsr
or eax, 3
wrmsr
__oldint01:
popad
jmp OldHandler01
}
}
在OD中trace时记录的只有控制转移指令
|
能力值:
( LV9,RANK:610 )
|
-
-
4 楼
在函数入口断下..查看ESP为返回地址,这个学汇编.......应该 知道的哦~~~
|
能力值:
(RANK:1060 )
|
-
-
5 楼
请注意跳转和调用的区别
|
能力值:
(RANK:1130 )
|
-
-
6 楼
楼主问的是:
如何精确的确定本次执行的到底是哪个地址调用了这个函数?
|
能力值:
( LV9,RANK:140 )
|
-
-
7 楼
完全不懂 呵呵关注中
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
2楼已经说清楚了。。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
正常来说堆栈顶写的“返回到。。。。”就是调用这CALL的地址了
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
不懂的说哦.
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
alt+k!!!!!!!!!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
返回后不就是知道是哪个地址调用它的吗?
|
能力值:
( LV3,RANK:30 )
|
-
-
13 楼
alt+k
查看调用堆栈就能找到答案
|
能力值:
( LV13,RANK:530 )
|
-
-
14 楼
顶 膜拜.
|
能力值:
( LV4,RANK:50 )
|
-
-
15 楼
只能说查看堆栈
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
到RET行不行了
|
能力值:
( LV6,RANK:90 )
|
-
-
17 楼
跳转多了是不是很容易迷路,好像现在要想知道从哪儿来,就只有全代码中serach jmp xxx,或者你直接serach ?? xxx,没有哪个去写一个记录从哪儿来的,只有说明到哪儿去的。
|
能力值:
( LV6,RANK:90 )
|
-
-
18 楼
RET好像不行吧,RET就是结束某段代码跳回上一层,也不能行。
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
好像我也遇到了同样的问题
不过我都不知道怎么办
|
能力值:
( LV4,RANK:50 )
|
-
-
20 楼
调用看调用堆栈就行了 跳转要怎么看啊?
|
|
|