unidbg 项目推荐
1. 项目基础介绍和主要编程语言
unidbg 是一个开源项目,旨在模拟 Android 和 iOS 的本地库。该项目的主要编程语言是 Java,同时也涉及一些 C、C++ 和 Objective-C 等语言。unidbg 是一个教育项目,旨在帮助开发者深入了解 ELF/MachO 文件格式和 ARM 汇编。
2. 项目核心功能
unidbg 的核心功能包括:
- JNI 调用 API 模拟:支持 JNI_OnLoad 的调用,提供 JavaVM 和 JNIEnv 的支持。
- 系统调用模拟:支持 ARM32 和 ARM64 架构的系统调用指令模拟。
- 内联钩子:通过 Dobby 实现内联钩子功能。
- Android 导入钩子:通过 xHook 实现 Android 导入钩子功能。
- iOS 钩子:支持 fishhook、substrate 和 whale 钩子。
- 调试器支持:提供简单的控制台调试器和 gdb stub 支持。
- 指令和内存跟踪:支持指令跟踪和内存读写跟踪。
- iOS 运行时支持:支持 iOS 的 objc 和 swift 运行时。
- 快速后端支持:支持 dynarmic 快速后端和 Apple M1 超线程器。
- Linux KVM 后端:支持 Raspberry Pi B4 的 Linux KVM 后端。
3. 项目最近更新的功能
unidbg 最近的更新包括:
- iOS 模拟实验性支持:增加了对 iOS 模拟的实验性支持。
- 新的测试用例:在
src/test
目录下增加了多个新的测试用例,如TTEncrypt.java
、JniDispatch32.java
、JniDispatch64.java
等。 - 性能优化:对 dynarmic 后端和 Apple M1 超线程器进行了性能优化。
- 调试功能增强:增强了控制台调试器和 gdb stub 的功能,提供更详细的调试信息。
- 文档更新:更新了项目的 README 文件,增加了更多使用示例和说明。
通过这些更新,unidbg 不仅在功能上得到了扩展,还在性能和易用性上有了显著提升,使其成为学习和研究 Android 和 iOS 本地库模拟的优秀工具。