这次各处都有大量改进,其中包括许多稳定性提升。
我一直在继续改进我们的 CI 和构建系统基础设施。长期回归之后,QNX 和 MIPS 支持已经起死回生。 这些问题此前因为缺少 CI 覆盖而未被发现。现在我们已经部署 CI,确保这种情况不会再次发生。
请查看下面的变更日志,全面了解新增内容。
尽情享用吧!
变更日志
- gadget:修复死锁。当 Gadget 在持有内部锁的情况下阻塞动态链接器并等待 resume() 时, 就会发生这个问题。在这种情况下,我们会在阻塞期间处理 JS MainContext,网络 I/O 则由 Gadget 线程处理。由于 Stalker 在其 class_init() 期间可能与动态链接器交互,必须确保该操作 从 JS 线程而不是网络 I/O 线程发生。
- exit-monitor:修复 fork() 未被察觉时的死锁。
- darwin:在 Corellium 上运行时跳过伪签名。
- darwin:修复与较旧 iOS SDK 的兼容性。
- darwin-backtracer:修复循环变量回绕问题。
- darwin-mapper:修复使用链式修复时的占用空间预算。
- linux:修复 Process.modify_thread() 的等待逻辑。
- linux:在现代 glibc 系统上完整解析 libc。
- linux:移除 Linjector 的清理延迟。
- ios:添加 config.mk 选项,可以在不包含越狱支持代码的情况下构建,以兼容 TestFlight 等环境。
- ios:消除对外部 Mach VM 头文件的依赖。
- android:修复 Android/x86 上的 unw_getcontext();该问题会在 Thread.backtrace() 等调用期间导致栈损坏。
- freebsd:添加 BSDmakefile 以方便使用。
- freebsd:提高 gum_clear_cache() 的可靠性。
- freebsd:改进程序路径查询 API。
- freebsd:MAP_32BIT 失败时进行更充分的尝试。
- mips:修复因缺少 CI 而长期未被发现的回归。
- qnx:修复因缺少 CI 而长期未被发现的回归,同时改进 QNX 后端。
- posix:如果 madvise() 不可用,则使用 posix_madvise()。
- stalker:在 glibc、Android 和 FreeBSD 上检测线程退出实现。
- stalker:修复 x86 后端中的 Linux clone() 支持。
- stalker:修复 JECXZ/JRCXZ x86 指令的反向修补。
- stalker:修复 x86 后端中两处混淆 pc 与 code 的问题。
- stalker:优化 x86 后端中的 Linux 系统调用逻辑。
- stalker:将展开支持置于 API 之后。
- stalker:简化并修复 x86 展开中的 Interceptor 逻辑。
- stalker:在 arm64 后端中实现展开挂钩。感谢 @s1341!
- stalker:添加反向修补查询支持。
- stalker:支持重新编译代码块。
- process:添加 resolve_module_pointer()。
- elf-module:改进 DT_SYMTAB 条目数量检测。
- elf-module:跳过名称引用悬空的符号。
- symbolutil-libdwarf:添加对 DWARF v5 的支持。
- libdwarf:向后移植上游对 DW_FORM_line_strp 处理的修复。
- dbghelp-backtracer:提高 32 位 x86 上的可靠性。
- arm-relocator:简化 PC 相对 LDR 的处理。
- arm-writer:添加 call_reg_with_arguments*()。
- arm-writer:处理参数超过四个的 put_call*()。
- thumb-writer:处理 put_call*() 的栈对齐。
- arm64-writer:优化 LDR reg, #0。
- x86-relocator:添加 input_pc 以支持离线使用。
- x86-relocator:修复 RIP 相对快速路径中混淆 PC 与输出的问题。
- x86-relocator:改进 RIP 偏移修正逻辑。
- bounds-checker:回退到匹配的堆 API。
- gumjs:修复 CModule 内存分配逻辑。
- gumjs:修复使用内置 TinyCC 时的 CModule 运行时。
- gumjs:将构建时的 Python 最低要求降至 3.7。
- heap-api:改进非 Windows 操作系统上的 libc 检测。
- heap-api:将静态 MSVC CRT API 纳入列表。
- gum:改进 Meson 构建系统以支持 MSVC。
- gum:改进 Gum vapi,公开更多 API。
- core:调用 modulate.py 中的工具时关闭本地化,修复某些区域设置下的构建失败。
- python:修复 get_max_argument_count() 中错误引用计数导致的稳定性问题。
- python:修复 get_index_url_from_pip()。感谢 @X5tar!
- python:修复 Python < 3.6 上的索引 URL 获取。感谢 @serfend!
- node:发布 Electron 18 而不是 16 的预构建版本。
- ci:添加 Linux/MIPS、FreeBSD/x86_64、FreeBSD/arm64 和 QNX/armeabi。对于 Gum, 还添加 Windows/x86_64、macOS/x86_64、Linux/x86、Linux/x86_64、iOS/arm64、 Android/x86、Android/arm 和 Android/arm64。
oleavr