十、iOS逆向之《越獄砸殼/ipa脫殼》

砸殼原理

砸殼顧名思義就是對軟件進行逆向操作抢腐,對已加密的軟件進行解密,從而獲取真實軟件源碼肴颊。
App Store下載的包全都是經(jīng)過蘋果加密過的包氓栈。蘋果不允許開發(fā)者自己加密ipa包渣磷,加密后的ipa包婿着,我們是無法對其進行反編譯的。也無法class-dump醋界,需要對其進行解密才能反編譯竟宋。

砸殼的兩種方式
一、靜態(tài)砸殼

使用已知的解密方法對軟件進行解密叫靜態(tài)砸殼形纺,靜態(tài)砸殼難度大丘侠,需要知道其軟件的加密算法才能對其解密。

二逐样、動態(tài)砸殼

從進程的內(nèi)存空間中獲取軟件鏡像(image)進行轉存處理叫動態(tài)砸殼蜗字,動態(tài)砸殼無需關心軟件的加密技術,只需要從內(nèi)存中獲取即可脂新,這種方法相對簡單挪捕。
為什么可以通過這種方式進行砸殼呢?
任何軟件的加密方式都需要系統(tǒng)內(nèi)核能讀懂争便,系統(tǒng)內(nèi)核不認識也就無法運行级零。系統(tǒng)內(nèi)核能對其運行,也就對其解密了滞乙,解密后鏡像會保存在內(nèi)存中奏纪,我們就是通過這種方式對其進行獲取的。


iOS動態(tài)砸殼系統(tǒng)內(nèi)核流程

砸殼工具介紹

1斩启、clutch

Clutch是由KJCracks開發(fā)的一款開源砸殼工具序调。工具支持iPhone、iPod Touch兔簇、iPad发绢,該工具需要使用iOS8.0以上的越獄手機應用。
Clutch 是一個可執(zhí)行文件男韧,固不能直接clone代碼來使用朴摊。我們可以在(release)頁面下載最新的可執(zhí)行文件來使用。

Clutch下載

Clutch是一個在手機執(zhí)行的軟件此虑,我們要將其拷貝到手機(已越獄)甚纲。

  • 連接手機
# ssh root@手機IP
$ssh root@192.168.0.1
  • 拷貝文件到手機
# scp 被拷貝文件名 root@機IP:可執(zhí)行文件地址;
# 手機中的這個目錄地址(/usr/bin)的文件,是在任何地方都可以執(zhí)行的目錄文件朦前。
$scp Clutch-2.0.4 root@192.168.0.1:/usr/bin
  • 列出可以砸殼的列表
# 列出可以砸殼的列表(列表中都是正在運行的APP)
$Clutch -i
  • 砸殼
# Clutch –d 應用ID
$ Clutch -d 4
  • 完成后會打印文件保存路徑
# com.gotokeep.keep-iOS9.0-(Clutch-2.0.4)-2.ipa 是導出的包名
DONE: /private/var/mobile/Documents/Dumped/com.gotokeep.keep-iOS9.0-(Clutch-2.0.4)-2.ipa
Fnished dumping com.gotokeep.keep in 40.1 seconds
  • 通過ifunbox打開手機上面路徑介杆,將包拷貝到電腦
  • 驗證是否砸殼成功(檢查包內(nèi)的MachO文件)
# Keep是MachO文件
$ otool -l Keep | grep crypt

2鹃操、dumpdecrypted

Github開源工具, dumpdecrypted這個工具就是通過建立一個名為dumpdecrypted.dylib的動態(tài)庫春哨,插入目標應用實現(xiàn)脫殼荆隘。

  • Git Clone
# clone 
$git clone https://github.com/stefanesser/dumpdecrypted.git
  • Make 編譯生成動態(tài)庫
# 在文件的目錄下執(zhí)行make
$make
  • 遠程拷貝到手機
#拷貝到手機跟目錄下
# scp 拷貝
# dumpdecrypted.dylib 動態(tài)庫
# root 手機root賬號
# 192.168.0.1 手機IP地址
# ~/ 手機根目錄
$scp dumpdecrypted.dylib root@192.168.0.1:~/
  • 連接手機
# ssh root@手機IP
$ssh root@192.168.0.1
  • 查看需要砸殼的app列表路徑
# 查看需要砸殼的app列表路徑
$ps -A
  • 砸殼:通過DYLD_INSERT_LIBRARIES 環(huán)境變量插入動態(tài)庫執(zhí)行
$DYLD_INSET_LIBRARIES=路徑
  • 完成后會生成應用名.decrypted 文件,dumpdecrypted只給我們導出了Mach-O文件赴背,沒有同時把資源導出來椰拒,也沒有打包成ipa,所以它的速度更快一些凰荚。
  • 找到在手機跟目錄的應用名.decrypted 通過ifunbox拷貝到電腦
  • 驗證是否砸殼成功
# Keep是MachO文件
$ otool -l `應用名.decrypted` | grep crypt

3燃观、frida-ios-dump

該工具基于frida提供的強大功能通過注入js實現(xiàn)內(nèi)存dump然后通過python自動拷貝到電腦生成ipa文件。

安裝Mac端frida

  • 查看python版本便瑟,Mac都是自帶的
$python -V
Python 2.7.10
  • 查看pip版本缆毁,沒有則安裝
# 安裝pip
$sudo easy_install pip
  • 安裝frida
# 安裝frida
$sudo pip install frida-tools
  • 安裝frida出現(xiàn)的問題

問題1:

chian$ sudo pip uninstall prompt-toolkit
The directory '/Users/chian/Library/Caches/pip/http' or its parent directory
is not owned by the current user and the cache has been disabled.
Please check the permissions and owner of that directory. 
If executing pip with sudo, you may want sudo's -H flag.
frida安裝問題

