一、说明
IDARustDemangler 可以对 Rust 函数名称进行识别,让 IDA 对其进行规范化,从而更容易阅读和理解代码。
二、环境
- Python 3.x
- IDA Pro 7.x or later
三、依赖
此脚本中使用的函数名称识别算法需依赖于 FTLRustDemangler,因此在使用之前请确保已经安装了 FTLRustDemangler。FTLRustDemangler 是一个命令行工具,用于对使用 Rust 约定破坏的符号名称进行识别,以被破坏过后的符号名称作为输入,输出识别后的名称。
FTLRustDemangler -> https://github.com/timetravelthree/FTLRustDemangler
四、安装
首先需要安装 FTLRustDemangler,将项目克隆到本地进行构建:
![图片[1]-IDARustDemangler — 让 IDA 识别 Rust 程序符号-零度非安全](https://wordpress-1251526205.file.myqcloud.com/uploads/2023/03/20230329165403145.png/d2F0ZXJtYXJr)
为了让 IDARustDemangler 插件识别 rs-dml,将 rs-dml 程序添加到用户 PATH 环境变量中,然后将 IDARustDemangler 目录下的 plugin 目录里的文件复制粘贴到 IDA 中的 plugin 目录中即可。
五、测试用例
随便编写个简单的 Rust 程序,构建 release 版本,再将其加载到 IDA 中,同时让 IDA 加载相应的 .pdb 文件,在插件选项里选择执行
![图片[2]-IDARustDemangler — 让 IDA 识别 Rust 程序符号-零度非安全](https://wordpress-1251526205.file.myqcloud.com/uploads/2023/03/20230329172451751.png/d2F0ZXJtYXJr)
IDARustDemangler 解码了 163 个符号
![图片[3]-IDARustDemangler — 让 IDA 识别 Rust 程序符号-零度非安全](https://wordpress-1251526205.file.myqcloud.com/uploads/2023/03/20230329172012655.png/d2F0ZXJtYXJr)
识别前
![图片[4]-IDARustDemangler — 让 IDA 识别 Rust 程序符号-零度非安全](https://wordpress-1251526205.file.myqcloud.com/uploads/2023/03/20230329170549923.png/d2F0ZXJtYXJr)
从上图可看出,被破坏的符号名大多以 _ZN 开头,让我们看下识别后的符号
![图片[5]-IDARustDemangler — 让 IDA 识别 Rust 程序符号-零度非安全](https://wordpress-1251526205.file.myqcloud.com/uploads/2023/03/20230329171410646.png/d2F0ZXJtYXJr)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容