首页
社区
课程
招聘
[讨论]如何在一个函数A的内部设法知道是哪个函数调用该A函数!
发表于: 2009-9-18 08:06 6438

[讨论]如何在一个函数A的内部设法知道是哪个函数调用该A函数!

2009-9-18 08:06
6438
感觉很难,几乎不可能,发上来想问问各位,这个情况有什么思路可以做到,只要思路就可以了。谢谢!希望得到大牛们的讨论!

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

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
use dbghelp.dll to get the stack
2009-9-18 08:35
0
雪    币: 218
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
从堆栈里检查返回地址如何?
2009-9-18 08:38
0
雪    币: 1491
活跃值: (975)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
4
在一个函数内部怎么会得到呢?
在外部还差不多
IDA好像有这样的功能,但应该不是在内部
2009-9-18 09:36
0
雪    币: 153
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
有这样的需求?
2009-9-18 10:40
0
雪    币: 143
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
看堆栈啊
=======
2009-9-18 13:17
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
7
使用栈回溯……
2009-9-18 21:44
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
8
[ebp+4]就是返回地址啊,判断下范围不就行了~
2009-9-18 21:47
0
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
[QUOTE=achillis;688496][ebp+4]就是返回地址啊,判断下范围不就行了~[/QUOTE]

栈回溯已经久仰大名了,不过还一直没空去研究
有个疑问一直在心里,如果回溯徒中有不使用ebp寻址而直接使用esp的,有没有什么技巧可以应对?
2009-9-19 09:03
0
雪    币: 256
活跃值: (673)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
不太明白楼上说的是什么意思?
2009-9-19 12:13
0
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
可能是我的描述有问题,
一般进入一个函数的时候,是因为有
push ebp
mov ebp, esp
这2句代码,所以可以用[ebp + 4]得到return地址,
但是有的函数是没有这2句的,然后函数内部访问调用参数时,是直接 [esp + xxx],
而这样的函数里,用[ebp+4]就得不到正确的返回地址了,有没有什么好的技巧?
2009-9-19 22:32
0
雪    币: 201
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
这个最专业,支持楼主用这种方式。
2009-9-19 22:54
0
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
13
一般来说就是堆栈吧

通用的办法是没有的。你得看看你的编译器把代码编译成什么样,才能针对这点取得地址
2009-9-20 14:01
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
morning 这个dbghelp.dll 是怎么用的?
2009-9-20 14:32
0
游客
登录 | 注册 方可回帖
返回
//