这次带来了许多好东西,其中之一便是全新的 Linux 注入器。 开发过程非常有趣,尤其是其中包含了大量与 @hsorbo 的结对编程。
我们对它相当兴奋。Frida 现在支持注入 Linux 容器,例如 Flatpak 应用。 不仅如此,它终于还能把代码注入没有动态链接器的进程。
另一项很棒的改进是,如果你在 Linux >= 3.17 上运行 Frida,可能会注意到 它不再写出任何临时文件。这是通过 memfd 和重新设计的注入器信号机制实现的。
新的 Linux 注入器采用完全异步的设计,没有任何可能导致死锁的危险阻塞操作。 它也是第一个支持为注入载荷提供控制通道的注入器。
未来我们计划在其他后端中也实现这一能力,并使其成为跨平台 Injector API 的一部分。这样做是为了让自定义载荷更容易实现。
这个版本还包含许多其他好东西,务必查看下面的变更日志。
祝你使用愉快!
变更日志
- linux:重新设计注入器。感谢 @hsorbo 富有成效的结对编程!
- linux:修复基于 libc 的模块枚举。
- linux:修复 musl 上的 query_libc_name()。
- linux:修复 musl 上的模块句柄解析器逻辑。
- linux:修复 musl 上的 Module.ensure_initialized()。
- darwin:如果 ThreadSuspendMonitor 由 Frida 调用,则使其直接放行, 以避免死锁场景。感谢 @mrmacete!
- darwin:在 spawn() 期间始终为管道 stdio 使用 PTY,并启用 close-on-exec。
- windows:如果已有 DbgHelp 实例,则使用它。感谢 @fesily!
- windows:实现 Module.enumerate_symbols()。感谢 @fesily!
- process:在 enumerate_modules() 中跳过被隐藏的模块。
- cloak:添加 has_range_containing()。
- elf-module:用 get_interpreter() 替换 has_interp()。
- gumjs:修复运行时序列化的无符号编码。
- objc:为方法添加 symbol 属性,使方法对象能够以人类可读的方式完整描述自身。 感谢 @mrmacete!
- java:用符号作为唯一属性名。感谢 @yotamN!
- java:为重载添加 toString() 方法。感谢 @oriori1703!
- java:为类型和字段添加 toString() 方法。感谢 @yotamN!
- java:修复重载方法的 toString()。感谢 @yotamN!
- server:支持作为共享库加载。感谢 @Yannayli!
oleavr