iOS開發(fā)逆向之代碼注入(上)

本文主要講解代碼注入的兩種方式:FrameWork注入色解、dylib注入

代碼注入

一般修改原始的程序,是利用代碼注入的方式暇韧,注入代碼就會選擇利用FrameWork或者Dylib等三方庫的方式注入。

查看Mach-O文件

在了解注入前,我們首先需要了解ipa包中的靜態(tài)庫是如何注入的摹闽,有以下兩種方式查看Mach-O可執(zhí)行文件

  • 1、終端命令:otool -l WeChat
  • 2褐健、MachOView 二進(jìn)制文件分析工具(注:分析時可能出現(xiàn)無法分析的情況付鹿,可以通過 CMD + o 打開)

Mach-O文件中主要看load Commands(即加載命令集),從這里可以看出動態(tài)庫的加載等蚜迅。其中大部分格式為:LC_LOAD_DYLIB(xxx)舵匾,是在指定路徑下加載xxx,如下所示

所以谁不,綜上所述坐梯,如果需要注入代碼,是以動態(tài)庫的形式注入

方式1:Framework手動注入

第一步:動態(tài)庫進(jìn)入App包刹帕,即Framework注入

  • 1吵血、創(chuàng)建一個Framework,命名為 CJLHook(創(chuàng)建位置:target -> + -> ios -> Framework)

  • 2轩拨、在CJLHook中創(chuàng)建inject文件践瓷,在生命周期方法load函數(shù)中寫注入代碼

+(void)load{
    NSLog(@"CJLHook ------ 注入成功");
}

  • 3、編譯工程(注:這里的工程依然需要重簽名)亡蓉,然后查看工程的可執(zhí)行文件Wechat晕翠,查找其中的Frameworks,從這里可以看到CJLHook砍濒,但是此時并不會執(zhí)行其中的load函數(shù)

    load不會執(zhí)行的原因:查看此時的Mach-O文件中的Load Commands淋肾,并沒有發(fā)現(xiàn)CJLHook,所以此時是不會執(zhí)行其中的load函數(shù)的

第二步:yololib手動注入爸邢,修改Mach-O字段

  • 4樊卓、通過yololib工具修改Mach-O字段:./yololib WeChat Frameworks/CJLHook.framework/CJLHook(注:需要將WeChat可執(zhí)行文件拷貝過來)

    • 第一個參數(shù):目標(biāo)可執(zhí)行文件

    • 第二個參數(shù):CJLHook的路徑

  • 5、查看Mach-O可執(zhí)行文件,可以看到已經(jīng)加進(jìn)來了

  • 6杠河、重新打包碌尔,過程如下:

    • 解壓微信-7.0.8.ipa

    • 替換Payload中的可執(zhí)行文件為上一步的Mach-O文件

    • 重新打包:zip -ry WeChat.ipa Payload/

    • 然后替換ipa包

  • 7、運(yùn)行程序券敌,可以看到成功執(zhí)行了 CJLHook中的load

方式2:dylib注入

準(zhǔn)備工作:創(chuàng)建一個空工程唾戚,并進(jìn)行WeChat的重簽名,可以參考這篇文章iOS逆向 應(yīng)用重簽名(下)
dylib注入

  • 1待诅、選擇target -> + -> mac os -> Library叹坦,命名為CJLHook

  • 2、在Build Setting中配置CJLHook

    • 1)Base SDK 改為 ios

    • 2)Code Signing identify 改為 iOS Developer

  • 3卑雁、當(dāng)前工程中拷貝lib

    • 1)募书、Build Phase -> + -> New Copy File...
    • 2)绪囱、然后選擇拷貝到的目標(biāo)文件:Frameworks
    • 3)、添加dylib
  • 4莹捡、在CJLHook.m文件中重寫load函數(shù)

#import "CJLHook.h"

