IPhone一起玩越獄 -(十三)- Tweak的原理

引言

當(dāng)我們?cè)谑褂胻heos創(chuàng)建一個(gè)tweak項(xiàng)目的時(shí)候冠跷,tweak做了什么?它的工作原理是什么身诺?

分析tweak項(xiàng)目

  • 分析tweak創(chuàng)建以后的幾個(gè)文件蜜托,創(chuàng)建操作請(qǐng)查看十一
根目錄
   .
├── .theos
|   ├── _ 
|   |    └── ...  *
|   ├── obj 
|   |    └── ...  *
|   ├── packages 
|   |    └── ...   記錄版本號(hào)
|   ├── build_session
|   ├── fakeroot
|   └── last_package    當(dāng)前打包成功以后放的路徑
├── obj   實(shí)際上跟上面.theos/obj的目錄是一樣的
|   └── debug/...   空的
├── packages
|   └── ...   你的包程序,也就是你的插件的包霉赡,在很多威鋒源里面的*.deb文件橄务,每次打包都會(huì)生成一個(gè)包文件,每次包文件的版本號(hào)都會(huì)++
├── control    配置信息
├── Makefile   環(huán)境變量信息
├── Tweak.xm      編寫(xiě)logos hook代碼
├── ***.plist     目標(biāo)進(jìn)程穴亏,就是你需要修改蜂挪、hook的App的Bundle identifier

