#反汇编 #arm #armv7

disarmv7

将 armv7 指令解码为 rust 枚举

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