9个版本 (重大更新)

0.7.0 2023年11月16日
0.6.1 2023年5月13日
0.5.0 2022年9月14日
0.4.0 2022年8月3日
0.1.1 2022年5月21日

#485 in 可视化

Download history 8/week @ 2024-04-22 5/week @ 2024-04-29 10/week @ 2024-05-06 1/week @ 2024-05-13 12/week @ 2024-05-20 5/week @ 2024-05-27 9/week @ 2024-06-03 8/week @ 2024-06-10 4/week @ 2024-06-17 8/week @ 2024-06-24 50/week @ 2024-07-01 10/week @ 2024-07-15 60/week @ 2024-07-29 7/week @ 2024-08-05

每月下载量77次
4 crates 中使用

MIT 许可证

120KB
3K SLoC

hlbc Crates.io

Hashlink bytecode disassembler and analyzer.

这个crate是一个库,有关实际程序的用法请参阅hlbc-cli


功能

  • 解析整个字节码文件或任何字节码元素
  • 显示任何字节码元素
  • 恢复所有可能的名字
  • 在它们之间链接元素(带有手动引用以提高灵活性)
  • 与它们的调试信息链接元素
  • 将字节码序列化为字节
  • 将类和函数的反汇编为haxe源代码
  • 命令行界面以使用此库的功能(hlbc-cli

计划的功能

  • 正确测试序列化,确保我们得到字节对字节等效的。
  • 与Haxe/Hashlink标准库集成以恢复更多名称,排除它们的分析等
  • C API以与其他工具集成
  • 文本搜索引擎以搜索字符串和名称
  • 汇编和注入字节码或直接注入haxe源代码

变更日志

请参阅CHANGELOG.md

反汇编器

反汇编器位于hlbc-decompilercrate中,目前尚不完整(可能永远无法达到100%完整)。请参阅维基百科中的反汇编输出示例。

维基百科

有关Hashlink字节码的详细信息,请在此查看。维基百科还详细介绍了Haxe到hashlink的编译和反编译的详细信息。

替代方案

此库是用Rust编写的,目前正在开发C API,这可能允许在许多其他项目中使用此库,但到目前为止,它仅适用于Rust。

其他替代方案包括

  • 直接在 C 语言的 hashlink 源代码中进行修改(我最初的尝试就是这样做的,但结果发现 C 语言中的任何操作都让人头疼不已)
  • 使用正在进行的、用 Haxe 编写的 dashlink(可能可以编译成许多其他语言)。

宏定义

存在 98 种不同的字节码指令,我无法手动为它们编写代码。这些操作码的大多数序列化代码都是通过进程宏生成的(参见 hlbc-derive)。将其制作成声明性宏可能非常困难。唯一需要编写 98 个不同分支的情况是在显示指令时使用的格式(src/fmt.rs)。

依赖项

~0.5–1.4MB
~27K SLoC