@hadss/abckit-ts
v1.0.0-rc.0
Published
ABC File Bytecode Manipulation API
Readme
AbcKit TS
AbcKit TS 是面向方舟字节码的专业分析与修改工具库,基于 TypeScript 构建,依托高性能 Abckit C++ 底层驱动,为开发者提供便捷、强大的方舟字节码操作能力。
安装依赖
npm install @hadss/abckit-ts依赖系统版本
SDK: API 15 Release及以上
DevEco Studio: 6.1.0 Release及以上版本
快速开始
约束与限制
在使用本字节码插桩API之前,请务必了解以下约束条件,以避免在集成或运行过程中遇到意外问题。
- 环境依赖
- 依赖Deveco Studio 6.1.0及以上版本,低版本hvigor缺少配套的注册接口。
- 受底层abckit编译环境限制,目前不支持mac x64环境。
- 输入与输出限制
- 底层使用Abckit C++库,错误的使用会导致程序直接中断退出,并输出断言日志信息。
- 插桩能力边界
- 代码范围,插桩能力主要作用于方法体内部的指令。目前不支持对类签名、字段定义、装饰器、注解等元数据结构进行修改;当前仅支持ArkTS 1.1版本,不支持静态类型分析。
- 当前版本不支持类、方法、属性创建能力,如需要使用函数指针或实现,需要自行预定义好,并被程序引用,确保字节码中包含该字节码。
- 当前版本对控制语句编辑支持较弱,后续会陆续完善。
- 已知问题与规避
- hvigor插件开发存在跨语言调用的问题,会导致IDE(Java)会针对某些内存操作报出异常,导致插桩成功但是编译失败【错误信息:Process finished with exit code -1073741819 (0xC0000005)】,建议在子线程中执行
规避手段:
- 字节码插桩TS代码编写好之后,使用
tsc xxx.ts xxx.ts编译为js代码 hvigor插件中使用子线程work_threads调用插桩模块,具体使用方法参考Sample代码。
- 字节码插桩TS代码编写好之后,使用
