1 个不稳定版本
0.0.1 | 2024年5月5日 |
---|
#29 在 #反汇编
465KB
12K SLoC
Disarmv7
Disarmv7 是一个针对 ArmV7-M 指令集的反汇编器。它提供了一个足够快的反汇编器,可以将大多数 ArmV7-m 指令提升到 rust enum
,这对于您想在汇编/机器代码级别进行语义分析、符号执行或类似操作来说非常理想。目前,它不提供汇编指令的文本表示。该项目主要是作为 Symex 项目的辅助项目编写的,Symex 是一个符号执行引擎,为程序的每个可能的路径提供安全的使用执行时间估计。但它也可以作为一个独立的项目来解析 ArmV7-M 二进制文件。
使用方法
使用库
假设您已将指令放置在 u8
切片(buff)中,您可以像这样调用反汇编器:
use disarmv7::prelude::*;
let mut buff: disarmv7::buffer::PeekableBuffer<u8, _> = buff.iter().cloned().into();
let asm = Asm::parse(&mut buff);
println!("Assembly : {asm:?}");
限制
该项目不加载二进制文件,也不生成汇编的文本表示,这超出了项目范围。对于需要程序文本表示的情况,我们建议用户参考像 Capstone 这样的项目,它们提供了更完整的体验。
贡献
如果您觉得这个项目有趣或有用,请随时通过在 问题跟踪器 中查找开放的问题或打开一个 PR
来修复或添加您认为有用的功能来贡献。在贡献之前,您应该阅读有关贡献的简短 文档。
许可
本仓库采用 MIT 许可证,任何贡献都应采用相同的许可证,除非明确说明。
脚注
- 目前反汇编器不支持浮点扩展。
- 有关此内容的进一步文档,请阅读 Object 的文档。
依赖项
~290–750KB
~18K SLoC