_ 目錄
├── DEBIAN
|   └── control    配置信息
├── Library 
|   |    └── MobileSubstrate/Dynamiclibrarte/**.plist  目標(biāo)進(jìn)程,就是你需要修改嗓化、hook的App的Bundle identifier

obj 目錄  上面兩個(gè)obj目錄實(shí)際上都是一樣的棠涮,只不過(guò)在根目錄中的obj在打包安裝的整個(gè)過(guò)程中都是空的,我也不知道作者當(dāng)時(shí)是怎么想的刺覆,所以就繞過(guò)去严肪,可能還有別的作用的,現(xiàn)在是沒(méi)找到相關(guān)的內(nèi)容谦屑。
├── debug
|   ├── arm64    arm64的*.dylib 動(dòng)態(tài)庫(kù)
|   └── armv7     armv7的*.dylib 動(dòng)態(tài)庫(kù)
|   |    └──  *.dylib   合并arm64驳糯、armv7的動(dòng)態(tài)庫(kù)  

當(dāng)我使用theos創(chuàng)建一個(gè)tweak項(xiàng)目,并make氢橙、make package酝枢、make install三個(gè)步驟會(huì)直接安裝到你的手機(jī)里面,在cydia安裝的插件中就可以看到你自己的插件

當(dāng)然tweak是以什么形式安裝到手機(jī)中的吶悍手?
首先我們來(lái)介紹下動(dòng)態(tài)庫(kù)能夠被加載帘睦,而且還會(huì)被調(diào)用,基本上我所知道的只有2種:

    1. 注入到某個(gè)App
    2. 插入到某個(gè)進(jìn)程

驗(yàn)證

為了證明我已經(jīng)將動(dòng)態(tài)庫(kù)注入App或是插進(jìn)我的目標(biāo)進(jìn)程坦康,我在**.xm中添加了如下代碼進(jìn)行驗(yàn)證

%hook WCAccountLoginFirstViewController
- (void)viewDidAppear:(BOOL)animated{
    
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"注入成功了竣付,嗚~喵!" preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction *alertaction = [UIAlertAction actionWithTitle:@"好的" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
        
    }];
    [alert addAction:alertaction];
    [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alert animated:YES completion:nil];
    %orig;
}
%end

驗(yàn)證注入到某個(gè)App

猜想:
當(dāng)我創(chuàng)建一個(gè)tweak項(xiàng)目的時(shí)候涝焙,會(huì)在最后輸入卑笨,目標(biāo)App的Bundle identifier,這個(gè)App的唯一標(biāo)示仑撞,cydia根據(jù)這個(gè)Bundle identifier直接注入我的動(dòng)態(tài)庫(kù)赤兴。
而我要驗(yàn)證的就是makemake package隧哮、make install安裝到手機(jī)以后桶良,我查看手機(jī)里面的MachO文件,查看是否注入了我的動(dòng)態(tài)庫(kù)文件沮翔。
過(guò)程

  1. 訪問(wèn)我的手機(jī)陨帆,打開(kāi)我的目標(biāo)App,Copy目錄下的*.app文件,通過(guò)SSH發(fā)送給我的Mac桌面


$ scp -P 3456 -r root@localhost:/var/containers/Bundle/Application/39C3D718-5FD5-41E1-86C2-72DB9B06C75D/xxx.app ~/Desktop
//拿到MachO文件

使用MachOView打開(kāi)這個(gè)MachO文件
在Load Commands 中查看是否存在你剛注入的動(dòng)態(tài)庫(kù)名稱(chēng)


我從頭到尾都沒(méi)有看到有我創(chuàng)建的動(dòng)態(tài)庫(kù)
驗(yàn)證證明了采蚀,tweak創(chuàng)建的動(dòng)態(tài)庫(kù)并沒(méi)有注入到MachO疲牵,沒(méi)有修改App的二進(jìn)制文件
tweak不是注入動(dòng)態(tài)庫(kù)的方式
需要注意的是注入的方式,就是修改二進(jìn)制文件榆鼠,注定要重新簽名二進(jìn)制文件
無(wú)越獄iphone安裝多個(gè)同樣應(yīng)用的方法(一)
無(wú)越獄IPhone安裝多個(gè)同樣應(yīng)用的方法(二)Xcode簽名
無(wú)越獄IPhone安裝多個(gè)同樣應(yīng)用的方法(三)自動(dòng)化重簽名

驗(yàn)證插入到某個(gè)進(jìn)程

分析
插入到某個(gè)進(jìn)程底下纲爸,我們需要的是一個(gè)dyld的環(huán)境變量,DYLD_INSERT_LIBRARIES這個(gè)環(huán)境變量告訴了某個(gè)App進(jìn)程妆够,我要加載某個(gè)動(dòng)態(tài)庫(kù)识啦,當(dāng)App運(yùn)行的時(shí)候,臨時(shí)掛載到上面而并沒(méi)有修改App的MachO文件神妹,當(dāng)App從后臺(tái)刪除以后颓哮,這個(gè)臨時(shí)加載的動(dòng)態(tài)庫(kù)也會(huì)跟著清除,當(dāng)這個(gè)App重新打開(kāi)后需要重新加載這個(gè)動(dòng)態(tài)庫(kù)
在我的IPhone一起玩越獄 -(十)- 使用dumpdecrypted砸殼鸵荠,動(dòng)態(tài)砸殼
這個(gè)篇文章中提到過(guò)這種方式也應(yīng)用過(guò)這種方式冕茅,請(qǐng)移駕過(guò)去查看
驗(yàn)證


圖中顯示的就是當(dāng)我啟動(dòng)***.app目標(biāo)App的時(shí)候,cydia檢測(cè)到了它啟動(dòng)了蛹找,cydia會(huì)調(diào)用DYLD_INSERT_LIBRARIES這個(gè)變量讓這個(gè)App去加載我的動(dòng)態(tài)庫(kù)嵌赠,Loading: .../你的動(dòng)態(tài)庫(kù)的路徑

總結(jié)

tweak的原理

  1. tweak生成的是一個(gè)動(dòng)態(tài)庫(kù)熄赡,并且打包成一個(gè)deb的包
    • dylib動(dòng)態(tài)庫(kù)
    • plist文件(目標(biāo)app的bundle identifier)
  2. cydia安裝這個(gè).deb姜挺,實(shí)際上就是將.deb中的動(dòng)態(tài)庫(kù)、plist取出來(lái)
  3. 根據(jù)plist提供的bundle identifier查找目標(biāo)App是否啟動(dòng)
  4. 如果啟動(dòng)加載dylib這個(gè)動(dòng)態(tài)庫(kù)

以上

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末彼硫,一起剝皮案震驚了整個(gè)濱河市炊豪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拧篮,老刑警劉巖词渤,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異串绩,居然都是意外死亡缺虐,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)礁凡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)高氮,“玉大人慧妄,你說(shuō)我怎么就攤上這事〖羯郑” “怎么了塞淹?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)罪裹。 經(jīng)常有香客問(wèn)我饱普,道長(zhǎng),這世上最難降的妖魔是什么状共? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任套耕,我火速辦了婚禮,結(jié)果婚禮上峡继,老公的妹妹穿的比我還像新娘冯袍。我一直安慰自己,他們只是感情好鬓椭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布颠猴。 她就那樣靜靜地躺著,像睡著了一般小染。 火紅的嫁衣襯著肌膚如雪翘瓮。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天裤翩,我揣著相機(jī)與錄音资盅,去河邊找鬼。 笑死踊赠,一個(gè)胖子當(dāng)著我的面吹牛呵扛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播筐带,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼今穿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了伦籍?” 一聲冷哼從身側(cè)響起蓝晒,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎帖鸦,沒(méi)想到半個(gè)月后芝薇,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡作儿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年洛二,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡晾嘶,死狀恐怖妓雾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情变擒,我是刑警寧澤君珠,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布寝志,位于F島的核電站娇斑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏材部。R本人自食惡果不足惜毫缆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乐导。 院中可真熱鬧苦丁,春花似錦、人聲如沸物臂。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)棵磷。三九已至蛾狗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仪媒,已是汗流浹背沉桌。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留算吩,地道東北人留凭。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像偎巢,于是被迫代替她去往敵國(guó)和親蔼夜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容