iOS逆向-越狱调试Ⅻ

2019-12-23  本文已影响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.
上一篇下一篇

猜你喜欢

热点阅读