首页
社区
课程
招聘
[求助]Mdebug如何找到函数是从哪里CAll来的
发表于: 2013-7-16 22:05 5044

[求助]Mdebug如何找到函数是从哪里CAll来的

2013-7-16 22:05
5044
用Mdebug断下一个API,如何能找到这个涵数是在主程序中哪里调用的!!

因为我断的是_cxxThrowException,不能等涵数执行完了再看,执行完了就退出了!!

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 952
活跃值: (1826)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看[esp]........
2013-7-16 22:30
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=loqich;1199570]看[esp]........[/QUOTE]

能说一下具体是咋看吗??我对比了一下OD,EIP里的数据根返回地值或是调用地址没有什么关系啊!!
2013-7-16 22:41
0
雪    币: 1042
活跃值: (500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
call 指令会压栈它的下一条指令~
2013-7-17 10:18
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
不是EIP是ESP 栈顶指针寄存器
调用到该函数一般是用call
而call的时候 会将返回地址入栈 也就是说 call相当于
push backAdd
jmp ××××
所以自己的函数的开头 会执行
push ebp
mov ebp,esp
以平衡栈

这时候。ebp就等于之前的esp
而[esp + 4]
(esp栈顶 因为push ebp 所以esp指向的地址是保存的ebp 所以+4指向返回地址 在自己函数中获取自己返回地址 就是ebp + 4)
也就是返回地址了
因为开头有执行push ebp 所以[ebp]的值其实是原本的ebp的值。需要+4以获取上一条记录
2013-7-18 07:24
0
雪    币: 253
活跃值: (89)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
如果是长跳转,这样的方法好象不行。但多数情况下还是可以的!
2013-7-18 08:24
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢大家的讲解!!!!
2013-7-24 17:59
0
游客
登录 | 注册 方可回帖
返回
//