任何带特征的检测都是不安全的 & 隐而不发
之前说了下关于反调试的相关, 这次说下反注入相关.
前言
要实现 hook 的首要前提就是能够注入. 但是注入的手段比较多.
1. DYLD_INSERT_LIBRARIES
这种主要是 CydiaSubstrate
使用的注入方式, 首先将自身通过 pthread
远程线程注入到 launchd
. 之后通过 hook_posix_spawn_generic
这个函数为启动的 app, 添加 DYLD_INSERT_LIBRARIES
env.
2. LC_LOAD_DYLIB
修改 macho 文件结构, 写入依赖库.
__restrict
, optool
, yololib
3. dlopen
在 lldb 调试过程中很好用.
4. pthread
远程注入
http://bbs.pediy.com/thread-187833.htm
反注入 绕过
先对这些进行 hook, 这些都是存在 反注入的可能
|
|
这里使用 frida-script
进行检测.
|
|
附录
frida-core
的模块化封装太好了, 里面很多高端的姿势.
太高端, 简单介绍下.
|
|
上面简单介绍了流程. 具体在代码中. frida-core/src/darwin/frida-helper-backend-glue.m
, 大致流程就是在注入 launchd
利用 hook spawn
和 POSIX_SPAWN_START_SUSPENDED
, 在 __dyld_start
时, 在 dyld::initializeMainExecutable()
写入 load frida-agent 的指令, 进而实现优先加载 dylib.
|
|