iOS越獄(6)加殼脫殼

什么是加殼?

利用特殊的算法,對可執行文件的編碼進行改變(比如壓縮、加密),以達到保護程序代碼的目的。

什么是脫殼?

摘掉殼程序,將未加密的可執行文件還原出來(有些人也稱為“砸殼”)。
脫殼主要有2種方法:硬脫殼、動態脫殼。

  • 硬脫殼
    直接對加殼程序執行解密算法,解出原來的程序。
  • 動態脫殼
    將加殼程序在內存中跑起來,從內存中導出解密后的原來的程序。

如何驗證可執行文件是否已經脫殼?

查看Load Commands -> LC_ENCRYPTION_INFO -> Crypt ID的值,0代表未加密。
通過otool命令行也可以:otool -l 可執行文件路徑 | grep crypt 。

iOS中的脫殼工具

  1. Clutch
  • 下載最新的Release版
  • 建議去掉版本號,改名為Clutch
  • 將Clutch文件拷貝到iPhone的/usr/bin目錄
  • 如果在iPhone上執行Clutch指令,權限不夠,賦予“可執行的權限”
  • 列出已安裝的APP:Clutch -i
  • 輸入APP序號或者Bundle Id進行脫殼操作:Clutch -d APP序號或BundleId
  • 脫殼成功后會生成一個ipa文件,通常在路徑var/mobile/Documents/Dumped路徑下。
  1. dumpdecrypted
  • 下載源代碼,然后在源代碼目錄執行make指令進行編譯,獲得dylib動態庫文件
  • 將dylib文件拷貝到iPhone上(如果是root用戶,建議放/var/root目錄)
  • 終端進入dylib所在的目錄
  • 使用環境變量DYLD_INSERT_LIBRARIES將dylib注入到需要脫殼的可執行文件(可執行文件路徑可以通過ps -A查看獲取)
    DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 可執行文件路徑
  • .decrypted文件就是脫殼后的可執行文件

注意:在使用過程中,可能會遇到對dylib所在的文件夾權限不夠造成的錯誤。
解決方案:將dylib放在用戶所在文件夾,比如如果是root用戶,請將dylib放在/var/root目錄,如果是mobile用戶,請將dylib放在/var/mobile目錄。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容