iOS平台的应用程序调试与分析
时间:2026-01-22
时间:2026-01-22
iOS平台的应用程序调试与分析
zhuliang 黄彩洪 huang-caihong@http://www.77cn.com.cn 2011年10月15 重庆
iOS平台的应用程序调试与分析1 2 3为什么进行调试与分析
如何进行调试与分析
用IDA分析与符号获取
1.1为什么进行调试与分析
找Bug? 想知道某功能如何实现? 有没有漏洞? 对程序进行DIY扩展功能? 目的和Windows下一样
iOS平台的应用程序调试与分析1 2 3为什么进行调试与分析
如何进行调试与分析
用IDA分析与符号获取
2.1 iOS的封闭性增大研究它的难度 SandBox(沙盒) code signing(代码签名) 研究它的难度比Linux/Windows要大
2.2 必要的硬件准备 一个越狱的设备,最好是iPhone 越狱的必要的,因为只有越狱才能装非 AppStore上的软件。 装上必要的软件
2.3 必要的软件准备 在Cydia里安装下面的软件 1.OpenSSH,OpenSSH是Linux下常用的服 务,装上后设备可充当服务SSH服务端 2.GNU Debugger(gdb)调试工具 3.adv-cmds(ps命令) PC机端安装SSH Secure Shell Client或putty等 SSH客户端软件
2.4 开始调试 PC端运行SSH客户端,连接到设备 用户名:root,默认密码:alpine 运行想调试的程序,如QQGame 运行命令ps –ax可以看到所有运行的进程id gdb –p 加进程id可调试指定进程 从otool –l 输出可知道代码已加密
iOS平台的应用程序调试与分析1 2 3为什么进行调试与分析
如何进行调试与分析
用IDA分析与符号获取
3.1 用IDA pro分析 去除DRM(Digital Rights Management) 去除DRM才能用IDA进行分析。 代码是怎样被加密的? 如何去掉DRM保护? 方法1麻烦,但便于理解过程 方法2是全自动化的
DRM破解基本原理 通过输入信息在var/mobile/Applications下定位 待破解软件所在位置 复制软件目录下所有的文件到一个临时目录 用工具otool分析程序主文件,找出cryptsize和 cryptid 运行待破解程序,用gdb附加到目标进程
因为程序已经运行,所以此时是解密状态。 dump当前未加密的内存 将dunp结果输出到一个bin文件,退出gdb调试 程序
DRM破解基本原理 将主程序文件的cryptid字段改为0,改加密 状态为未加密 将dump出来的bin文件中的未加密内存的内 容覆盖到原主程序文件的相应位置 对主程序签名 删除一些垃圾文件 打包IPA
全自动化的破解 在Cydia里安装Crackulous Crackulous是全自动化的图形界面的破解 程序。
3.2 获取符号信息便于调试 利用class-dump-z获取更多的符号信息 class-dump-z.exe –u armv6 –A –a QQGame class-dump-z.exe –u armv6 –A –a QQGame –H –o C:\ -u armv6这个参数比较重要class-dump和class-dump-x 不支持-u armv6
感谢 感谢会务组 感谢主
、承办方 感谢陈小波
The End Q&A