解決辦法:

$sudo-H pip install frida-tools

問題2:Uninstalling a distutils installed project (six)
解決辦法:

$sudo pip install frida –upgrade –ignore-installed six

配置frida-ios-dump環(huán)境

  • clone iOS-dump
$sudo git clone https://github.com/AloneMonkey/frida-ios-dump
  • 進入目錄安裝即可
$sudo pip install -r frida-ios-dump/requirements.txt –upgrade
  • 安裝出現(xiàn)的問題:
    問題1:
$frida-tools 1.2.2 has requirement prompt-toolkit<2.0.0,>=0.57, but you'll have prompt-toolkit 2.0.7 which is incompatible

解決辦法:降低 prompt-toolkit 版本

# 卸載
$sudo pip uninstall prompt-toolkit
# 安裝指定版本
$sudo pip install prompt-toolkit==1.0.6

越獄手機iOS端安裝frida

  1. 啟動 Cydia
  2. 添加軟件源 軟件源 Sources -> 編輯 Edit(左上角)-> 添加 Add(右上角)-> 輸入 https://build.frida.re/
  3. 根據(jù)設備的32位或64位cpu構架安裝對應的frida。
  4. 連接手機(連接教程)輸入列出可砸殼應用命令檢查是否可以使用frida-ps -U
  5. 修改dump.py參數(shù)
$vim /opt/dump/frida-ios-dump/dump.py
#用戶名
User = 'root'
# 密碼
Password = 'alpine'
# 手機IP地址或者映射地址
Host = 'localhost'
# 端口號到涂,端口號在設置USB連接時修改了
Port = 2222
  1. 設置別名
    打開.bash_profile
$vim ~/.bash_profile

在末尾加上一條

# 注意:/opt/dump 是文件目錄路徑脊框,可以按需更改。
alias dump.py="/opt/dump/frida-ios-dump/dump.py"

使別名生效

source ~/.bash_profile

通過frida砸殼

  1. 打開終端映射端口
# 映射端口
$iproxy 12345 22
  1. 新建終端窗口連接手機
# 127.0.0.1 是IP地址
# -p 表示端口號
$ssh -p 12345 root@127.0.0.1
  1. 砸殼
# 列出可砸到應用列表
$frida-ps -U
# 砸其中的QQ
$dump.py QQ

砸殼成功后會在frida-ios-dump目錄下生成砸殼后的ipa包践啄。

  1. 完成砸殼驗證是否砸殼成功
# Keep是MachO文件
$ otool -l `應用名.decrypted` | grep crypt

手動砸殼

請?zhí)D查看手動砸殼

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末浇雹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子往核,更是在濱河造成了極大的恐慌箫爷,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聂儒,死亡現(xiàn)場離奇詭異虎锚,居然都是意外死亡,警方通過查閱死者的電腦和手機衩婚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門窜护,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人非春,你說我怎么就攤上這事柱徙。” “怎么了奇昙?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵护侮,是天一觀的道長。 經(jīng)常有香客問我储耐,道長羊初,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮长赞,結果婚禮上晦攒,老公的妹妹穿的比我還像新娘。我一直安慰自己得哆,他們只是感情好脯颜,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贩据,像睡著了一般栋操。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乐设,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天讼庇,我揣著相機與錄音,去河邊找鬼近尚。 笑死,一個胖子當著我的面吹牛场勤,可吹牛的內(nèi)容都是我干的戈锻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼和媳,長吁一口氣:“原來是場噩夢啊……” “哼格遭!你這毒婦竟也來了?” 一聲冷哼從身側響起留瞳,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拒迅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后她倘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體璧微,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年硬梁,在試婚紗的時候發(fā)現(xiàn)自己被綠了前硫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡荧止,死狀恐怖屹电,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情跃巡,我是刑警寧澤危号,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站素邪,受9級特大地震影響外莲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜娘香,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一苍狰、第九天 我趴在偏房一處隱蔽的房頂上張望办龄。 院中可真熱鬧,春花似錦淋昭、人聲如沸俐填。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽英融。三九已至,卻和暖如春歇式,著一層夾襖步出監(jiān)牢的瞬間驶悟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工材失, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留痕鳍,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓龙巨,卻偏偏與公主長得像笼呆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子旨别,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 概述 軟件脫殼诗赌,顧名思義,就是對軟件加殼的逆操作秸弛,把軟件上存在的殼去掉(解密)铭若。 砸殼原理 應用加殼(加密)提交給...
    沒八阿哥的程序閱讀 7,114評論 0 2
  • 砸殼 提交給Appstore發(fā)布的App,都經(jīng)過官方保護而加密递览,這樣可以保證機器上跑的應用是蘋果審核過的叼屠,也可以管...
    king_jensen閱讀 1,352評論 0 1
  • 很久沒有發(fā)文章了憎兽,最近沉迷逆向無法自拔冷离,開始寫點東西做個小總結吧,后續(xù)慢慢更新吧纯命,全當記錄西剥,共同學習。 方法一亿汞、f...
    NBeanN閱讀 10,508評論 2 9
  • 我們?nèi)粘i_發(fā)提交給Appstore發(fā)布的App瞭空,都經(jīng)過官方保護而加密,這樣可以保證機器上跑的應用是蘋果審核過的,也...
    妖精的菩薩閱讀 18,475評論 1 14
  • —01— 我亦乖亦壞我不胖不瘦可不可以做你的丫頭? 周六的教室很冷清旧找,空無一人溺健,空調(diào)不加吝嗇地吹著風,剛剛立秋的季...
    啤酒鱸魚閱讀 2,756評論 34 57