首页
社区
课程
招聘
[旧帖] [求助]有没有高手搞Pin动态插装的?有些问题请教 0.00雪花
发表于: 2012-7-4 14:23 3620

[旧帖] [求助]有没有高手搞Pin动态插装的?有些问题请教 0.00雪花

2012-7-4 14:23
3620
现在在做基于污点数据流跟踪的智能FUZZ项目,需要对程序流程进行分析记录,从效率考虑,没有用调试器插件,而是用Intel的Pin动态插桩平台。原有的系统都是纯粹动态跟踪的,所以效率很差,我的思路是仅动态地记录程序执行流程,得到日志,再静态分析日志。

现在有一系列问题,先一个个解决吧:

污点跟踪涉及到对文件的读写,以及从文件中读入的内容,跟踪对此内容进行操作的所有模块与指令。这样一来,需要记录的指令数量过多,一个直接的问题就是,软件界面绘制和Windows消息循环处理相关的函数都肯定不会涉及到读取文件的数据流传播,应该可以不对这些指令进行插装。现在尝试着对MSDN上面给出的消息循环相关的下述函数的指令排除插装:
BroadcastSystemMessage        
BroadcastSystemMessageEx        
DispatchMessage        
GetInputState        
GetMessage        
GetMessageExtraInfo        
GetMessagePos        
GetMessageTime        
GetQueueStatus        
InSendMessage        
InSendMessageEx        
PeekMessage        
PostMessage        
PostQuitMessage        
PostThreadMessage        
RegisterWindowMessage        
ReplyMessage        
SendAsyncProc        
SendMessage        
SendMessageCallback        
SendMessageTimeout        
SendNotifyMessage        
SetMessageExtraInfo        
TranslateMessage        
WaitMessage        

这样就对程序运行中绝大多数运行时间所执行的消息循环大概排除了。但是实际运行的效果来看,改善地还不是很理想,界面绘制还是有非常明显的卡顿,显然还需要对无关的界面绘制部分函数进行排除。

因此想请教各位高手,对于win32程序,还有没有什么函数,是可以确认与文件中的数据流传播没有关系的(比如,界面绘制的例程),这样就可以增进效率了。谢谢~

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 10
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
另外,现在通过动态流程的记录可以得到执行的所有指令的汇编代码,为了跟踪内存读写,在动态执行时利用插装,记录了所有内存读写地址。但是这也影响了执行效率。如果能够采用一种现成的中间语言,读入所有的汇编代码,并虚拟运行,就可以模拟出执行过程中的寄存器与内存上下文了。这能不能实现?是不是需要一种模拟器或者虚拟机类的工具?
2012-7-4 14:42
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
DynamoRio 这个好用
2012-7-4 15:27
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
请教大神,DynamoRIO与PIN相比,有什么优势啊?
2014-4-3 16:18
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我是来学习的。帮顶顶
2014-4-4 10:10
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
很荣幸来到此论坛,没想到求助帖都这么专业,我想可以学到很多东西,
2014-4-4 10:21
0
雪    币: 10
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
虽然不是大神,但是简单说说我的看法……

开发动态污点分析工具两年了,一直都是用Intel Pin。主要是考虑到近些年,在学术领域做相关的二进制动态研究,主要是基于Pin,效率是一方面,跨平台可能是考虑的重点吧。DynamoRIO貌似现在是Google旗下项目了,肯定质量有保证,但是做上层应用的话,和其它同类研究貌似没有太可行的对比,所以我这边一直没有尝试。
2014-4-4 11:11
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢~~
请问,你有没有关于PIN的一些资料哇。刚开始接触动态二进制插桩工具。
2014-4-6 15:10
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
大神,请问一下,你们用pin尝试过监控svchost一类的系统进程吗?
我试了一下,是不行的,不知道是否有解决方案。
如果要监控svchost之类的系统进程,只能用TEMU了吗?
2014-4-27 21:01
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
Pin是用户级的,只能监控用户的代码,不过好像pin也弄了一个系统级的,叫pinos,没有用过,不知好用不,TEMU是基于QEMU的,是系统级的,可以监控svchost
2014-7-3 19:01
0
雪    币: 47
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
有关于pinos的资料分享吗?
2015-6-16 11:42
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我是来学习的。帮顶顶
2015-6-19 16:51
0
游客
登录 | 注册 方可回帖
返回
//