首页
社区
课程
招聘
6
[原创]iOS平台的应用程序调试与分析
发表于: 2013-4-2 17:09 81434

[原创]iOS平台的应用程序调试与分析

2013-4-2 17:09
81434

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


    [培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

    上传的附件:
    收藏
    免费 6
    支持
    分享
    赞赏记录
    参与人
    雪币
    留言
    时间
    伟叔叔
    为你点赞~
    2024-5-31 07:31
    心游尘世外
    为你点赞~
    2024-5-31 04:25
    QinBeast
    为你点赞~
    2024-5-31 04:17
    飘零丶
    为你点赞~
    2024-4-3 00:10
    shinratensei
    为你点赞~
    2024-2-5 02:45
    PLEBFE
    为你点赞~
    2023-3-7 00:35
    最新回复 (56)
    雪    币: 2558
    活跃值: (4273)
    能力值: ( LV13,RANK:540 )
    在线值:
    发帖
    回帖
    粉丝
    2
    学习先~~
    2013-4-2 17:33
    0
    雪    币: 24
    活跃值: (11)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    3
    扫了一下,文章不错,帮zhuliang顶了~~
    2013-4-2 17:38
    0
    雪    币: 56043
    活跃值: (21220)
    能力值: (RANK:350 )
    在线值:
    发帖
    回帖
    粉丝
    4
    文章很精彩, zhuliang辛苦了!
    2013-4-2 17:53
    0
    雪    币: 203
    活跃值: (10)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    5
    小板凳,必须支持啊,学习大大的经验
    2013-4-2 18:12
    0
    雪    币: 1040
    活跃值: (41)
    能力值: ( LV4,RANK:50 )
    在线值:
    发帖
    回帖
    粉丝
    6
    感谢分享。/
    2013-4-2 18:46
    0
    雪    币: 310
    活跃值: (159)
    能力值: ( LV12,RANK:200 )
    在线值:
    发帖
    回帖
    粉丝
    7
    好文章,感谢楼主分享
    2013-4-2 19:27
    0
    雪    币: 589
    活跃值: (119)
    能力值: ( LV11,RANK:190 )
    在线值:
    发帖
    回帖
    粉丝
    8
    先回帖再学习
    2013-4-2 21:13
    0
    雪    币: 2166
    活跃值: (11)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    9
    刚看了一半,感觉很不错,特来感谢下
    另外羡慕下楼主,用地起ida 6.4
    2013-4-2 22:10
    0
    雪    币: 617
    活跃值: (1597)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    10
    很好,不错。。。继续学习。。。
    2013-4-2 23:32
    0
    雪    币: 102429
    活跃值: (201684)
    能力值: (RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    11
    Thanks for share.
    2013-4-3 00:12
    0
    雪    币: 178
    活跃值: (11)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    12
    赞一个,算是比较详尽的文章了
    2013-4-3 00:14
    0
    雪    币: 14983
    活跃值: (5300)
    能力值: ( LV15,RANK:880 )
    在线值:
    发帖
    回帖
    粉丝
    13
    非常不错的文章,灰常详细啊。也解决了我的一些小问题,表示感谢。
    2013-4-3 11:11
    0
    雪    币: 415
    活跃值: (71)
    能力值: ( LV4,RANK:50 )
    在线值:
    发帖
    回帖
    粉丝
    14
    赞一个,算是比较详尽的文章了 。
    2013-4-3 12:36
    0
    雪    币: 227
    活跃值: (120)
    能力值: ( LV10,RANK:160 )
    在线值:
    发帖
    回帖
    粉丝
    15
    围观顶起。感谢~
    2013-4-3 15:14
    0
    雪    币: 204
    活跃值: (2439)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    16
    非常好的文章,希望版主多多写类似的文章,期待 版主下篇文章
    2013-4-3 15:32
    0
    雪    币: 1585
    活跃值: (182)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    17
    围观顶起。感谢~
    2013-4-3 22:02
    0
    雪    币: 433
    活跃值: (1885)
    能力值: ( LV17,RANK:1820 )
    在线值:
    发帖
    回帖
    粉丝
    18
    paper很详细,支持一个!
    2013-4-3 22:36
    0
    雪    币: 1637
    活跃值: (1497)
    能力值: (RANK:50 )
    在线值:
    发帖
    回帖
    粉丝
    19
    感谢分享123456
    2013-4-4 10:58
    0
    雪    币: 1098
    活跃值: (193)
    能力值: (RANK:210 )
    在线值:
    发帖
    回帖
    粉丝
    20
    感谢钱老师亲自捧场。
    2013-4-4 11:03
    0
    雪    币: 215
    活跃值: (10)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    21
    先收藏,有空再欣赏
    2013-4-4 14:55
    0
    雪    币: 190
    活跃值: (40)
    能力值: ( LV3,RANK:20 )
    在线值:
    发帖
    回帖
    粉丝
    22
    感谢楼主大大分享
    2013-4-4 16:07
    0
    雪    币: 617
    活跃值: (1597)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    23
    发现 添加了这句:set inferior-auto-start-dyld off ,还没断下rb doModInitFunctions

    就Program received signal SIGABRT, Aborted
    2013-4-4 16:18
    0
    雪    币: 1098
    活跃值: (193)
    能力值: (RANK:210 )
    在线值:
    发帖
    回帖
    粉丝
    24
    这个是gdb的问题。你添加http://cydia.radare.org/源,从里面找到gdb安装,再试试。
    2013-4-4 19:31
    0
    雪    币: 617
    活跃值: (1597)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    25
    我选的是这个源,gdb1708,但结果还是一样。
    2013-4-4 23:20
    0
    游客
    登录 | 注册 方可回帖
    返回

    账号登录
    验证码登录

    忘记密码?
    没有账号?立即免费注册