0x00 背景
大家知道,在mac上用safari的web inspector可以远程dedug iphone 的safari或者app的内置webview。iphone的safari是任何时候都可以被debug(前提当然是iphone的设置允许了web inspector),但是app内置的webview并不是总能被debug的,如果app是release build的,那么它内置的webview就不能被debug。
为了解决这个问题,如果你有一台越狱了的iphone,则可以通过重新打包ipa文件使得app内置的webview可以被debug。
0x01 先决条件
- 越狱的iphone
- 安装appsync unified这个tweak,为了绕过iphone的签名认证
- ifunbox
0x02 方法
- 首先使用ifunbox从iphone中获得app的安装包ipa文件,如果ifunbox不工作,则自己从iphone的
/var/mobile/Containers/Bundle/Application/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX/TargetApp.app
中scp。或者如果能找到的话,从网上下载该app的ipa文件也行。 - 解压缩ipa文件,一般来说你会看到一个叫Payload的文件夹。
- 创建一个名为entitlements.plist的文件,文件内容如下:
<?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>run-unsigned-code</key> <true/> <key>get-task-allow</key> <true/> <key>task_for_pid-allow</key> <true/> </dict> </plist>
- 给你的app的dwarf (binary)文件签名:
codesign -s - --entitlements entitlements.plist -f Payload/TargetApp.app/TargetAppBin"
- 重新把Payload文件加压缩,并把扩展名从zip改为ipa
- 使用ifunbox安装ipa文件即可。
0x03 注意点
-
TargetApp.app一定要放在名为Payload的文件夹中,然后把Payload文件夹整个压缩。如果不命名为Payload,则无法安装压缩包。
-
如何列出自己的identity:
security find-identity -v -p codesigning