美文网首页
iOS逆向-越狱调试Ⅻ

iOS逆向-越狱调试Ⅻ

作者: 鼬殿 | 来源:发表于2019-12-23 18:58 被阅读0次

    Reveal

    Reveal是一款不需要重新运行项目,就可以动态调试程序UI界面的工具。

    安装

    1. (越狱)iPhone打开Cydia 搜索Reveal Loader并安装
    2. Mac安装Reveal version 4(8796)
    3. 手机的/Library 目录下新建目录
    $ mkdir RHRevealLoader
    
    1. 将电脑中的RevealServer可执行文件拷贝到iPhone目录中
    $scp -r –P 10010 RevealServer [root@localhost:/Library/RHRevealLoader/libReveal.dylib](mailto:root@localhost:/Library/RHRevealLoader/libReveal.dylib)
    

    help->Show Reveal Library in Finder->iOS Library-> RevealServer可执行文件

    5.重启手机,在设置中找到Reveal,将需要进行UI调试的程序的开关开启
    6.打开Reveal,手机打开运行Reveal允许调试的软件。就可以在Reveal上查看UI了。

    lz的越狱手机是11.3系统的,Reveal Loader没法用,😭

    debugserver

    平时开发中当我们给代码打断点,调试程序(lldb),这一切都离不开一个媒介debugserver,它负责将lldb指令给到app,然后app将结果通过debugserver传给lldb

    debugserver一开始是在Xcode中的,一旦手机连接Xcode信任后,debugserver便会安装到手机上

    但是缺少task_for_pid权限,通过Xcode安装的debugserver,只能调试自己的app,要想逆向别人的app,这种肯定是行不通的。前面说到,不能调试别人app的原因是权限不够,要想在没有源码的情况下调试别人的app,就需要修改debugserver权限。

    Xcode目录:

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/11.3/DeveloperDiskImage.dmg/usr/bin/debugserver

    iPhone目录:

    /Developer/usr/bin/debugserver

    给debugserver增加 task_for_pid权限

    1. 先把手机端的debugserver拷贝到Mac桌面上debugserver文件夹

    $ scp -P 10010 root@localhost:/Developer/usr/bin/debugserver xxxxx/Desktop/debugserver 
    debugserver      100% 4757KB  19.6MB/s   00:00  
    

    2. 通过ldid查看原来的权限

    $ cd xxxxx/Desktop/debugserver
    $ ldid -e ./debugserver 
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>com.apple.springboard.debugapplications</key>
        <true/>
        <key>com.apple.backboardd.launchapplications</key>
        <true/>
        <key>com.apple.backboardd.debugapplications</key>
        <true/>
        <key>com.apple.frontboard.launchapplications</key>
        <true/>
        <key>com.apple.frontboard.debugapplications</key>
        <true/>
        <key>run-unsigned-code</key>
        <true/>
        <key>seatbelt-profiles</key>
        <array>
            <string>debugserver</string>
        </array>
        <key>com.apple.diagnosticd.diagnostic</key>
        <true/>
        <key>com.apple.security.network.server</key>
        <true/>
        <key>com.apple.security.network.client</key>
        <true/>
    </dict>
    </plist>
    

    3. 输出权限到entitlement.plist文件中

    $ ldid -e ./debugserver > ./entitlement.plist
    

    4. 在entitlement.plist增加task_for_pid-allow,get-task-allow和platform-application权限


    5. 重签名debugserver并拷贝至手机的/usr/bin目录下
    $ ldid -Sentitlement.plist debugserver 
    $ ldid -e ./debugserver //查看重签名后的debugserver的权限
    $ scp -P 10010 debugserver root@localhost:/usr/bin/
    debugserver                                                         100% 4743KB  20.5MB/s   00:00  
    

    debugserver附加进程

    1. iPhone中开启debugserver服务

    $ debugserver  主机地址:端口号 –a  应用进程
    

    由于主机地址是当前手机,可以使用*代替
    端口号:启动server服务,开放端口,让远程的LLDB通过sever调试进程

    2. Mac上启动LLDB连接iPhone
    启动LLDB

    $ lldb
    

    连接debugserver

    (lldb)process connect connect://手机IP:服务端口号
    

    问题:在iOS11.3.1系统下碰到下面的问题,暂时还没有解决😭

    xxx-iPhone:/ root# /usr/bin/debugserver *:1235 -a "QQ"
    debugserver-@(#)PROGRAM:LLDB  PROJECT:lldb-900.3.57..2
     for arm64.
    Attaching to process QQ...
    error: failed to attach to process named: "" (os/kern) invalid argument
    Exiting.
    

    相关文章

      网友评论

          本文标题:iOS逆向-越狱调试Ⅻ

          本文链接:https://www.haomeiwen.com/subject/svftoctx.html