@implementation CJLHook
+(void)load{
    NSLog(@"CJLHook ---- 注入成功");
}
@end

  • 5鬼吵、腳本注入dylib,將yololib拷貝至根目錄道盏,在appSign.sh末尾添加以下命令
#注入
./yololib "$TARGET_APP_PATH/$APP_BINARY" "Frameworks/libCJLHook.dylib"

  • 6而柑、編譯工程,查看Mach-O文件中的Frameworks文件荷逞,已經(jīng)包含了CJLHook的dylib

  • 7媒咳、運(yùn)行程序,從日志可以看出執(zhí)行了CJLHook中的load

    image

作為一個開發(fā)者种远,有一個學(xué)習(xí)的氛圍跟一個交流圈子特別重要涩澡,這是一個我的iOS開發(fā)交流群:130 595 548,不管你是小白還是大牛都?xì)g迎入駐 坠敷,讓我們一起進(jìn)步妙同,共同發(fā)展!(群內(nèi)會免費(fèi)提供一些群主收藏的免費(fèi)學(xué)習(xí)書籍資料以及整理好的幾百道面試題和答案文檔Oビ)

總結(jié)

  • 代碼注入:一般會選擇利用FrameWork或者Dylib等三方庫的方式注入

  • Framwork手動注入流程:

    • 1粥帚、通過Xcode新建Framwork,將庫安裝進(jìn)入APP包

    • 2限次、通過yololib注入Framwork庫路徑芒涡。命令:$yololib(空格)MachO文件路徑(空格)庫路徑

    • 3、所有的Framwork加載都是由DYLD加載進(jìn)入內(nèi)存被執(zhí)行的

    • 4卖漫、注入成功的庫路徑會寫入到MachO文件的LC_LOAD_DYLIB字段中

  • Dylib注入流程:

    • 1费尽、通過Xcode新建Dylib庫(注意:Dylib屬于MacOS所以需要修改相關(guān)屬性配置)

    • 2、添加Target依賴羊始,讓Xcode將自定義Dylib文件打包進(jìn)入APP包旱幼。

    • 3、利用yololib進(jìn)行注入突委。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末柏卤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子匀油,更是在濱河造成了極大的恐慌缘缚,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钧唐,死亡現(xiàn)場離奇詭異忙灼,居然都是意外死亡匠襟,警方通過查閱死者的電腦和手機(jī)钝侠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門该园,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人帅韧,你說我怎么就攤上這事里初。” “怎么了忽舟?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵双妨,是天一觀的道長。 經(jīng)常有香客問我叮阅,道長刁品,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任浩姥,我火速辦了婚禮挑随,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘勒叠。我一直安慰自己兜挨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布眯分。 她就那樣靜靜地躺著拌汇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪弊决。 梳的紋絲不亂的頭發(fā)上噪舀,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天,我揣著相機(jī)與錄音丢氢,去河邊找鬼傅联。 笑死,一個胖子當(dāng)著我的面吹牛疚察,可吹牛的內(nèi)容都是我干的蒸走。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼貌嫡,長吁一口氣:“原來是場噩夢啊……” “哼比驻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起岛抄,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤别惦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后夫椭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掸掸,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了扰付。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堤撵。...
    茶點(diǎn)故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖羽莺,靈堂內(nèi)的尸體忽然破棺而出实昨,到底是詐尸還是另有隱情,我是刑警寧澤盐固,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布荒给,位于F島的核電站,受9級特大地震影響刁卜,放射性物質(zhì)發(fā)生泄漏志电。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一蛔趴、第九天 我趴在偏房一處隱蔽的房頂上張望溪北。 院中可真熱鬧,春花似錦夺脾、人聲如沸之拨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚀乔。三九已至,卻和暖如春菲茬,著一層夾襖步出監(jiān)牢的瞬間吉挣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工婉弹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留睬魂,地道東北人。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓镀赌,卻偏偏與公主長得像氯哮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子商佛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評論 2 355

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