利用Xcode逆向的原理 和 逆向防護(hù)

一靖秩、利用XCode進(jìn)行逆向的原理:

  • XCode真機(jī)調(diào)試的簡單流程:
  1. 編譯:Clang -> IR ... -> IR -> 匯編 -> Mach-O
  2. 打包成 */Products/xxx.app
  3. 簽名(原理是蘋果私鑰三重數(shù)字簽名)
  4. 安裝到真機(jī),并驗證簽名
  • 懂得基本原理即可利用XCode來逆向別人app
  • 逆向原理:
  1. 既然XCode是生成一個*/Products/xxx.app安裝進(jìn)手機(jī),那我可以建一個殼工程霜威,用待逆向的已脫殼的WeChat.app 去替換 這個殼工程的*/Products/xxx.app
  2. 替換完后,將WeChat.app重簽名成殼工程的包名房维、證書狼速、描述文件,即可在我手機(jī)上運(yùn)行

注:這兩步可以添加編譯腳本完成(XCode自帶的Run Script)酝蜒,利用上一篇文章提到的XCode環(huán)境變量

二誊辉、防逆向調(diào)試 與 反防調(diào)試

  • XCode調(diào)試原理:
  1. lldb 給 debugServer 發(fā)調(diào)試命令(如:image list命令查看ASLR)
  2. debugServer 可以依附到 指定進(jìn)程、端口號
  3. debugServer 暫停住 依附的進(jìn)程亡脑,讀取寄存器信息堕澄,反饋給 lldb
  • 防調(diào)試原理:
  • debugServer 之所以能調(diào)試app邀跃,是依賴操作系統(tǒng)提供的ptraceAPI,ptrace能依附到進(jìn)程上卡住進(jìn)程
  • 既如此蛙紫,只要禁止 debugServer 依附到 進(jìn)程上拍屑、或者禁止 debugServer 卡住進(jìn)程即可(或其他中間環(huán)節(jié))
  • 正好 系統(tǒng)ptraceAPI提供了方法去禁止依附到 進(jìn)程上
  • 實現(xiàn)代碼:
//項目中調(diào)用 `ptrace(31, 0, 0, 0);` 即可防止項目被別人調(diào)試
#define    PT_DENY_ATTACH    31
int ptrace(int _request, pid_t _pid, caddr_t _addr, int _data);
  • 反防調(diào)試原理:(針對ptrace)

方法1(太難):分析Mach-O獲得ptrace代碼位置,從Mach-O的__TEXT段移除ptrace代碼
方法2(常用):開了ptrace防調(diào)試坑傅,調(diào)試時進(jìn)程會crash丽涩,利用lldb添加ptrace符號斷點,獲取代碼位置裁蚁,利用hook移除ptrace代碼

三矢渊、利用XCode逆向 與 利用theos逆向 比較

1、XCode逆向方便太多:

  • 非越獄手機(jī)即可逆向
  • 能直接利用XCode斷點調(diào)試 (當(dāng)然可能需要hook干掉 ptrace防調(diào)試)
  • 利用XCode查看頁面布局Hierarchy

2枉证、theos逆向:

  • 必須使用越獄手機(jī)
  • 必須用腳本建立 lldb 與 debugServer的連接矮男,指定端口號
  • 必須會使用 lldb 指令(但此時因為包已替換,XCode加斷點也只能通過breakpoint set
  • 必須通過Reveal查看圖形化頁面布局Hierarchy

3室谚、顯然XCode逆向更實用更便捷毡鉴,同時,GitHub有大神提供全套逆向工具MonkeyDev
但使用theos你能學(xué)到更多底層知識秒赤,知其所以然(比如你可能會經(jīng)歷學(xué)習(xí)ssh猪瞬、Cycript、Mach-O入篮、ASLR陈瘦、lldb、命令行工具潮售、dylib注入...)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末痊项,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子酥诽,更是在濱河造成了極大的恐慌鞍泉,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肮帐,死亡現(xiàn)場離奇詭異咖驮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)训枢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門托修,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肮砾,你說我怎么就攤上這事诀黍〈樱” “怎么了仗处?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵眯勾,是天一觀的道長。 經(jīng)常有香客問我婆誓,道長吃环,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任洋幻,我火速辦了婚禮郁轻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘文留。我一直安慰自己好唯,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布燥翅。 她就那樣靜靜地躺著骑篙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪森书。 梳的紋絲不亂的頭發(fā)上靶端,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音凛膏,去河邊找鬼杨名。 笑死,一個胖子當(dāng)著我的面吹牛猖毫,可吹牛的內(nèi)容都是我干的台谍。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼吁断,長吁一口氣:“原來是場噩夢啊……” “哼典唇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起胯府,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤介衔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后骂因,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炎咖,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年寒波,在試婚紗的時候發(fā)現(xiàn)自己被綠了乘盼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡俄烁,死狀恐怖绸栅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情页屠,我是刑警寧澤粹胯,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布蓖柔,位于F島的核電站,受9級特大地震影響风纠,放射性物質(zhì)發(fā)生泄漏况鸣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一竹观、第九天 我趴在偏房一處隱蔽的房頂上張望镐捧。 院中可真熱鬧,春花似錦臭增、人聲如沸懂酱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽玩焰。三九已至,卻和暖如春芍锚,著一層夾襖步出監(jiān)牢的瞬間昔园,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工并炮, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留默刚,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓逃魄,卻偏偏與公主長得像荤西,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子伍俘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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