iOS的逆向步驟一般為:
- 脫殼可執(zhí)行文件
- 使用IDE或Hopper反編譯分析代碼邏輯
- 使用class-dump加logify輸出調用日志
- 使用lldb動態(tài)調試
- 使用tweak或iOSOpenDev寫函數(shù)或方法鉤子
- 打包成deb插件或重簽名ipa
防御措施:
- mach-o中加入__restrict的section,防止dylib注入
- 調用ptrace防止動態(tài)調試
- 字符串使用異或加密防止反編譯被看到,從而跟蹤到關鍵函數(shù)
- 對類名方法名函數(shù)名加密
- 使用llvm混淆編譯增加代碼流程復雜度
- 使用md5文件自檢,防止對二進制文件直接進行修改
- 對可疑的越獄設備判斷,可查找關鍵文件比如debugserver
- 退出程序不要使用exit或abort可使用無限alloc等方式
- xcode配置strip編譯時刪除符號表