1. 程式人生 > >iOS逆向之 程式碼注入

iOS逆向之 程式碼注入

一 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. 把
yololib
工具拷貝到/usr/local/bin資料夾中
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 Framework
4. 在001--Demo工程的TARGETS的Run Script處,把xcodeCodesign.sh的路徑寫進去,然後就可以運行了

之後要注入framework,只需建立一個meryinFramework的庫,然後把xcodeCodesign.sh的路徑寫進去就OK

三 Dylib注入
1. 接著上面的工程001--Demo , Xcode -> TARGETS -> +號 新建macOS->Library新建meryinDylib
2.改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------");
}

結果如下