爲了防止數據被截獲,有些App把返回數據作了加密,好比下面這個:android
content 部分就是密文。咱們今天就來搞搞它。git
返回值是個json,那麼它必定要把密文解析出來再解密,因此咱們先搜索 content",看看有沒有什麼收穫:github
不開心,結果有點多,這個很差辦……spring
今天介紹一個大佬的新玩具json
hooker 是一個基於frida實現的逆向工具包。爲逆向開發人員提供統一化的腳本包管理方式、通殺腳本、自動化生成hook腳本、內存漫遊探測activity和service和其餘任意對象。微信
聽起來很拉風的樣子。markdown
按照說明配置好app
git clone https://github.com/CreditTone/hooker.git
cd hooker
pip install -r requirements.txt // 安裝依賴
複製代碼
而後先把App啓動起來,再運行 ./hookeride
這時候會列出當前全部的進程名,若是沒有列出來,那就多是frida-server沒有啓動
輸入 咱們要分析的app包名 com.yxxxx.axxxxx,就會進入到交互式控制檯,這裏提供了幾個有意思的功能,不過今天咱們暫時用不到。
ex 退出交互式控制檯。
hooker替咱們生成了一些輔助腳本,咱們進入 com.yxxxx.axxxxx 文件夾
fenfeiMac:com.yxxxx.axxxxx feifei$ ls
activity_events.js log
android_ui.js object_store.js
attach objection
click.js spawn
edit_text.js spider.py
hook_RN.js ssl_log.js
hooking text_view.js
just_trust_me.js url.js
keystore_dump.js xinit
kill xinitdeploy
複製代碼
這裏咱們用到的是 text_view.js 輔助命令。
爲何呢?
先看看做者的說明
跟蹤TextView的setText和getText,獲取TextView的真實Class。通常setText的堆棧信息會帶出業務層的數據model處理邏輯,進而進一步分析到業務層數據bean封裝類。
密文數據總歸是要解密成明文顯示出來的,咱們在顯示明文的時候打印出堆棧,不就能夠分析它的解密過程了嗎?
召喚Jadx
逮住了,顧名思義,應該就是這個 EncryptUtils.O000000o
這時候能夠用上 hooker 另外一個比較拉風的功能了,自動生成Hook js代碼
先回到以前的那個交互式控制檯。(怎麼回去?退出當前命令,到上級目錄 從新輸入 ./hooker 命令唄)
fenfeiMac:com.yxxx.axxx fenfei$ cd ..
feifenMac:hooker fenfei$ ./hooker
PID Name Identifier
----- --------------------------------------- ------------------------------------------------
2505 ANT HAL Service com.dsi.ant.server
17295 Analytics com.miui.analytics
17166 Android Services Library android.ext.services
......
Enter the need to attach package.
: com.yxxx.axxx
It's com.yxxx.axxx that you have attached app.
--------------------------------------------------
Please enter e, s, j, c or ex command.
a: Discovering activities.
b: Discovering services.
c: Discovering object. eg:'c {objectId}'
d: Object2Explain. eg:'d {objectId}'
v: Discovering view. eg:'v {viewId}'
e: Determines whether a class exists. eg:'e android.app.Application'
s: Discovering classes by a class'regex. eg:'s com.tencent.mm.Message.*'
t: Discovering offspring classes by a class'name. eg:'t com.tencent.mm.BasicActivity'
j: Generating hooked js. eg:'j okhttp3.Request$Builder:build'
k: Generating hooked the string generation js with a keyword. eg:'k {YourKeyword}'
l: Generating hooked the param generation js with a param keyword. eg:'l {YourKeyword}'
m: Discovering so module.
: j com.bxxx.libcommon.tools.Encrypt -o com.bxxx.libcommon.tools.Encrypt.js
Hooking js code have generated. Path is com.yxxx.axxx/com.bxxx.libcommon.tools.Encrypt.js.
複製代碼
ok了,再進入 com.yxxxx.axxxxx 文件夾,跑一下這個js
fenfeiNewMac:hooker feifei$ cd com.yxxx.axxx
feifeiMac:com.yxxx.axxx fenifei$ ./hooking com.bxxx.libcommon.tools.Encrypt.js
複製代碼
結果出來了
大佬們造了不少有意思的輪子,善於使用這些輪子,每每能夠事半功倍。 hooker 還有不少有意思的功能等待挖掘。
好男兒當有一份拉幾把倒的情懷,把人生當作一次旅行好了,不少事情其實都無所謂的,看淡些 ——from 魯迅 [社會社會]
TIP: 本文的目的只有一個就是學習更多的逆向技巧和思路,若是有人利用本文技術去進行非法商業獲取利益帶來的法律責任都是操做者本身承擔,和本文以及做者不要緊,本文涉及到的代碼項目能夠去 奮飛的朋友們 知識星球自取,歡迎加入知識星球一塊兒學習探討技術。有問題能夠加我wx: fenfei331 討論下。
關注微信公衆號: 奮飛安全,最新技術乾貨實時推送