iOS逆向系列-脫殼


概述

通過iOS逆向系列-逆向App中使用class-dump工具導出App的Mach-O文件所有頭文件、Hopper工具分析App的Mach-O文件代碼大概實現。但是這些前體是App的Mach-O沒有被加殼的。通過pp助手下載安裝的App都是經過脫殼的如果我們從Appstore下載安裝的App都是蘋果加殼的。
加殼就是利用特殊的算法,對可執行文件的編碼進行改變(比如壓縮、加密),以達到保護程序代碼的目的。
我們編寫的程序的Mach-O文件上傳到蘋果后台,蘋果會對我們的程序的Mach-O文件進行做加密處理並且外部添加一個殼程序。
機加載App時外部的課程序會對加密的應用的Mach-O文件進行解密,然后執行。

判斷程序是否加殼

  • 通過otool命令:otool -l 可執行文件 | grep crypt

  • 查看Load Commands -> LC_ENCRYPTION_INFO-> Crypt ID的值,0代表未加密

脫殼方式

"脫殼"就是摘掉殼程序,將未加密的可執行文件還原出來(有些人也稱為“砸殼”)。
脫殼主要有2種方法:硬脫殼動態脫殼
動態脫殼的原理:是當程序加載進內從外部的殼程序會對加密的執行文件解密,這個時候我們從內從導出這個解密的執行文件。這個比較復雜,我們下面介紹通過硬脫殼的方式。
硬脫殼就的原理:是直接就是通過解密算法進行解密。

iOS中有很多的脫殼工具AppCrackr、Crackulous都已經過時了,下面我們使用最新的常用脫殼工具Clutchdumpdecrypted

Clutch方式脫殼

  • 下載最新的ClutchRelase版本:https://github.com/KJCracks/Clutch/releases
  • 將下載下來的Clutch的文件名版本號去掉。將Clutch拷貝到IPhone的/usr/bin/目錄下。可以行命令拷貝scp -P 端口 Clutch文件路徑 root@localhost:/usr/bin/Clutch。
  • 最好在IPhone上給Clutch添加權限 chmod +x /usr/bin/Clutch
  • 列出手機當前安裝的需要脫殼的應用
  • 輸入APP序號或者Bundle Id進行脫殼操作:Clutch -d APP序號或BundleId

dumpdecrypted方式脫殼

  • GitHub下載dumpdecrypted源碼。然后在源代碼目錄執行make指令進行編譯,獲得dylib動態庫文件
  • 將dylib文件拷貝到iPhone上(如果是root用戶,建議放/var/root目錄
  • 使用環境變量DYLD_INSERT_LIBRARIESdylib注入到需要脫殼的可執行文件(可執行文件路徑可以通過ps -A查看獲取)
    DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib  可執行文件路徑

生成的脫殼的可執行文件在dumpdecrypted.dylib所在的目錄下,也就是/var/root

可將生成脫殼的.decrypted后綴名去掉。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM