前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Functrace:使用DynamoRIO追踪函数调用

Functrace:使用DynamoRIO追踪函数调用

作者头像
FB客服
发布2019-07-09 15:29:13
1.7K0
发布2019-07-09 15:29:13
举报
文章被收录于专栏:FreeBuf

Functrace是一款使用DynamoRIO(http://dynamorio.org/)通过动态检测分析二进制文件的工具。

特性(基于DynamoRIO)

反汇编所有执行的代码 反汇编一个特定的函数(如果是地址则进行转储) 获取特定函数的参数(如果是地址则进行转储) 获取特定函数的返回值(如果这是一个地址则进行转储) 监控应用信号 生成报告文件 ghidra(https://ghidra-sre.org/)coverage脚本(基于functrace报告文件)

安装

代码语言:javascript
复制
$ wget https://github.com/DynamoRIO/dynamorio/releases/download/release_7_0_0_rc1/DynamoRIO-Linux-7.0.0-RC1.tar.gz$ tar xvzf DynamoRIO-Linux-7.0.0-RC1.tar.gz

代码语言:javascript
复制
$ wget https://github.com/DynamoRIO/dynamorio/releases/download/cronbuild-7.91.18047/DynamoRIO-x86_64-Linux-7.91.18047-0.tar.gz$ tar xvzf DynamoRIO-x86_64-Linux-7.91.18047-0.tar.gz

你也可以直接克隆和编译DynamoRIO

代码语言:javascript
复制
$ git clone https://github.com/invictus1306/functrace$ mkdir -p functrace/build$ cd functrace/build$ cmake .. -DDynamoRIO_DIR=/full_DR_path/cmake/$ make -j4

DEMO

使用

代码语言:javascript
复制
$ drrun -c libfunctrace.so -report_file report -- target_program [args]

选项

支持以下 [functrace](https://github.com/invictus1306/functrace)可选项:

代码语言:javascript
复制
-disassembly                    -> disassemble all the functions -disas_func function_name       -> disassemble only the function function_name    -wrap_function function_name    -> wrap the function function_name                -wrap_function_args num_args    -> number of arguments of the wrapped function-cbr                            -> remove the bb from the cache (in case of conditional jump)-report_file file_name          -> report file name (required)-verbose                        -> verbose

使用示例

选项 -verbose

代码语言:javascript
复制
$ drrun -c libfunctrace.so -report_file report -verbose -- target_program [args]

选项 -disassemby

代码语言:javascript
复制
$ drrun -c libfunctrace.so -report_file report -disassembly -- target_program [args]

选项 -disas_func

代码语言:javascript
复制
$ drrun -c libfunctrace.so -report_file report -disas_func name_function -- target_program [args]
代码语言:javascript
复制
选项 -wrap_function 和 -wrap_function_args
代码语言:javascript
复制
$ drrun -c libfunctrace.so -report_file report -wrap_function name_function -wrap_function_args num_args -- target_program [args]
代码语言:javascript
复制
选项 -cbr
代码语言:javascript
复制
$ drrun -c libfunctrace.so -report_file report -cbr -- target_program [args]
代码语言:javascript
复制
CVE-2018-4013 - 漏洞分析

LIVE555 RTSP 服务器库上的漏洞。

工作环境

以上测试环境为 Ubuntu 16.04.5 LTS 64 bit

待添加功能

Ghidra插件 可视化设置界面 存储并比较不同的覆盖能力分析 从ghidra运行DR directy 为functrace添加更多功能 支持Android

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 特性(基于DynamoRIO)
  • 安装
  • DEMO
  • 使用
  • 工作环境
  • 待添加功能
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档