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

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

大家知道app 有安卓和ios

安卓是apk 現(xiàn)在基本上apk都是經(jīng)過加密的 想動(dòng)態(tài)脫殼沒一定的技術(shù)是搞不定的

IOS是ipa 今天我主要講的是這個(gè)

準(zhǔn)備好反編譯設(shè)備

1.一套越獄的ios手機(jī) 我的設(shè)備是iphone6 ios8.3 已越獄

2.一個(gè)mac系統(tǒng) 可以是vmware上的mac 黑蘋果 或者直接用自己的mac電腦 我為了方便就用了黑蘋果(如何搞黑蘋果可以看我之前發(fā)表的博客)

給大家看下我的環(huán)境吧:

image
image

準(zhǔn)備反編譯環(huán)境

1. 越獄手機(jī)上

1.1 Cydia上面安裝 OpenSSH 安裝成功后 可以remote到你的手機(jī) 默認(rèn)的密碼是 alpine

1.2 github上下載clutch然后放置在手機(jī)的 bin目錄下(可以使用Itools工具)

image

解釋一下這個(gè)工具是干什么的:如果app是直接從appstore下載的話 默認(rèn)會(huì)被加密的 那么你用反編譯工具IDA(下面會(huì)說到)的話就不行。得用這個(gè)工具解密生成一個(gè)ipa

2. mac機(jī)器上面準(zhǔn)備好 LLDB Remote Debug 環(huán)境 (lldb是什么具體可以搜索Google)

2.1 配置Debug Server

從 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/ DeviceSupport/7.0.3\ /DeveloperDiskImage.dmg 獲得debugserver 然后復(fù)制到桌面(中間的那個(gè) DeviceSupport 可以根據(jù)具體路徑替換)

image

2.2 光有這個(gè)不行 還得弄下簽名

創(chuàng)建一個(gè) 文件叫 Entitlements.plist 然后用 xcode打開進(jìn)行編輯寫入

image

輸入命令 codesign -s - --entitlements entitlements.plist -f debugserver 之后 把這個(gè) debugserver 傳回 手機(jī)設(shè)備 的 /usr/bin/debugserver (可以使用Itools工具)

image

3. windows系統(tǒng)上安裝反編譯利器IDA工具,大家可以百度搜破解版

image

反編譯實(shí)驗(yàn)開始

在mac系統(tǒng)上 ssh連接 手機(jī)設(shè)備

image

如果你的app是從appstore上下載的那么請(qǐng)先用clutch解密 【我這里就舉了一個(gè)Discord程序的例子】

1 用clutch -i 命理 找到你安裝的app的編號(hào)

image

2 用clutch -d 2命令進(jìn)行解密操作

image

由于某頭條我是從越獄版本Itools上下載的 本身就已經(jīng)解密過了 所以不需要上面的操作

我直接用Itools導(dǎo)出ipa包

image

打開 Fiddler 進(jìn)行抓包分析(如何配置手機(jī)代理請(qǐng)自行百度了)

打開app的注冊(cè)頁面

image

這里有一個(gè)獲取驗(yàn)證碼的圖片的請(qǐng)求

image

請(qǐng)求的url里面有一個(gè)sign參數(shù) 一看就知道這個(gè)是md5加密

接下來我們就是要拿到這個(gè)md5是如何生成的

用IDA打開ipa包(第一次打開需要花點(diǎn)時(shí)間)

按SHift+F12打開 搜索String關(guān)鍵字 "sign"

image

雙擊進(jìn)入

image

繼續(xù)雙擊進(jìn)入 Function

image

按 F5

image

這里我們可以得知 加密的類叫 BFCrytor 里面有一個(gè) MD5方法

在Function列表搜索一下 果然有

image

好了 已經(jīng)成功找到了 加密md5的類和方法名稱了

接下來開始最重要的步驟了 要根據(jù) 類和方法名稱找到 程序運(yùn)行的 內(nèi)存地址 然后對(duì)這個(gè)內(nèi)存地址進(jìn)行下斷點(diǎn)

1.把ipa包c(diǎn)opy到mac系統(tǒng)里面 然后 用 Class-Dump****XApp -H -A -S -o****headers/

dump出來的頭文件里面標(biāo)記了 IMP 的地址 輸入到 header文件夾

在該文件夾搜索剛剛我們找到的類名稱 BFCryptor 用Xcode打開

image
image

記錄下這個(gè)內(nèi)存地址 0x0000000100241e30

lldb 掛載

用 px -a 命令找到 app 運(yùn)行的 id

image

然后用命令執(zhí)行掛載 執(zhí)行完后 發(fā)現(xiàn)app被卡主了 一切都靜止了

image

再打開另外一個(gè)bash 執(zhí)行本地命令

lldb> platform select remote-ios> process connect connect://iOSIP:8888

過一會(huì)兒就會(huì)看到下面這個(gè)就代表掛載成功

image

獲取 ASLR 偏移量

image

那么 斷線的內(nèi)存地址 的算法 就是 基址 + 偏移量

也就是md5 方法的內(nèi)存地址 = 0x00000000000fc000 + 0x0000000100241e30

用下面的命令進(jìn)行下斷點(diǎn)

image

斷點(diǎn)下完后 執(zhí)行 c 命令 讓 app 跑起來 觸發(fā)一個(gè)網(wǎng)絡(luò)請(qǐng)求 就會(huì)發(fā)現(xiàn) 斷點(diǎn)停下來的

image

用 po 命令打印參數(shù) 發(fā)現(xiàn) arg3就是我們md5加密前的數(shù)據(jù)

image

接下來 就寫一個(gè)模擬請(qǐng)求實(shí)驗(yàn)一下

image
image

請(qǐng)求成功了!!!!!

總結(jié):

這篇文章給大家講了 如何配置反編譯環(huán)境

反編譯一個(gè)app 拿到加密方式的一般步驟是怎樣的。

md5的方式還是比較簡單的,用rsa算法加密(例如國壽app,12306app等)的就比較難。但是方法都是一樣的。

祝大家好運(yùn)!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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