iOS逆向【动态库的注入原理】(基于修改Mach-O 的Load Command、利用环境变量DYLD_INSERT_LIBRARIES、在挂载的进程上建立一个挂起的线程,而后在这个线程里申请一片用)

  • 动态库的注入原理:
    • 一个是基于修改Mach-O 的Load Commands,即经过修改可执行文件的Load Commands来实现的. 在Load Commands中增长一个LC_LOAD_DYLIB , 写入dylib路径。Usage: insert_dylib dylib_path binary_path [new_binary_path]
    • 一个是利用环境变量DYLD_INSERT_LIBRARIES,例如使用它进行dumpdecrypted(补充:Clutch 经过posix_spawnp生成一个新的进程,而后暂停进程并dump内存)
    • 另外一个是在挂载的进程上建立一个挂起的线程, 而后在这个线程里申请一片用于加载动态库的内存,而后恢复线程,动态库就被注入(经过 taskfor_pid函数获取目标进程句柄,而后经过在进程内建立新线程并执行本身的代码。) cycript 就是以这种方式执行脚本代码。