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

iOS逆向之程式碼注入(framework)

題外話:此教程是一篇嚴肅的學術探討類文章,僅僅用於學習研究,也請讀者不要用於商業或其他非法途徑上,筆者一概不負責喲~~

準備工作

程式碼注入思路:

DYLD會動態載入Frameworks中所有的動態庫,那麼在Frameworks中加一個自己的動態庫,然後在自己動態庫中hook和注入程式碼

動態庫存放的位置:Frameworks

![image.png](https://upload-images.jianshu.io/upload_images/1013424-161997866a52aec0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

找到可執行檔案WeChat

![image.png](https://upload-images.jianshu.io/upload_images/1013424-e4f12b6c6aa5fb93.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 用MachOView開啟可執行檔案WeChat,在Load Commands裡可以檢視到動態庫 ![image.png](https://upload-images.jianshu.io/upload_images/1013424-2f0d040fe1dfc01e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![image.png](https://upload-images.jianshu.io/upload_images/1013424-35f07623f288ed4c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![image.png](https://upload-images.jianshu.io/upload_images/1013424-3a45631e72661e10.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

步驟:

1、根據iOS逆向之自動化重簽名先編譯執行微信,然後新建Framework

TARGETS新增: ![image.png](https://upload-images.jianshu.io/upload_images/1013424-5b58e339a4d28335.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![image.png](https://upload-images.jianshu.io/upload_images/1013424-0403308f4dd9fada.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2、新建一個WJHook類

![image.png](https://upload-images.jianshu.io/upload_images/1013424-073389c9959af107.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

3、想實現剛載入就要執行,程式碼就要寫在load方法裡

![image.png](https://upload-images.jianshu.io/upload_images/1013424-9cefc0037c32ff73.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

4、為工程新增依賴關係

  • 在程式碼注入targets的Build Phases中新增Copy Files
    image.png
  • 在Copy Files中選擇Frameworks
    image.png
  • 新增WJHookFrameWork
    image.png

5、編譯一下,在app包的位置檢視

image.png
顯示包內容,在Frameworks中檢視
image.png
由上可知,WJHookFrameWork已經加入成功

6、執行,並沒有成功,沒有執行load裡的程式碼

原因:用MachOView開啟可執行檔案WeChat,在Load Commands找不到WJHookFrameWork

7、將WJHookFrameWork寫入MachO檔案

需要用到工具:yololib
因為經常會用到這個工具,建議將它放到 /usr/local/bin
image.png

  1. 顯示隱藏檔案,可以使用
    defaultswritecom.apple.finderAppleShowAllFilesbooltrueKillAll Finder
    這條命令來顯示。同時,將 true 改成 false, 就可恢復隱藏狀態。
  2. 或者使用快捷鍵 ⌘ + ⬆️ + . 來實現
    • 解壓微信越獄包
      image.png
    • 將WeChat.app顯示包內容,找到WeChat可執行檔案
      增加執行許可權:chmod +x WeChat

  • 寫入WeChat可執行檔案:
    yololib WeChat Frameworks/WJHookFrameWork.framework/WJHookFrameWork
“Frameworks/WJHookFrameWork.framework/WJHookFrameWork”路徑是指WJHookFrameWork可執行檔案的路徑
image.png
  • 檢查MachO檔案的Load Commands裡是否有WJHookFrameWork
    image.png
    如圖,加入成功。
  • 刪除原來的微信-6.6.5(越獄應用).ipa,打包Payload
    zip -ry WeChat.ipa Payload
    將WeChat.ipa放入APP目錄,刪除其他資料夾
    image.png
  • 8、執行,成功!

    image.png