iOS逆向-無需越獄注入動態(tài)庫

0x0 獲取


iTunes下載

現(xiàn)在iTunes已經(jīng)沒有下載ipa的功能了

第三方市場

目前大部分只能依靠第三方市場來下載,而且第三方市場的ipa其實有一個優(yōu)勢,大部分都是已經(jīng)脫殼的,省去一個步驟

OTA安裝的企業(yè)版app

這種就更好辦了

  • 首先拿到ota的url,基本上是itms-service之類的scheme
  • 查看里面的一個url=的參數(shù),就是plist配置的地址
  • 下載或者查看這個plist,可以發(fā)現(xiàn)里面就有ipa的真正地址了

0x1 砸殼


如果你的包是appstore上的包,那么蘋果會加殼,我們需要先砸了

主流的砸殼基本上都是在手機(jī)上操作,所以大前提是你有一臺越獄的手機(jī)

現(xiàn)在我基本上都是第三方市場下載或者企業(yè)版證書的app,不過有興趣還是可以了解一下的

Clutch
Clutch砸殼

dumpdecrypted
iOS逆向之IPA脫殼

0x2 分析


一般我們逆向一個app,還是先把頭文件dump出來分析一下,主要還是利用 nygard/class-dump,具體用途看它的 readme 就差不多了

class-dump -H xxx.app -o /Users/Desktop/Header

如果有更深入的分析要求,可以利用hopper、ida分析,包括一些調(diào)用關(guān)系等

0x3 編寫dylib


當(dāng)目標(biāo)分析完成,需求確定之后,就可以開始編寫自己的dylib了

至于dylib的工程模板網(wǎng)上很多,可以參考 Xcode4.6創(chuàng)建和使用iOS的dylib動態(tài)庫

一個很常規(guī)的做法,就是隨便創(chuàng)建一個類,添加一個+ (void)Load作為你的代碼入口,或者在全局作用域上直接調(diào)用創(chuàng)建一個單例,如下

static Hacker *g_hacker = [Hacker sharedInstance]
@implementation Hacker

+ (instancetype)sharedInstance
{}

+ (void)load
{
   // Setup my code here
}

@end

0x4 注入dylib


完成dylib后,需要把它掛到目標(biāo)app上,這里需要用到 optool 來給執(zhí)行文件添加LoadCommand

git clone –recursive https://github.com/alexzielenski/optool.git
cd optool 
xcodebuild -project optool.xcodeproj -configuration Release ARCHS=”x86_64” build //編譯 
/path/to/optool install -c load -p “@executable_path/yourdylib.dylib” -t /yourexefile

如果不放心,可以用Mach-O Viewer,或者otool來檢驗一下

otool -L yourexefile

0x5 重簽


萬事俱備,現(xiàn)在就只差如何安裝到你的手機(jī)上了

因為你下載的app經(jīng)過你的修改,你也沒有原來的證書可以打包,手機(jī)也不在原來的證書設(shè)備內(nèi),因為是無法安裝的,這時候需要重簽為你自己的證書,來允許安裝到你的手機(jī)上(未越獄)

iOSResigner
// 查看你電腦目前的證書
security find-identity -v -p codesigning

// resign
./iOSResigner --ipa="Debug/test.ipa" --identity="iPhone Developer: xxx yyy (9J4EHR5R28)" --provision="cert/dev.mobileprovision" --output="out/test_resigned.ipa"

如果有需求修改里面的東西再重新打包的話
cd inside-folder
zip --symlinks -r -q ../abc.ipa *
或者
xcrun -sdk iphoneos PackageApplication
-v ./PaulTest.app
-o ./paultest_yk_ume_release.ipa

iOS App Signer

這里介紹一個更好使的開源工具 iOS App Signer,這個工程可以自動搜索本機(jī)的證書和配置文件,如果不想編譯那么麻煩,也可以在releases里面直接下載編譯好的

這個工具有幾個缺點(diǎn)

  • 不會實時監(jiān)測文件的變化,所以有變動證書相關(guān)文件,需要重啟app
  • 因為Xcode的下載證書相關(guān),不會鑒別過期與否,有效與否,一腦子全部下下來,app本身也不會鑒別是否有效
  • 在重簽后安裝不上的,需要人肉驗證上面兩步,嫌麻煩就整個文件夾刪了,到Developer確保證書沒問題,然后全部重新下下來

Provisioning Profiles 存放的目錄
~/Library/MobileDevice/Provisioning Profiles

0x6 參考


iOS Hacker 動態(tài)庫 dylib 注入
iOS Hacker 重簽名實現(xiàn)無需越獄注入動態(tài)庫 dylib
iOS Hacker dumpdecrypted脫殼
iOS app 逆向分析

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,186評論 3 119
  • 用到的組件 1、通過CocoaPods安裝 2、第三方類庫安裝 3、第三方服務(wù) 友盟社會化分享組件 友盟用戶反饋 ...
    SunnyLeong閱讀 15,158評論 1 180
  • 今天是周末。睡到很晚,起床已經(jīng)接近十二點(diǎn)。 吃飯。 然后睡覺。 然后吃飯。 然后睡覺。 所有的事情,是需要投入時間...
    林杕閱讀 182評論 0 0
  • 面試的時候,負(fù)責(zé)招聘的HR要看大量的應(yīng)聘簡歷,所以肯定不會細(xì)看簡歷的所有內(nèi)容,只會看一些關(guān)鍵點(diǎn)。 那么HR查看應(yīng)屆...
    萌萌視覺筆記閱讀 1,668評論 2 1
  • 房子屋頂為銳角,自我意志力強(qiáng),容易感情用事,容易與他人產(chǎn)生對抗性行為,對奇異的,非常態(tài)的事物感興趣,畫有大門,積極...
    春妮很棒閱讀 1,291評論 0 1

友情鏈接更多精彩內(nèi)容