基于 frida 实现的逆向工具包 hooker
?
hooker逆向工作臺:https://github.com/CreditTone/hooker
hooker 是一個基于 frida 實現(xiàn)的 逆向工具包。為逆向開發(fā)人員提供統(tǒng)一化的腳本包管理方式、通殺腳本、自動化生成hook腳本、內(nèi)存漫游探測activity和service、firda版JustTrustMe。
?
?
hooker 和 frida、objection 有什么不同
?
- 職責(zé)不同:frida 注重打造調(diào)試引擎、objection 注重將 frida 的 api 簡單封裝一下讓你好快速上手 frida。而 hooker 是重新站在一個安卓應(yīng)用開發(fā)和安卓逆向工程師的角度去打造的更加專業(yè) Android 逆向工作臺,重新定義了逆向 android 的工作方式。
- 封裝不同:frida 是基于gumjs(V8)、C/C++封裝的調(diào)試引擎,用于動態(tài) Hook 跟蹤、攔截和主動調(diào)用函數(shù)等。hooker 是基于 frida 作為引擎和自己打造的 Dex 庫(radar)調(diào)用 Android Framework 層代碼完成的。
- 交互方式不一樣:frida 和 objection 只有 attach 上才能操作各種指令,而 hooker 提供 shell 命令行交互式讓你可以通過 jadx 進行動靜結(jié)合分析。
- 更注提供重 Android 逆向 思路和線索:frida 和 objection 沒有對任何 Android Freamwork 層 的 hook 和能主動調(diào)用代碼點位進行封裝,這使得難以有逆向思路。而 hooker 的幾乎所有命令都是圍繞 Android Freamwork 進行封裝,讓一個即使沒有 Android 開發(fā)經(jīng)驗的人也能快速找到逆向分析思路。
- hook 腳本產(chǎn)出方式不一樣:frida 你需要先進行很多語法方面的學(xué)習(xí),才能完成對各種類的各種方法進行frida腳本的編寫。hooker 不需要你了解 frida 語法細(xì)節(jié)。比如你只需通過j okhttp3.OkHttpClient:newCall 就可以生成一個 hook okhttp3.OkHttpClient 類的 newCall 方法的腳本, 即使對于任何一個被混淆的類操作也是如此。(你應(yīng)該把更多的時間和精力放在逆向思路上,而不是熟悉某些語法上。)
- 提供操作原生 AndroidUI 功能:你可以 ./attach 每個 app 目錄下的 android_ui.js 腳本,它提供了通過 ViewId、ViewText 找到 Android 原生的 View 并點擊,或者你想強制打開某個 Activity(比如某個界面只有會員才能進入,這時候你就可以采用 Android "原生代碼" 打開的方式)。
?
?
環(huán)境部署
?
hooker 僅支持在 Linux 和 MacOS 下運行,并且現(xiàn)在和將來都不會支持 windows 操作系統(tǒng)!
?
git clone 項目
ubuntu:~$ git https://github.com/CreditTone/hooker.git ubuntu:~$ cd hooker ubuntu:~$ ls?
安裝依賴
ubuntu:~/hooker$ pip install -r requirements.txt?
手機連接adb
ubuntu:~/hooker$ adb devices List of devices attached FA77C0301476 device?
手機開發(fā)環(huán)境部署
如果你的手機已經(jīng)啟動了frida-server,可以忽略這步。不過還是建議你采用hooker推薦的hluda-server,因為官方的frida-server在啟動之后實際上會向app注入frida-agent.so作為代理,聰明的應(yīng)用可以通過讀取/proc/{pid}/maps檢測到正在被frida調(diào)試。不過,已經(jīng)有ju人幫我們重新編譯了frida-server,把敏感特征去掉了。
注意:部分手機出現(xiàn)部署之后adb連不上的問題,那請使用deploy2.sh。
#以piexl2為例 stephen@ubuntu:~/hooker$ adb push mobile-deploy/ /sdcard/ stephen@ubuntu:~/hooker$ adb shell #進入手機命令行界面 sailfish:/ $ su #進入root權(quán)限命令行模式 sailfish:/ $ sh /sdcard/mobile-deploy/deploy.sh disable android firewall. start frida-server start network adb. deploy successfull. stephen@ubuntu:~/hooker$ #如果你看到你的adb命令被彈出來了,表示已經(jīng)正常部署。部署之后手機的增強功能
- 1.關(guān)閉iptables防火墻,解決部分手機默認(rèn)防火墻開啟的問題
- 2.啟動frida-server,如果你的手機是arm64他將優(yōu)先啟動arm64位的frida-server
- 3.在/data/mobile-deploy目錄生成tools_env.rc 當(dāng)你有內(nèi)網(wǎng)穿透和網(wǎng)絡(luò)服務(wù)轉(zhuǎn)發(fā)、編輯文件、檢測網(wǎng)絡(luò)方面的需求時可以執(zhí)行source /data/mobile-deploy/tools_env.rc,它將臨時生成vi、telnet、frpc、tcpforward、ll命令以便你進行更便捷的開發(fā),如圖
?
?
快速定位
?
自動化生成frida hook腳本
frida版just_trust_me
frida版just_trust_me實戰(zhàn)測試報告
?
?
目錄
?
- hooker和frida、objection有什么不同
- hooker環(huán)境部署
- 1. git clone項目
- 2. 安裝依賴
- 3. 手機連接adb
- 4. 手機開發(fā)環(huán)境部署
- 5. 部署之后手機的增強功能
- 快速開始
- 1. 查看可調(diào)試進程
- 2. attach一個應(yīng)用
- 3. 應(yīng)用工作目錄
- 應(yīng)用工作目錄的命令
- 1. hooking
- 2. attach
- 3. spawn
- 4. objection
- 5. xinitdeploy
- 6. kill
- 應(yīng)用工作目錄的通殺腳本
- 1. url.js
- 2. activity_events.js
- 3. click.js
- 4. android_ui.js
- 5. keystore_dump.js
- 6. edit_text.js
- 7. text_view.js
- 8. ssl_log.js
- 9. object_store.js
- 10. hook_RN.js
- 11. just_trust_me.js
- 12. just_trust_me_okhttp_hook_finder.js
- hooker調(diào)試命令行
- a-打印Activity棧
- b-打印Service棧
- c-掃描指定Object
- d-展開Object[]、List或Map
- v-以View方式查看對象
- e-檢測類在內(nèi)存中是否存在
- s-正則表達(dá)式掃描類
- j-生成指定類的hook腳本
- k-生成字符串hook腳本
- hooker高級應(yīng)用
- radar.dex
- 腳本的內(nèi)置函數(shù)
- 1. loadDexfile(dexfile)
- 2. checkLoadDex(className,dexfile)
- 3. loadXinitDexfile(dexfile)
- 4. loadXRadarDexfile()
- 5. fastTojson(javaObject)
- 6. getPrettyString(javaObject)
- 7. getField(javaObject, fieldName)
- 8. storeObjectAndLog(javaObject)
- 原生ui自動化
- 1. startActivity(activityName)
- 2. contextStartActivity(activityName)
- 3. contextStartActivity(activityName)
- 4. home()
- 5. back()
- 6. finishCurrentActivity()
- 7. clickByText(text)
- 8. clickById(id)
- 9. hover(x,y,upStepLength)
- 10. viewTree()
- 遠(yuǎn)程frida支持
- 更新教程
- 1. clone最新項目
- 2. 方式一覆蓋核心文件到你的hooker
- 3. 方式二覆蓋你的應(yīng)用工作目錄到最新hooker
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的基于 frida 实现的逆向工具包 hooker的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell 中 $(( )) 与 $(
- 下一篇: Dom4j完整教程~字符串与XML的转换