iOS逆向之 程式碼注入
阿新 • • 發佈:2019-01-26
一 framework注入
1. 新建工程001--Demo,根據我上一篇文章的重簽名方式之三 指令碼重簽名的xcodeCodesign.sh檔案,進行重簽名後2. Xcode -> TARGETS -> +號 ->Cocoa Touch Framework新建meryinFramework
3. 在meryinFramework檔案下新建類,在類的+(void)load方法中,進行程式碼編寫,如
+(void)load{
NSLog(@"meryin--------------xx--");
}
4. 繫結meryinFramework:TARGETS ->001--Demo ->+New Copy File Phase,在Copy File下把Ddestination改為Frameworks,然後把Copy File下的+號,加上新建的meryinFramework,然後build一下
5. 把
6. 工程001--Demo的Products,001--Demo.app顯示包內容找到包內容中的WeChat可執行檔案,然後 yololib WeChat Frameworks/meryinFramework.framework/meryinFramework 那麼就修改了macho檔案的framework依賴關係
7.修改成功過後在工程資料夾的App資料夾中把微信ipa用歸檔方式開啟,然後進行Payload,找到WeChat.app,顯示包內容,找到包內容中的WeChat可執行檔案,替換成第6步的WeChat可執行檔案
8. 然後把替換後的WeChat.app檔案打包成WeChat.ipa : zip -ry WeChat.ipa Payload ,替換原來的ipa
9. 最後App資料夾中只剩下替換後的WeChat.ipa,進行執行,結果如下:
用MachOView檢視macho的framework依賴關係:
二 指令碼framework注入
1. 根目錄建立APP資料夾,把ipa放進去2. xcodeCodesign.sh中寫入下面程式碼
# 注入dylib 或者framework
echo "開始注入"
FRAMEWORK_PATH="Frameworks/meryinFramework.framework/meryinFramework"
yololib "$TARGET_APP_PATH/$APP_BINARY" "$FRAMEWORK_PATH"
echo "注入結束"
3. 新建meryinFramework的Cocoa Touch Framework4. 在001--Demo工程的TARGETS的Run Script處,把xcodeCodesign.sh的路徑寫進去,然後就可以運行了
之後要注入framework,只需建立一個meryinFramework的庫,然後把xcodeCodesign.sh的路徑寫進去就OK
三 Dylib注入
1. 接著上面的工程001--Demo , Xcode -> TARGETS -> +號 新建macOS->Library新建meryinDylib2.改base sdk為iOS
3. 改code sign identity為iOS developer
4. 繫結meryinDylib:選中meryinDylib真機build過後在Copy File下把Ddestination改為Frameworks,然後把Copy File下的+號,加上新建的meryinDylib
5. 在xcodeCodesign.sh檔案中下入程式碼,然後001--Demo工程的TARGETS的Run Script處,把xcodeCodesign.sh的路徑寫進去
# 注入dylib
echo "開始注入"
FRAMEWORK_PATH="Frameworks/libmeryinDylib.dylib"
yololib "$TARGET_APP_PATH/$APP_BINARY" "$FRAMEWORK_PATH"
echo "注入結束"
6. 在meryinDylib.m中寫入測試程式碼,然後執行
+(void)load{
NSLog(@"meryin=dylib------");
}
結果如下