引言
通過tweak的原理的研究的出來的結(jié)論是:
- tweak是根據(jù)dyld中的
DYLD_INSTER_LIBRARIES
這個(gè)宏環(huán)境變量臨時(shí)插入自己的動(dòng)態(tài)庫 - 在App的MachO文件中存在segmentname棍鳖、sectionname 分別為__RESTRICT拳球、 __restrict就能夠使dyld中的DYLD_INSTER_LIBRARIES這個(gè)宏插入動(dòng)態(tài)庫失敗嗅绰,也就是tweak失敗
- 在IPhone一起玩越獄 -(十五)- 禁止tweak插入App進(jìn)程介紹了反tweak插入,也就是防護(hù)你的App被tweak篡改
反tweak插入,是一個(gè)防護(hù)問題,我怎么去攻破這層防護(hù)吶?這個(gè)防護(hù)是完美無缺的嗎烁登?
對(duì)反tweak插入分析
- 在dyld源碼會(huì)直接循環(huán)遍歷
DYLD_INSTER_LIBRARIES
中的lib動(dòng)態(tài)庫,然后加載到當(dāng)前目標(biāo)App進(jìn)程 - 當(dāng)然dyld源碼中有加載
DYLD_INSTER_LIBRARIES
的臨時(shí)動(dòng)態(tài)庫有個(gè)先覺條件就是扁誓,必須issetugid() == false hasRestrictedSegment(mainExecutableMH) == false
- 因?yàn)闆]有找到issetugid()相關(guān)解釋防泵,或者也是apple的私有API,上架的App是無用的
- hasRestrictedSegment(mainExecutableMH) 分析這個(gè)實(shí)現(xiàn)得到反tweak的方法就是在你項(xiàng)目生成*.app文件的時(shí)候蝗敢,插入segmentname、sectionname 分別為__RESTRICT足删、 __restrict的一個(gè)Section 詳情->戳我
- 如果想反反tweak目前的方式就是將MachO文件中的__RESTRICT的Section干掉或者修改segmentname寿谴、sectionname任意一個(gè),讓判斷失效
入手操作
通過分析失受,當(dāng)前我能做的只能是通過修改MachO二進(jìn)制文件讶泰,難點(diǎn)出現(xiàn)了我怎么修改MachO二進(jìn)制文件咏瑟,因?yàn)閷W(xué)過一點(diǎn)匯編知識(shí),二進(jìn)制文件都是0痪署、1組成的機(jī)器語言码泞,項(xiàng)目通過通過上層語言、匯編語言狼犯,最后生成的二進(jìn)制的計(jì)算機(jī)語言余寥,如果在一堆二進(jìn)制文件中找到這個(gè)Section
,好比是海底澇針悯森,沒法入手宋舷,這就靠我們?nèi)ふ乙恍┕ぞ撸湃嗽疲?工欲善其事瓢姻,必先利其器祝蝠。"如果有工具可以使用為什么不用吶? 牛頓:"站在巨人的肩膀上"幻碱!
然后我找到了這個(gè)神器
Synalyze It! Pro
這個(gè)可以修改二進(jìn)制文件
只要修改以后的內(nèi)容不等于
__RESTRICT绎狭、 __restrict
最后要做的是將MachO文件放回*.app中
注意
修改過后的MachO文件需要重新簽名才能夠安裝到手機(jī)里面
無越獄iphone安裝多個(gè)同樣應(yīng)用的方法(一)
無越獄IPhone安裝多個(gè)同樣應(yīng)用的方法(二)Xcode簽名
無越獄IPhone安裝多個(gè)同樣應(yīng)用的方法(三)自動(dòng)化重簽名
安裝成功以后就可以直接用tweak插入動(dòng)態(tài)庫的方式去Hook你的App的代碼
碼運(yùn)昌盛