iOS逆向工具、命令總結

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/

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容