如果你渴望成為一名精通iOS逆向開發(fā)的工程師湿故,但卻缺乏自己的工具集柠偶,那么在著手實戰(zhàn)開發(fā)之前莹规,提前準(zhǔn)備好逆向開發(fā)工具是必不可少的请梢。接下來正歼,我們將逐一介紹這些工具的安裝和使用方法辐马。
1.工具盛宴:從pp助手到MonkeyDev,全面解析
- pp助手
- go2shell
- iTerm2
- Alfred+32
- XtraFinder
- iFunBox
- IDA Pro
- app-signer
- MachOView
- Cycript
- theos
- MonkeyDev
12款工具局义,帶來意想不到的驚喜喜爷。接下來,逐一細(xì)細(xì)品味萄唇。
絕對沒錯檩帐。擁有這些工具能讓你深入了解應(yīng)用的內(nèi)部結(jié)構(gòu),甚至能夠修改其行為另萤。但是湃密,正因為如此,加強(qiáng)應(yīng)用的安全防護(hù)變得尤為重要四敞。通過采取適當(dāng)?shù)陌踩胧┓涸矗热缂用堋⒋a混淆忿危、權(quán)限控制等达箍,可以有效地防止應(yīng)用攻擊。在逆向開發(fā)的過程中铺厨,保護(hù)用戶數(shù)據(jù)和隱私始終是首要任務(wù)缎玫。
2.匯編逆向工具安裝
1.pp助手
- 1.你可以從官方網(wǎng)站下載軟件,下載后解滓,只需簡單安裝即可赃磨。
- 2.安裝pp助手的目的是為了方便下載已經(jīng)砸殼的應(yīng)用程序。在這里不詳細(xì)介紹洼裤,我們將在后續(xù)實戰(zhàn)階段進(jìn)行詳細(xì)講解邻辉。
-
3.下載IPA包
- 這些IPA包已經(jīng)是越獄過的,無需再進(jìn)行砸殼操作逸邦。
- 我們將在MonkeyDev項目開發(fā)中使用這些IPA包(先進(jìn)行了解)恩沛。
- 同時,也可以通過終端程序進(jìn)行安裝和調(diào)試(也是先進(jìn)行了解)缕减。
2.go2shell-一款懶人命令行必備神器
1.打開軟件,把Go2Shell拖入Applications中
-
2.打開Go2Shell
-
3.點擊install Go2Shell,然后會在Finder中出現(xiàn),如下圖
4.這樣的工具讓命令行操作更加高效和便捷雷客,無需頻繁地切換目錄,大大提升了工作效率桥狡。
-
5.使用
使用這些工具可以直接進(jìn)入所在目錄搅裙,無需使用cd命令皱卓,是懶人命令行的必備神器。
點擊go2shell快捷工具后部逮,直接打開終端娜汁,并且自動跳轉(zhuǎn)到指定目錄。
通過ls命令兄朋,我們可以立即查看目錄下的內(nèi)容掐禁,非常方便。
這種操作方式確實很方便颅和,讓人意外而驚喜傅事!
3. iTerm2
下載地址:https://www.iterm2.com/downloads.html
1.下載好應(yīng)用后,只需將其拖到應(yīng)用文件夾即可開始使用峡扩。
2.iTerm2是一款基于OS X平臺的開源免費(fèi)終端工具蹭越,許多人使用它替代了原生的Terminal,因為它功能更強(qiáng)大教届、更靈活响鹃。
- 重點:(在這里,我們將介紹如何使用終端連接越獄設(shè)備案训。)
重點
無線連接:
安裝OpenSSH
1.打開WiFi設(shè)置买置,找到你的IP地址。
2.使用終端執(zhí)行命令:ssh root@你的IP地址(默認(rèn)密碼是alpine)萤衰。
-
3.進(jìn)行終端連接堕义,愉快地開始使用吧!
我配置了公鑰脆栋,所以只需輸入連接命令ssh root@192.168.3.46倦卖,即可直接連接。如果你沒有配置公鑰椿争,則需要輸入默認(rèn)密碼怕膛。
重點
有線連接:
我們要用到的工具是一個python腳本工具和2個shell腳本:
-
iPhone的22端口映射到Mac本地的10000端口
- 是否繼續(xù)連接?
yes
-
連接成功,拿到root權(quán)限.(如果第一次連接是需要默認(rèn)密碼)
重點
免密登錄:
-
在mac下-找到.ssh下的公鑰
-
將客戶端/.ssh/id_rsa.pub中的內(nèi)容自動添加到服務(wù)器的/.ssh/authorized_keys文件末尾,并將其上傳到手機(jī)的~/.ssh目錄中秦踪。
下次連接手機(jī)時褐捻,即可實現(xiàn)免密登錄。
4. Alfred+32
1.將Alfred 3 拖入應(yīng)用程序文件夾中椅邓。
2.打開圖中的Alfred 3 KG柠逞,點擊Patch,彈出對話框景馁,找到Alfred 3.app并打開板壮。
-
3.點擊Save,提示“License information saved successfully”合住。
4.完成后绰精,你就可以愉快地使用了撒璧。
5.使用快捷鍵 command + 空格 可以啟動Alfred 3。
-
6.開始享受Alfred 3帶來的便利吧笨使!
以上兩個例子只是冰山一角卿樱,還有許多功能等待你去探索!
5. XtraFinder
下載地址: http://www.trankynam.com/xtrafinder/
(讓你的 Mac 資源管理器變得更加強(qiáng)大)
- 根據(jù)個人需求硫椰,進(jìn)行個性化配置繁调。
6.iFunBox
1.介紹
- iFunBox是一款小巧的iPhone文件管理軟件
- 界面類似于Windows資源管理器,以簡練時尚的窗口方式瀏覽和管理iPhone最爬、iPad涉馁、iPod touch上的文件和目錄门岔。
- 既可以在手機(jī)與電腦之間同步傳遞數(shù)據(jù)爱致,使你輕松上傳電影、音樂寒随、電子書糠悯、桌面、照片以及應(yīng)用程序妻往。
- 還能夠把你的iPhone變成一個U盤互艾,大量信息隨身攜帶,但也需要iTunes支持讯泣。
2.iFunBox是一款老牌iOS文件管理工具,可以非常方便地操作iOS中的文件.
- 這是我的越獄設(shè)備:iPhone 5s纫普,運(yùn)行iOS 7.1.1。 (建議大家準(zhǔn)備iOS 8.3.3的越獄設(shè)備)
- 在紅色箭頭下好渠,可以查看到iPhone的系統(tǒng)文件昨稼。
-
注意
: 越獄iOS設(shè)備必須安裝“Apple File Conduit 2”,這樣iFunBox才能瀏覽iOS的全系統(tǒng)文件拳锚。
7. IDA Pro--匯編程序員的生命
交互式反匯編器專業(yè)版(Interactive Disassembler Professional)假栓,人們常稱其為IDA Pro,或簡稱為IDA霍掺。
是目前最棒的一個靜態(tài)反編譯軟件匾荆,為眾多[0day]世界的成員和[ShellCode]安全分析人士不可缺少的利器!
IDA Pro是一款交互式的杆烁,可編程的牙丽,可擴(kuò)展的,多處理器的兔魂,交叉[Windows]或[Linux] [WinCE] [MacOS]平臺主機(jī)來分析程序烤芦, 被公認(rèn)為最好的逆向工程利器。
只需要next進(jìn)行安裝,然后啟動,就可以分析自己的匯編程序了.
使用:
-
1.創(chuàng)建項目
-
2.找到可執(zhí)行文件
Mach-O
-
3.IDA打開可執(zhí)行文件
-
4.找到main編譯的匯編代碼
5.分析匯編代碼
; int __cdecl main(int argc, const char **argv, const char **envp)
public _main
_main proc near
var_1C= dword ptr -1Ch
var_18= dword ptr -18h
var_14= dword ptr -14h
var_10= qword ptr -10h
var_4= dword ptr -4
push rbp
mov rbp, rsp
sub rsp, 20h
lea rax, cfstr_D ; "%d"
mov [rbp+var_4], edi
mov [rbp+var_10], rsi
mov [rbp+var_14], 1
mov [rbp+var_18], 2
mov edi, [rbp+var_14]
add edi, [rbp+var_18]
mov [rbp+var_1C], edi
mov esi, [rbp+var_1C]
mov rdi, rax
mov al, 0
call _NSLog
xor eax, eax
add rsp, 20h
pop rbp
retn
_main endp
-
6.可以通過偽代碼分析,恢復(fù)main函數(shù)下代碼的實現(xiàn)入热。這樣可以了解代碼的執(zhí)行流程和結(jié)構(gòu)拍棕。
8.ios-app-signer-master--ipa文件重簽名
下載地址:http://dantheman827.github.io/ios-app-signer/
1.介紹
- 一般情況下晓铆,我們上線的應(yīng)用都需要打包生成IPA文件。
- (在這里只作為了解绰播,值得注意的是骄噪,如果你想要對從App Store下載的IPA進(jìn)行重簽名,必須進(jìn)行砸殼操作蠢箩,這個實戰(zhàn)會在后面詳細(xì)介紹链蕊。)
- 從圖中可以看到,我們可以導(dǎo)入IPA文件谬泌,選擇你的配置文件滔韵,然后點擊Start即可。
- 接著會生成一個新的IPA文件掌实,這就表示重簽名成功了陪蜻。
- 有了IPA文件,我們就可以通過終端將應(yīng)用安裝到設(shè)備上贱鼻。
2.使用
以上以QQ音樂.iPA為例:
- 1.選擇下載好的QQ音樂.iPA文件宴卖,并進(jìn)行信息配置。
- 2.點擊Start按鈕邻悬,選擇保存目錄症昏。
- 3.將重簽名后的IPA文件保存到指定目錄進(jìn)行查看。
通過以上三步父丰,我們完成了對iPA文件的重簽名操作肝谭。
有兩種方法可以安裝重簽名后的應(yīng)用:
- 1.我們可以使用MonkeyDev安裝項目進(jìn)行嘗試。(MonkeyDev的使用介紹在第12個工具處)
- 2.我們可以使用終端進(jìn)行安裝蛾扇。(具體操作會在后續(xù)進(jìn)行詳細(xì)講解)
9.MachOView
MachOView源碼地址:https://github.com/gdbinit/MachOView
Mach-O格式全稱為Mach Object文件格式的縮寫攘烛,是mac上可執(zhí)行文件的格式.
mach-o文件類型分為:
1、Executable:應(yīng)用的主要二進(jìn)制
2屁桑、Dylib Library:動態(tài)鏈接庫(又稱DSO或DLL)
3医寿、Static Library:靜態(tài)鏈接庫
4、Bundle:不能被鏈接的Dylib蘑斧,只能在運(yùn)行時使用dlopen( )加載靖秩,可當(dāng)做macOS的插件
5、Relocatable Object File :可重定向文件類型-
使用:
在iDA中導(dǎo)出的可執(zhí)行文件,依然可以用MachOView進(jìn)行打開.
如圖,Mach64 Header(64位架構(gòu)),選中mach header 可以看到每個類的cpu架構(gòu)信息竖瘾、load commands數(shù)量 沟突、load commandssize 、file type等信息
- 64位和32位架構(gòu)有哪些不同?
32位架構(gòu):
struct mach_header {
uint32_t magic; /* mach magic number identifier */
cpu_type_t cputype; /* cpu specifier */
cpu_subtype_t cpusubtype; /* machine specifier */
uint32_t filetype; /* type of file */
uint32_t ncmds; /* number of load commands */
uint32_t sizeofcmds; /* the size of all the load commands */
uint32_t flags; /* flags */
};
64位架構(gòu):
struct mach_header_64 {
uint32_t magic; /* mach magic number identifier */
cpu_type_t cputype; /* cpu specifier */
cpu_subtype_t cpusubtype; /* machine specifier */
uint32_t filetype; /* type of file */
uint32_t ncmds; /* number of load commands */
uint32_t sizeofcmds; /* the size of all the load commands */
uint32_t flags; /* flags */
uint32_t reserved; /* reserved */
};
- 32位和64位架構(gòu)的頭文件區(qū)別是64位多了一個保留字段(reserved)
- magic:魔數(shù)捕传,用于快速確認(rèn)該文件用于64位還是32位
- cputype:CPU類型惠拭,比如 arm
- cpusubtype:對應(yīng)的具體類型,比如arm64、armv7
- filetype:文件類型职辅,比如可執(zhí)行文件棒呛、庫文件、Dsym文件
10.Cycript
Cycript是由saurik推出的一款腳本語言,可以看作是Objective-JavaScript.
我們首先下載sdk
-
下載后的SDK文件應(yīng)該放在/opt目錄下域携,與theos和MonkeyDev同級目錄簇秒。
-
切換到/opt/cycript目錄下,執(zhí)行cycript命令秀鞭,即可進(jìn)入Cycript環(huán)境趋观。(在圖中,可以進(jìn)行加法計算锋边、輸出等操作)
注意
:進(jìn)入Cycript環(huán)境后皱坛,需要連接越獄設(shè)備才能進(jìn)行操作。
-
在進(jìn)入Cycript環(huán)境之前豆巨,請確保已配置了環(huán)境變量剩辟,否則無法進(jìn)入。
-
配置環(huán)境變量
-
只需在任何地方啟動終端搀矫,即可進(jìn)入Cycript環(huán)境抹沪。
在這里,你已經(jīng)成功配置了Mac系統(tǒng)下的Cycript環(huán)境瓤球。
- 接下來我們將安裝iOS上的Cycript。
- 我們遠(yuǎn)程連接iOS終端
以百度外賣為例
11.theos
github地址:https://github.com/theos/theos
- 安裝最新的theos
sudo git clone --recursive https://github.com/theos/theos.git /opt/theos
- 安裝ldid(如安裝theos過程安裝了ldid敏弃,跳過)
brew install ldid
-
theos使用
在終端模式下卦羡,使用nic.pl可以創(chuàng)建tweak工程文件。
如果希望在任意地方使用nic.pl命令麦到,需要配置環(huán)境變量绿饵。
- 一旦配置好環(huán)境變量,以后使用起來會非常方便瓶颠。
-
使用:
在你配置好環(huán)境變量的情況下拟赊,在終端中輸入nic.pl命令,就會出現(xiàn)上面這個界面粹淋,然后你就可以創(chuàng)建tweak項目工程了吸祟。
12.MonkeyDev
(注意:monkeyDev環(huán)境配置前,需要把theos環(huán)境配置好)
- 1.你可以通過以下命令選擇指定的Xcode進(jìn)行安裝:
sudo xcode-select -s /Applications/Xcode.app
- 2.默認(rèn)安裝的Xcode為:
xcode-select -p
- 3.執(zhí)行安裝命令
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-install)"
- 4.卸載
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-uninstall)"
- 5.更新
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-update)"
安裝/更新之后重啟下Xcode再新建項目。
-
6.使用
安裝成功后桃移,打開Xcode創(chuàng)建項目屋匕,你會發(fā)現(xiàn)多了MonkeyApp選項。
這樣你就可以創(chuàng)建項目了借杰。
3.總結(jié)
工具的安裝和配置確實考驗大家的動手能力过吻,但一旦配置好,它們就是你最好的朋友蔗衡。
這12款軟件對于逆向開發(fā)來說是必不可少的纤虽,它們就像一把銳利的工具乳绕,能夠打開應(yīng)用的另一個世界。
還有許多其他幫助性的工具需要介紹逼纸,今天先介紹到這里刷袍。文章會持續(xù)更新,更多的軟件使用方法也會寫入文章中樊展,請持續(xù)關(guān)注呻纹。
現(xiàn)在是該睡覺的時間了,希望這篇文章能夠幫助到你专缠。