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 可视化
每月下载量77次
在 4 crates 中使用
120KB
3K SLoC
hlbc
Hashlink bytecode disassembler and analyzer.
这个crate是一个库,有关实际程序的用法请参阅hlbc-cli。
功能
- 解析整个字节码文件或任何字节码元素
- 显示任何字节码元素
- 恢复所有可能的名字
- 在它们之间链接元素(带有手动引用以提高灵活性)
- 与它们的调试信息链接元素
- 将字节码序列化为字节
- 将类和函数的反汇编为haxe源代码
- 命令行界面以使用此库的功能(hlbc-cli)
计划的功能
- 正确测试序列化,确保我们得到字节对字节等效的。
- 与Haxe/Hashlink标准库集成以恢复更多名称,排除它们的分析等
- C API以与其他工具集成
- 文本搜索引擎以搜索字符串和名称
- 汇编和注入字节码或直接注入haxe源代码
变更日志
请参阅CHANGELOG.md。
反汇编器
反汇编器位于hlbc-decompiler
crate中,目前尚不完整(可能永远无法达到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