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 就是以这种方式执行脚本代码。

你可能感兴趣的:(IOS,逆向)