安卓逆向之基於Xposed-ZjDroid脫殼

http://bbs.pediy.com/thread-218798.htmjava

 

 

前言

以前介紹了普一般見的反編譯模式 但對於使用了 360加固 棒棒 愛加密 等等的加固應用就沒辦法了、android

你會發現反編譯出來的dex 只有幾個類 邏輯都是調用so   git

真正的dex會被加載到內存中隱藏起來 加固應用都是多dex這種形式github

要想拿到他真正的dex 須要進行脫殼處理  基本原理都是從內存中dump 我通常會先用工具來嘗試 不行的話就得上 IDA(反彙編神器)超級強的一個工shell

具 殺手級別 貫穿移動端 PC端的逆向 但使用IDA 進行靜態分析 動態調試脫殼就變的很麻煩了 並且並非一兩天能學會的安全

之後會介紹使用 咱們今天先用工具嘗試簡單的脫殼微信

ZjDroid工具介紹

ZjDroid是基於Xposed Framewrok的動態逆向分析模塊,逆向分析者能夠經過ZjDroid完成如下工做: 一、DEX文件的內存dump 二、基於Dalvik關鍵指針的內存BackSmali,有效破解主流加固方案 三、敏感API的動態監控 四、指定內存區域數據dump 五、獲取應用加載DEX信息。 六、獲取指定DEX文件加載類信息。 七、dump Dalvik Java堆信息。 八、在目標進程動態運行lua腳本。app

ZjDroid github開源的一個項目 主要功能就是脫殼 基於內存dump 其餘功能通常  做者很NB 總有些人能夠把Xposed玩出花來框架

我下篇博客會介紹一個針對安卓端應用分析工具 很強大!工具

工具準備

已ROOT手機一臺並裝好xpsoed框架在裝上ZjDroid模塊 

JEB  apk專業逆向工具 可是和IDA同樣要花錢 吾愛論壇提供破解版本

這裏提一下jeb的優點 能夠直接打開apk進行反編譯 而已還原效果好

jd-gui看反編譯出來的jar(源碼)有些代碼爲註釋狀態 顯示不出來  但JEB 確定能夠所有還原

愛盤地址 ZjDroid地址

實戰案例

某個朋友託我逆向個應用 叫微丟丟 微信營銷的 去官網下載APK 拖到JEB裏簡單的看了下

只有幾個類 一看就是加固應用 而且使用的是360加固   這種結構的類 在有個Application 鐵定的加固應用

至於作了哪些操做 基本都是常見的套路 釋放so文件 到應用沙盒目錄下

注意 JEB 反編譯出來的代碼 初始狀態都爲smali  須要用快捷鍵Q或者鼠標右鍵Decompile下

簡單分析事後 下載apk到安裝好ZjDroid的手機中   打開應用到主界面 

咱們須要獲取這個應用的pid值 這就須要用到一個命令了 PC端 WIN+X+R CMD 進入CMD窗口輸入命令

命令: adb shell dumpsys activity top

獲取到當前程序的Activity信息 這個命令很實用 最好記一下

若是顯示過多 能夠寫成 adb shell dumpsys activity top |more  按行輸出

獲取這個應用的包名 com.haiqu.oem 還要牢記這個pid 8445以後的操做都會用到他

接着咱們來使用pid查看這個應用在手機裏面 dex 所在的位置

查詢 dex 信息 所在位置

am broadcast -a com.zjdroid.invoke --ei target 8445 --es cmd '{action:dump_dexinfo}'

有些時候輸入這條命令會報一條警告:

WARNING: linker: app_process has text relocations. This is wasting memory and is a security risk. Please fix.
WARNING: linker: app_process has text relocations. This is wasting memory and is a security risk. Please fix.

警告:連接器:app_process有文本重定位。 這是浪費記憶,是一個安全隱患。 請修復 

無視就能夠 警告而已

記住先adb shell 一下進到手機目錄 在輸入這條命令

輸入這條命令 咱們發現並無什麼實際的變化 須要使用ZjDroid 特有的查看LOG命令

LOG 查詢  後戳爲你要查詢應用的包名
adb logcat -s zjdroid-shell-com.haiqu.oem

記住在開個CMD窗口哦 

這就獲取到了 apk所在的位置 filepath: /data/app/com.haiqu.oem-1.apk   記下來  下一步咱們會用到這個

這裏說明下 5792 是我重啓了次手機 pid變成了5792

開始脫殼  命令:

am broadcast -a com.zjdroid.invoke --ei target 5792 --es cmd '{action:backsmali, "dexpath":"/data/app/com.haiqu.oem-1.apk"}'

輸入完命令 回到LOG cmd窗口進行查看

上面的/data/data/com.haiqu.oem/files/dexfile.dex  就是脫出來的dex 拿到了dex基本就是拿到了源碼

咱們使用RE文件管理器 進到這個目前下 直接使用QQ發送電腦不行 該文件不支持此操做

須要把他挪到根目錄下 在使用豌豆莢或者其餘工具 直接發送到電腦上

在使用 安卓逆向助手把dex轉成jar 或者用dexjar 都行 就可使用jd-gui直接查看代碼 工具不少 我以前有一篇博客介紹了安卓逆向助手的使用 不懂的能夠去看下  JEB也能夠直接打開dex格式文件 直接進行查看

總結

到這裏這個工具最重要的功能介紹完畢 很簡單 但也能對付一些普通加殼應用

但勝在效率快 很方便  缺點不能重打包但若是單純的想看代碼 進行學習或者HOOK操做 也夠用了

相關文章
相關標籤/搜索