學(xué)前須知
一定的基礎(chǔ)知識(shí)
如果想研究逆向其實(shí)是需要一定的iOS開發(fā)功底和經(jīng)驗(yàn)的割粮,怎么也得做過一兩年艇纺,完成過幾個(gè)項(xiàng)目,對(duì)UI邮弹、多線程網(wǎng)絡(luò)黔衡、數(shù)據(jù)存儲(chǔ)都要有一定的知識(shí)儲(chǔ)備。
設(shè)備要求
iPhone 6/6s即可腌乡,建議至少iPhone 5S(因?yàn)閺?S開始支持arm64架構(gòu))或者至少是iPad Air盟劫、iPad mini2等支持arm64架構(gòu)的設(shè)備
至于iOS系統(tǒng),我使用的是iOS 9.1完美越獄与纽,建議至少iOS 8完美越獄侣签,注意要保證能夠完美越獄
檢查手機(jī)是否可以越獄
iOS Jailbreak
利用iOS系統(tǒng)的漏洞,獲取iOS系統(tǒng)的最高權(quán)限(Root)急迂,解開之前的各種限制影所,這是一個(gè)合法行為)
越獄的優(yōu)點(diǎn)
- 利用iOS越獄我們可以打造個(gè)性化、與眾不同的iPhone
- 可以自由安裝各種實(shí)用的插件僚碎、主題猴娩、APP
- 修改系統(tǒng)APP的一些默認(rèn)行為,自由安裝非AppSore來源的APP
- “付費(fèi)APP”秒變“免費(fèi)APP”
- 靈活管理文件系統(tǒng)勺阐,讓iPhone可以像U盤一樣使用
- 最有用的就是給開發(fā)者提供了逆向工程的環(huán)境
越獄的缺點(diǎn)
- 不予保修
- 費(fèi)電卷中,越獄后的iOS系統(tǒng)會(huì)常駐一些進(jìn)程,耗電速度約提升10%~20%
- 在新的iOS固件版本出來的時(shí)候渊抽,不能及時(shí)地進(jìn)行更新蟆豫,每個(gè)新版本的固件,都會(huì)修復(fù)上一個(gè)版本的越獄漏洞懒闷,使越獄失效十减,如果需要保持越獄狀態(tài)栈幸,要等待新的越獄程序發(fā)布時(shí),才能升級(jí)相應(yīng)的固件版本
- 不再受iOS系統(tǒng)默認(rèn)的安全保護(hù)嫉称,容易被惡意軟件攻擊侦镇,個(gè)人隱私有被竊取的風(fēng)險(xiǎn)
- 如果安裝了不穩(wěn)定的插件,容易讓系統(tǒng)變得不穩(wěn)定织阅、變慢壳繁,甚至出現(xiàn)“白蘋果”等問題
越獄分類
完美越獄
越獄后的iPhone可以正常關(guān)機(jī)和重啟-
不完美越獄
iPhone一旦關(guān)機(jī)后再開機(jī)時(shí),屏幕就會(huì)一直停留在啟動(dòng)畫面荔棉,也就是“白蘋果”狀態(tài)
或者能正常開機(jī)闹炉,但已經(jīng)安裝的破解軟件都無法正常使用,需要將設(shè)備與PC連接后润樱,使用軟件進(jìn)行引導(dǎo)才能使用一般說來渣触,在蘋果發(fā)布新的iOS固件后,針對(duì)該固件的不完美越獄會(huì)先發(fā)布壹若,隨后完美越獄才可能發(fā)布嗅钻,一般較新的系統(tǒng)版本,均為不完美越獄
越獄方法推薦 PP助手
通過判斷手機(jī)是否越獄
方案一:桌面是否有Cydia或者工具判斷PP助手
方案二:代碼判斷是否安裝Cydia
@interface UIDevice (Helper)
- (BOOL)isJailbroken;
@end
@implementation UIDevice (Helper)
- (BOOL)isJailbroken {
BOOL jailbroken = NO;
NSString *cydiaPath = @"/Applications/Cydia.app";
NSString *aptPath = @"/private/var/lib/apt/";
if ([[NSFileManager defaultManager] fileExistsAtPath:cydiaPath]) {
jailbroken = YES;
}
if ([[NSFileManager defaultManager] fileExistsAtPath:aptPath]) {
jailbroken = YES;
}
return jailbroken;
}
@end
+ (BOOL)isJailbroken; //類方法店展,判斷你的App是否被破解
+ (BOOL)isPirated;
然后再介紹兩種方法來查看是否已經(jīng)越獄养篓,知其然知其所以然、赂蕴、柳弄、
//1. apt
- (BOOL) hasAPT
{
return [[NSFileManager defaultManager] fileExistsAtPath:@"/private/var/lib/apt/"];
}
//2. system
- (BOOL) successCallSystem
{
return (system("ls") == 0) ? YES : NO;
}
//3.
staticconstchar* jailbreak_apps[] =
{
"/Applications/Cydia.app",
"/Applications/limera1n.app",
"/Applications/greenpois0n.app",
"/Applications/blackra1n.app",
"/Applications/blacksn0w.app",
"/Applications/redsn0w.app",
"/Applications/Absinthe.app",
NULL,
};
- (BOOL) isJailBroken
{
// Now check for known jailbreak apps. If we encounter one, the device is jailbroken.
for(inti = 0; jailbreak_apps[i] != NULL; ++i)
{
if([[NSFileManagerdefaultManager] fileExistsAtPath:[NSStringstringWithUTF8String:jailbreak_apps[i]]])
{
//NSLog(@"isjailbroken: %s", jailbreak_apps[i]);
returnYES;
}
}
// TODO: Add more checks? This is an arms-race we're bound to lose.
returnNO;
}
但是可能不在這個(gè)位置,所以不準(zhǔn)確
Cydia
它相當(dāng)于越獄后的“App Store”概说,我們可以在Cydia中安裝各種第三方的軟件(插件碧注、補(bǔ)丁贪婉、APP)作者:Jay Freeman (saurik)
使用Cydia安裝軟件
添加軟件源(不同軟件的軟件源可能不同)
進(jìn)入軟件源找到對(duì)應(yīng)的軟件览绿,開始安裝
如果軟件源中的軟件太多,可以搜索查找
有時(shí)候通過Cydia安裝完插件后党涕,可能會(huì)出現(xiàn)重啟SpringBoard挂捻,SpringBoard其實(shí)就是iOS的桌面
必要的軟件和插件
Apple File Conduit "2"
Apple File Conduit "2"補(bǔ)丁的作用
可以訪問整個(gè)iOS設(shè)備的文件系統(tǒng)
類似的補(bǔ)丁還有:afc2碉纺、afc2add
軟件源 :http://apt.saurik.com、http://apt.25pp.comAppSync Unified
AppSync Unified補(bǔ)丁的作用
可以繞過系統(tǒng)驗(yàn)證刻撒,隨意安裝骨田、運(yùn)行破解的ipa安裝包
軟件源:http://apt.25pp.comiFile
iFile的作用
可以在iPhone上自由訪問iOS文件系統(tǒng)
類似的還有Filza File Manager、File Browser
軟件源:http://apt.thebigboss.org/repofiles/cydiaPP助手
可以利用PP助手自由安裝海量APP
軟件源:http://apt.25pp.com/
安裝建議順序:
通常情況下
- 通過Cydia安裝的安裝包是deb格式的(結(jié)合軟件包管理工具apt)
- 通過PP助手安裝的安裝包是ipa格式的
如果通過Cydia源安裝deb失敗
可以先從網(wǎng)上下載deb格式的安裝包
然后將deb安裝包放到/var/root/Media/Cydia/AutoInstall
重啟手機(jī)声怔,Cydia就會(huì)自動(dòng)安裝deb
比如态贤,下圖是iFile 2.2.0-1所需的deb安裝包
Mac必備
- iFunBox
管理文件系統(tǒng) - PP助手
自由安裝海量APP
卸載APP
備份APP為ipa安裝包(iOS9開始,不再支持備份APP)