教你如何反編譯app,拿到加密方式

你們知道app 有安卓和ios
安卓是apk 如今基本上apk都是通過加密的 想動態脫殼沒必定的技術是搞不定的
IOS是ipa 今天我主要講的是這個
 
準備好反編譯設備
1.一套越獄的ios手機 個人設備是iphone6 ios8.3 已越獄
2.一個mac系統 能夠是vmware上的mac 黑蘋果 或者直接用本身的mac電腦 我爲了方便就用了黑蘋果(如何搞黑蘋果能夠看我以前發表的博客)
 
給你們看下個人環境吧:
 
 
準備反編譯環境
1. 越獄手機上
1.1 Cydia上面安裝 OpenSSH 安裝成功後 能夠remote到你的手機 默認的密碼是 alpine
 
1.2 github上下載clutch而後放置在手機的 bin目錄下(可使用Itools工具)
解釋一下這個工具是幹什麼的:若是app是直接從appstore下載的話 默認會被加密的 那麼你用反編譯工具IDA(下面會說到)的話就不行。得用這個工具解密生成一個ipa
2. mac機器上面準備好 LLDB Remote Debug 環境 (lldb是什麼具體能夠搜索Google)
2.1 配置Debug Server
從  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/ DeviceSupport/7.0.3\ \(11B508\)/DeveloperDiskImage.dmg  得到debugserver 而後複製到桌面(中間的那個  DeviceSupport  能夠根據具體路徑替換)
 
 
 
 
2.2 光有這個不行 還得弄下簽名
建立一個 文件叫 Entitlements.plist 而後用 xcode打開進行編輯寫入
 
輸入命令 codesign -s - --entitlements entitlements.plist -f debugserver 以後 把這個 debugserver 傳回 手機設備 的 /usr/bin/debugserver (可使用Itools工具)
 
 
3. windows系統上安裝反編譯利器IDA工具,你們能夠百度搜破解版
 
 
反編譯實驗開始
在mac系統上 ssh鏈接 手機設備
 
若是你的app是從appstore上下載的那麼請先用clutch解密 【我這裏就舉了一個Discord程序的例子】
1 用clutch -i 命理 找到你安裝的app的編號
2 用clutch -d 2命令進行解密操做
 
因爲某頭條我是從越獄版本Itools上下載的 自己就已經解密過了 因此不須要上面的操做
我直接用Itools導出ipa包
 
打開 Fiddler 進行抓包分析(如何配置手機代理請自行百度了)
打開app的註冊頁面
這裏有一個獲取驗證碼的圖片的請求
請求的url裏面有一個sign參數 一看就知道這個是md5加密
接下來咱們就是要拿到這個md5是如何生成的
用IDA打開ipa包(第一次打開須要花點時間)
按SHift+F12打開 搜索String關鍵字 "sign"
 
雙擊進入
繼續雙擊進入 Function
按 F5
這裏咱們能夠得知 加密的類叫 BFCrytor 裏面有一個 MD5方法
在Function列表搜索一下 果真有
好了 已經成功找到了 加密md5的類和方法名稱了
 
接下來開始最重要的步驟了 要根據 類和方法名稱找到 程序運行的 內存地址 而後對這個內存地址進行下斷點
 
1.把ipa包copy到mac系統裏面 而後 用 Class - Dump XApp - H - A - S - o headers /
dump出來的頭文件裏面標記了 IMP 的地址 輸入到 header文件夾
在該文件夾搜索剛剛咱們找到的類名稱 BFCryptor 用Xcode打開
 
記錄下這個內存地址 0x0000000100241e30
 
lldb 掛載
用 px -a 命令找到 app 運行的 id
而後用命令執行掛載 執行完後 發現app被卡主了 一切都靜止了
 
再打開另一個bash 執行本地命令
> lldb > platform select remote-ios > process connect connect://iOSIP:8888
過一下子就會看到下面這個就表明掛載成功
 
獲取 ASLR 偏移量
 
 
那麼 斷線的內存地址 的算法 就是 基址 + 偏移量
也就是md5 方法的內存地址 = 0x00000000000fc000 + 0x0000000100241e30
用下面的命令進行下斷點
 
斷點下完後 執行 c 命令 讓 app 跑起來 觸發一個網絡請求 就會發現 斷點停下來的
用 po 命令打印參數 發現 arg3就是咱們md5加密前的數據
接下來 就寫一個模擬請求實驗一下
 
 
請求成功了!!!!!
 
總結:
這篇文章給你們講了 如何配置反編譯環境
反編譯一個app 拿到加密方式的通常步驟是怎樣的。
md5的方式仍是比較簡單的,用rsa算法加密(例如國壽app,12306app等)的就比較難。可是方法都是同樣的。
祝你們好運!
相關文章
相關標籤/搜索