首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >IDA插件lighthouse的安装与使用

IDA插件lighthouse的安装与使用

作者头像
用户1423082
发布2024-12-31 20:16:51
发布2024-12-31 20:16:51
46600
代码可运行
举报
文章被收录于专栏:giantbranch's bloggiantbranch's blog
运行总次数:0
代码可运行

IDA安装

通过在ida的python console输入下面代码获取plugin路径(下面获取的一般是C盘的用户路径,C:\Users\XXXX\AppData\Roaming\Hex-Rays\IDA Pro\plugins),或者你直接放到IDA根目录的plugins文件夹

代码语言:javascript
代码运行次数:0
运行
复制
import idaapi, os; print(os.path.join(idaapi.get_user_idadir(), "plugins"))

知道路径后将lighthouse项目的plugins文件夹的lighthouse文件夹和lighthouse_plugin.py放到plugins目录即可

重新打开IDA,就可以看到加载文件那里多了Code coverage file

覆盖率文件生成

DynamoRIO

DynamoRIO就是针对windows,很简单(我使用的是DynamoRIO-Windows-8.0.0-1,据说Lighthouse默认使用的drcov文件版本为version 2,但是最新版的DynamoRIO生成的drcov文件的版本为version 3)

代码语言:javascript
代码运行次数:0
运行
复制
bin64\drrun.exe -t drcov -- XXX.exe

pin

官方指南: https://github.com/gaasedelen/lighthouse/blob/develop/coverage/pin/README.md

下载pin tools: https://www.intel.com/content/www/us/en/developer/articles/tool/pin-a-binary-instrumentation-tool-downloads.html

注意: 下载最新版的无法编译通过,我当时下载的Pin3.13,可以编译通过

编译:

cd lighthouse/coverage/pinexport PIN_ROOT=/root/pin-3.13 #上面下载后解压的pin的路径export PATH=PATH:PIN_ROOTmake # 默认编译intel64make TARGET=ia32 # 指定编译ia32

pin覆盖率获取

代码语言:javascript
代码运行次数:0
运行
复制
~/tools/pin-3.13/pin -t obj-intel64/CodeCoverage.so -- ./src/target ./testfile

使用 -w 命令行标志,可以指示pintool仅对您指定的模块进行插桩,可以加快速度,也大大减少收集的数据量。

代码语言:javascript
代码运行次数:0
运行
复制
~/tools/pin-3.13/pin -t obj-intel64/CodeCoverage.so -w target -- ./src/target ./testfile

而且-w可以有多个

代码语言:javascript
代码运行次数:0
运行
复制
~/tools/pin-3.13/pin -t obj-intel64/CodeCoverage.so -w target -w libcrypto.so.1.1 -- ./src/target ./testfile

通过frida收集

Frida在移动平台上的支持最好,如iOS或Android,声称对Windows、MacOS、Linux和QNX提供一些支持。实际上, frida-drcov.py 只应用于收集移动应用程序的覆盖数据。

安装Frida

代码语言:javascript
代码运行次数:0
运行
复制
pip install frida

一旦安装了Frida,可以使用frida-drcov.py脚本来收集正在运行的进程的覆盖率

代码语言:javascript
代码运行次数:0
运行
复制
python frida-drcov.py <process name | pid>

默认会生成frida-cov.log覆盖率文件

使用 -o 标志,可以指定覆盖率日志文件的自定义名称/位置:

代码语言:javascript
代码运行次数:0
运行
复制
python frida-drcov.py -o more-coverage.log foo

以htop为例,首先启动htop,之后执行下面命令

代码语言:javascript
代码运行次数:0
运行
复制
python frida-drcov.py htop

结束掉htop,之后再结束上面命令,即可生成frida-cov.log,就可以导入到IDA了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • IDA安装
  • 覆盖率文件生成
    • DynamoRIO
    • pin
    • 通过frida收集
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档