plutil
plutil是xcode自帶的對.plist文件操作的工具
驗證plist文件有效性
plutil -lint example.plist
查看ipa文件的bundle identifier
? live4iphone.app plutil -p Info.plist | grep CFBundleIdentifier
輸出結果:
"CFBundleIdentifier" => "com.tencent.live4iphone"
查看可執(zhí)行文件:
? live4iphone.app plutil -p Info.plist | grep CFBundleExecutable
"CFBundleExecutable" => "live4iphone"
查看本地化的字符串:
? en.lproj plutil -p Localizable.strings
dpkg
deb是越獄開發(fā)安裝包的標準格式,dpkg-deb是一個用于操作deb文件的工具,用此工具可以打包為deb,或者安裝deb包
查看deb包結構
? packages dpkg -c com.qding.firsttweak_0.0.1-9+debug_iphoneos-arm.deb
class-dump
1、定位App的可執(zhí)行文件(進程名)
pwd
/Users/wuhaiwei/Desktop/ipaFile/Payload/qding.app
plutil -p Info.plist | grep CFBundleExecutable
"CFBundleExecutable" => "qding"
2、將Mach-o文件的頭文件導入指定路徑
class-dump -S -s -H qding -o ~/Desktop/headerFile
3、輸出的頭文件中包含函數(shù)的偏移前地址
? WeChatMach_O class-dump -HA WeChat -o ~/Desktop/weChatHeader
Logify (靜態(tài)分析工具)
Logify是一種實用工具,可以將類的頭文件(.h文件)作為輸入,并生成MobileSubstrate文件(.xm文件)。
作用:能自動Hook該類所有的方法,并生成打印日志信息代碼,方便開發(fā)人員看到在使用過程中調用了某些方法。
logify.pl BaseMsgContentViewController.h > Tweak.xm
idevicesyslog (iOS日志查看工具)
是libimobiledevice下的一個子工具,可以實時追蹤iOS設備日志。
idevicesyslog | grep "BaseMsgContentViewController"
usbmuxd
由于Mac上只支持4位的端口號,所以需要把iPhone的默認端口22映射到Mac上,相當于建立一個Mac和iPhone之間的通道。打開終端,執(zhí)行:
iproxy 10088 22
這時終端會顯示 waiting for connection 這表示我們已經(jīng)搭建好Mac和iPhone的通道,現(xiàn)在我們直接和本地的12345端口通信就能和iPhone通信了。保持上一個命令顯示的狀態(tài),新建個終端執(zhí)行:
ssh -p 10088 root@127.0.0.1
輸入ssh密碼即可實現(xiàn)ssh連接
SSH
1、從ios copy文件到mac
scp root@10.39.72.155:/System/Library/CoreServices/SpringBoard.app/SpringBoard Desktop/SpringBoard
2、從mac copy文件到ios
scp -r Desktop/RevealServer.framework root@192.168.0.102:/Library/Frameworks
3、鏈接SSH
ssh root@10.39.72.155
THEOS
普通情況下安裝需要指定手機的ip地址進行安裝:
#THEOS_DEVICE_IP = 10.39.72.36
很明顯比較低效,尤其是ip地址經(jīng)常變換的局域網(wǎng)里面。
也可以通過usb的方式進行安裝,指定本地ip、端口號即可
export THEOS_DEVICE_IP=127.0.0.1 #本機IP地址
export THEOS_DEVICE_PORT=10088 #本機端口號
然后開啟iproxy端口代理:
iproxy 10088 22
具體安裝命令都是
make package install
當然也可以將
export THEOS_DEVICE_IP=127.0.0.1 #本機IP地址
export THEOS_DEVICE_PORT=10088 #本機端口號
配置到環(huán)境變量里面,就不用每個tweak都復制這兩行代碼
tweak中包含的資源文件需要放置在特定的路徑下,tweak工程下創(chuàng)建layout目錄,如果把資源文件放置layout目錄下,安裝后資源文件在iPhone的“/”(根目錄)下,
所以資源文件一般放在:
/Library/PreferenceLoader/Preferences/firsttweak
對資源文件的引用需要按路徑引用:
[UIImage imageWithContentsOfFile:@"/Library/PreferenceLoader/Preferences/firsttweak/icon.png"]
cycript
cycript官網(wǎng)
Cycript是一個理解Objective-C語法的javascript解釋器,它能夠掛鉤正在運行的進程,能夠在運行時修改應用的很多東西。
由于目前 iOS 12.2中cycript不可用,替換用cyrun可用
加載注入cycript
cyrun -n qding -e cyrun -b com.qding.www -e
卸載
cyrun -n qding -d cyrun -b com.qding.www -d
加載和自動卸載,退出cycript時自動殺掉App并卸載
cyrun -x qding -e -d -f
退出cycript
control + D
查看app的層級結構
UIApp.keyWindow.recursiveDescription().toString()
hook類的實例方法
SBUIController.prototype['handleHomeButtonDoublePressDown'] = function(){};
debugserver
LLDB是Xcode內(nèi)置的動態(tài)調試工具。debugserver運行在iOS上,他作為服務端實際執(zhí)行LLDB傳過來的命令,顯示給用戶,即所謂的”遠程調試”
附加進程(接受任意192.168.0.100對端口2222的訪問,需要先運行app)
kogatsu:~ root# debugserver 192.168.0.100:2222 -a "qding"
LLDB
進入lldb環(huán)境
? ~ /Applications/Xcode.app/Contents/Developer/usr/bin/lldb
連接手機
(lldb) process connect connect://192.168.0.102:2222
查看對應進程內(nèi)的模塊兒偏移量、偏移后地址
(lldb) image list -o -f | grep SpringBoard
[ 0] 0x0000000002b2c000 /System/Library/CoreServices/SpringBoard.app/SpringBoard(0x0000000102b2c000)
其中第二列是ASLR偏移量,最后面括號內(nèi)是偏移后地址
這里需要著重說一下通過usbmuxd進行連接然后進行l(wèi)ldb調試
在iPhone端:
debugserver 127.0.0.1:2222 -a WeChat
在mac端:
首先要另起一個終端進行端口映射:
iproxy 2222 2222
然后進行l(wèi)ldb連接調試
? ~ lldb
(lldb) process connect connect://localhost:2222
沒有了各種ip地址,簡直爽的不要不要的
簽名
列出可簽名證書, 找到 mac 上面已經(jīng)安裝的證書
$ security find-identity -v -p codesigning
使用本機安裝的開發(fā)者證書為 dumpecrypted.dylib 簽名
? dumpdecrypted codesign --force --verify --verbose --sign "iPhone Developer: chunyu zhao (6QGT7NS2J4)" dumpdecrypted.dylib
查看二進制文件是否脫殼
//cryptid 0(砸殼) 1(未砸殼)
otool -l ~/Desktop/ipaFile/Payload/qding.app/qding | grep crypt
cryptoff 16384
cryptsize 19611648
cryptid 0
cryptoff 16384
cryptsize 21921792
cryptid 0
脫殼工具
下載源:apt.wxhbts.com
CrackerXI, 應用未啟動狀態(tài)脫殼
脫殼完成之后文件路徑:
/var/mobile/Documents/CrackerXI
tweak安裝后路徑
/Library/MobileSubstrate/DynamicLibraries/