iOS非越獄逆向--程式碼注入
在iOS逆向過程中程式碼的注入無非是一個最關鍵的步驟。只有把你的程式碼注入到別人的程式碼中才能實現你想實現的目的,才能算實現了逆向。那麼怎麼才能將自己的程式碼注入到別人的ipa 裡邊的?
程式碼注入原理
眾所周知,iOS app 在打包的過程中將程式碼全部轉換成了 可執行檔案 Mach - O 檔案,所以說我們直接改原始碼是萬萬不可能的(除非你拿到的原始碼,話說你原始碼都拿到了你還逆向個?)。那麼我們可不可以以第三方 lib 的(之前的部落格中可以看到 第三方的 lib 是獨立的)方式注入呢?必須可以啊!!
那麼怎麼才能將第三方的lib 注入目標程式呢?這個我們要從二進位制檔案的結構說起,Mach-O檔案的資料主體可分為三大部分,分別是頭部(Header)、載入命令(Load commands)、和最終的資料(Data)。mobileloader會在目標程式啟動時,會根據指定的規則檢查指定目錄是否存在第三方庫,如果有,則會通過修改二進位制的loadCommands,來把自己注入進所有的app當中,然後載入第三方庫。
這樣就結束了麼?遠遠不是的,到這裡我們只是把自己的動態庫注入到了目標程式中,但是我們自己寫的程式碼還沒有執行的入口,所以我們還是不能搞事情。我們還需要一個"main"函式來執行我們自己的程式碼,這個"main"函式在oc裡面稱為建構函式,只要在函式前宣告 "attribute((constructor)) static" 即可,這樣我們就能搞事情了。
程式碼注入的方式
上邊講過了可以通過第三方的lib 來實現程式碼注入,那麼第三方的lib怎麼才能實現注入呢?下邊來講兩種不同的注入方式:Framework 和 dylib:
一下兩種注入的前提是先實現程式碼的重簽名,具體方式可參照:iOS非越獄逆向-- ipa重簽名
Framework
- 建立一個framework 檔案 並將這個檔案新增引用
建立一個FrameWork檔案
建立CopyFiles檔案
匯入建立的FrameWork檔案, Destination屬性 改為FrameWorks
- 在 framework中新增一個要注入的程式碼
- 在 + load 方法中實現你需要實現的方法
建立需要注入的程式碼檔案,並在 + load 方法中需要實現的方法
- 編譯之後找到 可行性檔案 Mach - O ‘Products --> xxxx.app(show in Finder) -- > 顯示包內容’
- 增加 Mach - O 檔案的執行許可權:
chmod +x WeChat (微信為例)
- 更改 Mach - O 檔案 (將自己寫的framework 加入到 Mach - O中)
yololib WeChat Frameworks/自定義Framework檔名.framework/自定義Framework檔名
- 重新打包 Payload 檔案 可以直接壓縮重新命名為 .ipa 格式
zip -ry WeChat.ipa Payload
- 將ipa 包放到 APP 資料夾中 編譯執行 Bingo
dylib
其實dylib 的注入方式幾乎一樣,無非就是建立個lib 然後新增到 targets 裡邊然後命令列注入,但是使用 dylib 需要設定幾個許可權屬性,因為iOS 現在預設不支援 dylib 了需要手動設定屬性。
- 建立一個 dylib 檔案 並將這個檔案新增引用(新增引用請參考 Framework)
- 修改 dylib 的Base SDK 屬性和 Signing 屬性
- 編譯 執行注入命令
- 編譯執行 Bingo
相關文章
- iOS逆向(4)-程式碼注入,非越獄竊取微信密碼iOS密碼
- 非越獄下 iOS程式碼注入&HOOK微信登入iOSHook
- iOS逆向(10)-越獄!越獄!遠端連線登入手機iOS
- iOS:通過MonkeyDev逆向微信運動,簡單粗暴非越獄iOSdev
- iOS逆向之 程式碼注入iOS
- iOS逆向 程式碼注入+HookiOSHook
- iOS 逆向之 Cycript 高階玩法(非越獄) & .cy檔案的封裝iOS封裝
- 十、iOS逆向之《越獄砸殼/ipa脫殼》iOS
- iOS逆向之旅(進階篇) — 程式碼注入iOS
- iOS逆向——shell重簽名及程式碼注入iOS
- 閒聊iOS越獄與前景 iOS越獄還是你的菜嗎?iOS
- iOS10-10.3.3一鍵越獄教程 iOS10-10.3.3怎麼越獄iOS
- iOS 越獄後碰到的問題iOS
- iOS 12全版本越獄工具釋出,越獄的生存空間仍然存在iOS
- iOS逆向之三 authorized_keys ssh登入越獄手機免驗證設定iOSZed
- iOS冰與火之歌番外篇 - 在非越獄手機上進行App HookiOSAPPHook
- iOS逆向--注入framework庫到appiOSFrameworkAPP
- iOS 12.4成功越獄 - 越獄開發者秀iPhone SE執行Cydia畫面iOSiPhone
- iOS 12.1.2再曝新漏洞,越獄或將重生?iOS
- 越獄(快速冪)
- iOS應用程式碼注入防護iOS
- iOS 8.1.2 越獄過程詳解及相關漏洞分析iOS
- 越獄軟體源
- iOS12完美越獄來了!漫談iOS12緩解機制iOS
- 一、越獄環境搭建
- iOS逆向(1)-密碼學(RSA)iOS密碼學
- 程式碼注入
- iOS逆向——Method Swizzle及WeChat註冊、登入程式碼示例iOS
- iOS 逆向 - 重籤應用除錯與程式碼修改 (Hook)iOS除錯Hook
- iOS 13.3 越獄有望:安全專家確認發現新tfp0漏洞iOS
- [譯] 不越獄探索 App 的技巧APP
- 羽夏逆向指引——注入
- iOS逆向 Shell指令碼+指令碼重簽名iOS指令碼
- iOS越獄工具checkra1n已釋出,支援iPhone 5s - iPhone XiOSiPhone
- 越獄環境下使用Cycript(準備)
- 太極越獄重大安全後門
- 逆向常用python程式碼Python
- IOS 逆向開發(一)密碼學 RSAiOS密碼學