没有合适的资源?快使用搜索试试~ 我知道了~
首页iOS平台的应用程序调试与分析.pdf
资源详情
资源评论
资源推荐

iOS 平台的应用程序调试与分析
作者:zhuliang
转载请保证文章完整并注明来自看雪或 cd-team
本文阐述如何在 iOS 平台上对应用程序进行调试与分析,
旨在指导新手分析 iOS 程序,高手请无视。内容包括软件硬件
的准备、代码的解密、符号信息的获取、用 gdb 调试等,最
后以京东 LeBook 为例子进行演示。
1.为什么要进行调试与分析
研究 iOS 程序有很多用处,比如:
找 bug 或者漏洞,想知道某程序有没有漏洞或者 bug。
某程序能实现某功能,我想知道如何实现,如 ios6 发短信功
能,还有比较时髦的 iPhone5 通话录音功能。
对 iOS 程序进行 DIY 扩展功能,比如曾半仙前辈的作弊插件
http://bbs.pediy.com/showthread.php?t=163435,就是一个
例子。2011 年的时候我也实现了类似的功能,做了一个
iPhone 版的“欢乐斗地主”的记牌器功能。有朋友问到如何
实现的,主要就是 hook 了 recv 函数,从封包得到想要的信
息,经过处理得知 54 张牌还剩什么牌。
总的来说对 iOS 程序进行调试与分析的目的和调试与分析
Windows 平台程序的目的是一样的。
2. 调试与分析的准备工作

iOS 的封闭性极大地增大研究它的难度。为使系统更加安全,
iOS 引入了很多安全机制;如代码加密,使得分析前先要解密
代码,SandBox(沙盒),code signing(代码签名),使得
不能运行未签名的代码。这些安全机制使得研究它的难度比
Linux/Windows 要大。
尽管这样,并不能阻挡我们前进的脚步。
必要的硬件准备:一个越狱的设备,最好是 iPhone
越狱是必要的,因为只有越狱才能运行非 AppStore 上的
软件。
必要的软件准备:在 Cydia 里安装下面的软件
1.OpenSSH,OpenSSH 是 Linux 下常用的服务,装上后设备
可充当服务 SSH 服务端
2.GNU Debugger(gdb)调试工具
3.adv-cmds(ps 命令)
4. darwin cc tools (otools)
5. Link Identity Editor (ldid)
PC 端安装 SSH Secure Shell Client 或 putty 等 SSH 客户端软件,
以便能通过 SSH 建立到设备的连接。
Ida pro,该软件搞过逆向的都熟悉,静态分析功能很强大,
特别是大于或等于 6.2 的版本,能识别 Objective-C 结构,能
把 Objective-C 函数名显示如下图:

Hopper Disassembler,该软件是刚出来没多久的,我还没用
过,据说功能也很强大。不管怎么说 ida pro 是太贵了,一般
个人很少买得起,这时候 Hopper Disassembler 是另一个选择。
最后是 class-dump-z,在没有上面两个工具的情况下用它能获
得符号信息。
有了软硬件的准备,便可以开始调试了。
1.PC 端运行 SSH 客户端,连接到设备,输入用户名:root,
默认密码:alpine,第一次连接上去后建议用 passwd 命令改
掉默认密码,以防黑客通过局域网入侵。
2.在设备上运行想调试的程序,如 iRead,运行命令 ps –ax
可以看到所有运行的进程 id,gdb –p pid 这样就可以调试指
定进程(gdb –p 10110)。
另外,可以通过 otool –l | grep crypt 输出可知道已加密代码
的位置。有这些准备后,我们可以先运行下面命令测试一下。
SSH Secure Shell 3.2.9 (Build 283)
Copyright (c) 2000-2003 SSH Communications Security Corp -
http://www.ssh.com/
This copy of SSH Secure Shell is a non-commercial version.
This version does not include PKI and PKCS #11 functionality.
MMs-iPod:~ root# passwd

Changing password for root.
New password:
Retype new password:
MMs-iPod:~ root# ps -ax
PID TTY TIME CMD
……(省略部分无关记录)
12416 ?? 0:02.52 /var/mobile/Applications/4DFD17D1-
39AC-4F10-8AB8-3A4CB99E9E77/iRead.app/iRead
……(省略部分无关记录)
MMs-iPod:~ root# gdb -p 12416
/usr/bin/gdb: line 55: awk: command not found
warning: unrecognized host cpusubtype , defaulting to
host==armv7.
GNU gdb 6.3.50-20050815 (Apple version gdb-1708 +
reverse.put.as patches v0.4) (Mon Apr 16 00:53:47 UTC 2012)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public
License, and you are
welcome to change it and/or distribute copies of it under
certain conditions.
Type "show copying" to see the conditions.

There is absolutely no warranty for GDB. Type "show
warranty" for details.
This GDB was configured as "arm-apple-darwin".
/private/var/root/12416: No such file or directory
Attaching to process 12416.
Reading symbols for shared libraries . done
Reading symbols for shared
libraries ................................................................................................................
............................. done
Reading symbols for shared libraries + done
0x39556eb4 in mach_msg_trap ()
(gdb) quit
The program is running. Quit anyway (and detach it)? (y or n)
y
Detaching from process 12416.
MMs-iPod:~ root# otool -l
/var/mobile/Applications/4DFD17D1-39AC-4F10-8AB8-
3A4CB99E9E77/iRead.app/iRead | grep crypt
cryptoff 8192
cryptsize 8601600
cryptid 1
3.解密代码并用 IDA 和 gdb 分析
剩余22页未读,继续阅读














安全验证
文档复制为VIP权益,开通VIP直接复制

评论1