首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
经典问答
发新帖
1
0
[求助]请求如何获取栈信息的实现方式
发表于: 2009-3-6 09:34
3217
[求助]请求如何获取栈信息的实现方式
小HD
2009-3-6 09:34
3217
请教: 大家知道,程序运行时系统会分配给该进程一个栈空间: 在该栈中会为每一个函数分配一个栈帧,并且每次调用一个函数都会为该函数分配一个栈帧。我现在想每次函数调用时,都会触发一个读栈操作。
我的目的是想分析函数调用栈获取函数间的调用关系,构建函数调用关系图,谢谢大家给予建议
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
收藏
・
1
免费
・
0
支持
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
5
)
书呆彭
雪 币:
2110
活跃值:
(21)
能力值:
(RANK:260 )
在线值:
发帖
30
回帖
1861
粉丝
2
关注
私信
书呆彭
6
2
楼
系统只为线程分配栈空间。而函数调用,硬件只将返回地址压栈,栈帧是由函数自己(或者说编译器)维护的,函数可以完全不使用标准的(或说通常的)EBP帧结构。
“每次函数调用都触发一个事件”,不管是硬件还是操作系统,都没有提供支持。
分析函数的调用关系,通过静态分析代码可以实现部分功能,而对于诸如虚函数调用、函数指针调用等情况,需要在静态分析的基础上结合动态调试获得相关信息。
要想仅通过动态调试,想让“每次函数调用都触发一个事件”,我能想到的办法。也只有使用“指令集模拟级别”的虚拟机,HOOK虚拟机处理CALL指令的代码来实现了。
2009-3-6 10:11
0
小HD
雪 币:
232
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
9
回帖
52
粉丝
0
关注
私信
小HD
3
楼
静态分析不是没有考虑过,不过存在诸如你说说的间接调用、不确定路径(由运行时输入决定)等问题。动态分析,如你所说,就是十分依赖编译器了。如对于特定平台,比如linux+gcc 可以通过修改内核,比如每当call指令发生时,及时触发中断,按照程序的pid将栈中的内容及时拷贝到一个缓冲区中。“HOOK虚拟机处理CALL指令” 现在有这方面的仿真环境吗,麻烦介绍些仿真和分析软件? 谢谢指教。。。
2009-3-6 10:49
0
书呆彭
雪 币:
2110
活跃值:
(21)
能力值:
(RANK:260 )
在线值:
发帖
30
回帖
1861
粉丝
2
关注
私信
书呆彭
6
4
楼
CALL指令不属于特权指令,我不知道你说的Linux下让CALL指令陷入内核是怎么实现的。
如果是让编译器把CALL指令都替换成INT3,那其实与我所说的“静态分析结合动态调试”是一个方法,只是我的意思是让反汇编器标记所有的CALL:对于直接调用,反汇编器可以直接生成调用参考;对于间接调用,反汇编器可以将CALL指令标记,然后传递给调试器,调试器在其设置断点,通过动态调试来获取调用地址。
指令级的模拟器,可以看一下bochs,是一个开源的x86体系结构的模拟器(实际上已经支持AMD64体系结构),而且本身就带有调试功能。
2009-3-6 11:55
0
小HD
雪 币:
232
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
9
回帖
52
粉丝
0
关注
私信
小HD
5
楼
受教了,继续研究研究。 我主要想做个watchdog的监控软件。监控运行时程序的动态形成的函数调用图。 所以静态分析不适用。设置断点的方法会影响到正在运行的程序,主要还是想从操作系统分配给该进程的函数调用栈中获取动态的函数调用图。 栈中含有函数的返回地址,并且通过对比不同时刻入栈出栈的变化,结合EIP寄存器的值,应该可以构建出函数动态执行图。
2009-3-6 16:13
0
小HD
雪 币:
232
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
9
回帖
52
粉丝
0
关注
私信
小HD
6
楼
现在决定用书呆彭建议的静态分析加动态调试方法获取程序的控制流图了,具体如何实现还希望大虾给点建议。
IDA可以形成静态控制流图,对于间接函数调用可以先标记,再动态形成。
具体的工具和方法希望大家帮忙
疑问: 1)IDA会提供我们使用其形成的控制流程图的接口吗?
2) 有开源的静态分析工具吗?(这样更容易做实验)
大家对给建议啊
2009-3-19 16:02
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
小HD
9
发帖
52
回帖
10
RANK
关注
私信
他的文章
[求助老大的一个问题,吓我一跳
3465
[调查]蜗居,大家看过吗??
3199
[下载]OD 和IDA的两本书,网上收集的,转成了pdf,一个是E文的~
3853
0day书中关于函数调用的一章,系统调用和 栈平衡问题~(急于求解,在这里也发一下:)
3911
[求助]书中关于函数调用的一章,系统调用和 栈平衡问题~
5075
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部