iOS的逆向步骤一般为:
- 脱壳可执行文件
- 使用IDE或Hopper反编译分析代码逻辑
- 使用class-dump加logify输出调用日志
- 使用lldb动态调试
- 使用tweak或iOSOpenDev写函数或方法钩子
- 打包成deb插件或重签名ipa
防御措施:
- mach-o中加入__restrict的section,防止dylib注入
- 调用ptrace防止动态调试
- 字符串使用异或加密防止反编译被看到,从而跟踪到关键函数
- 对类名方法名函数名加密
- 使用llvm混淆编译增加代码流程复杂度
- 使用md5文件自检,防止对二进制文件直接进行修改
- 对可疑的越狱设备判断,可查找关键文件比如debugserver
- 退出程序不要使用exit或abort可使用无限alloc等方式
- xcode配置strip编译时删除符号表
网友评论