首页
论坛
课程
招聘
雪    币: 193
活跃值: 活跃值 (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝

[调试逆向] [求助]od中,如何确定跳转来自何处?

2008-2-21 15:20 15624

[调试逆向] [求助]od中,如何确定跳转来自何处?

2008-2-21 15:20
15624
用od调试程序时经常会遇到这样的情况,程序中断在一个函数的入口点
od会把所有调用这个函数的地址列出来,但有时候调用这个函数的地方太多了
我想问的是:如何精确的确定本次执行的到底是哪个地址调用了这个函数?我现在是run跟踪确定,或者一个一个的试,但感觉都不是很方便,高手有更好的方法吗?指点一下啊,非常感谢

HWS计划·2020安全精英夏令营来了!我们在华为松山湖欧洲小镇等你

最新回复 (19)
雪    币: 359
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
petnt 活跃值 12 2008-2-21 15:24
2
0
在函数入口点断下之后,观察堆栈。。。。
到栈顶所在的地址看看。。
雪    币: 217
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
softworm 活跃值 30 2008-2-21 19:28
3
0
有个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时记录的只有控制转移指令
雪    币: 1463
活跃值: 活跃值 (74)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
menting 活跃值 14 2008-2-22 01:08
4
0
在函数入口断下..查看ESP为返回地址,这个学汇编.......应该 知道的哦~~~
雪    币: 5535
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 活跃值 26 2008-2-22 01:56
5
0
请注意跳转和调用的区别
雪    币: 750
活跃值: 活跃值 (17)
能力值: (RANK:730 )
在线值:
发帖
回帖
粉丝
海风月影 活跃值 17 2008-2-22 12:49
6
0
楼主问的是:


如何精确的确定本次执行的到底是哪个地址调用了这个函数?
雪    币: 100
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
夜凉如水 活跃值 3 2008-2-22 16:34
7
0
完全不懂 呵呵关注中
雪    币: 127
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ddao 活跃值 2008-3-12 19:18
8
0
2楼已经说清楚了。。
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
joephoenix 活跃值 2008-3-12 19:46
9
0
正常来说堆栈顶写的“返回到。。。。”就是调用这CALL的地址了
雪    币: 150
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zlmsdn 活跃值 2008-3-13 12:42
10
0
不懂的说哦.
雪    币: 280
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
NCFZ 活跃值 2008-3-13 14:40
11
0
alt+k!!!!!!!!!!!
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pcwolf 活跃值 2008-3-17 08:41
12
0
返回后不就是知道是哪个地址调用它的吗?
雪    币: 372
活跃值: 活跃值 (53)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
方向感 活跃值 2008-3-17 12:54
13
0
alt+k
查看调用堆栈就能找到答案
雪    币: 217
活跃值: 活跃值 (11)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
foxabu 活跃值 13 2008-3-17 23:59
14
0
顶 膜拜.
雪    币: 601
活跃值: 活跃值 (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Second 活跃值 1 2008-3-19 14:40
15
0
只能说查看堆栈
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hswqs 活跃值 2008-3-19 20:24
16
0
到RET行不行了
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pfzhao 活跃值 2 2008-3-19 20:41
17
0
跳转多了是不是很容易迷路,好像现在要想知道从哪儿来,就只有全代码中serach jmp xxx,或者你直接serach ?? xxx,没有哪个去写一个记录从哪儿来的,只有说明到哪儿去的。
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
pfzhao 活跃值 2 2008-3-19 20:42
18
0
RET好像不行吧,RET就是结束某段代码跳回上一层,也不能行。
雪    币: 231
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
amduser 活跃值 2008-3-21 15:58
19
0
好像我也遇到了同样的问题
不过我都不知道怎么办
雪    币: 257
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
qqlqql 活跃值 1 2008-3-23 05:06
20
0
调用看调用堆栈就行了  跳转要怎么看啊?
游客
登录 | 注册 方可回帖
返回