標籤:please 分享 很多 簡單的 src location cas 工具 androi
http://bbs.pediy.com/thread-218798.htm
前言
之前介紹了普通常見的反編譯模式 但對於使用了 360加固 棒棒 愛加密 等等的加固應用就沒辦法了、
你會發現反編譯出來的dex 只有幾個類 邏輯都是調用so
真正的dex會被載入到記憶體中隱藏起來 加固應用都是多dex這種形式
要想拿到他真正的dex 需要進行脫殼處理 基本原理都是從記憶體中dump 我一般會先用工具來嘗試 不行的話就得上 IDA(反組譯碼神器)超級強的一個工
具 殺手層級 貫穿移動端 PC端的逆向 但使用IDA 進行靜態分析 動態調試脫殼就變的很麻煩了 而且並不是一兩天能學會的
以後會介紹使用 我們今天先用工具嘗試簡單的脫殼
ZjDroid工具介紹
ZjDroid是基於Xposed Framewrok的動態逆向分析模組,逆向分析者可以通過ZjDroid完成以下工作: 1、DEX檔案的記憶體dump 2、基於Dalvik關鍵指標的記憶體BackSmali,有效破解主流加固方案 3、敏感API的動態監控 4、指定記憶體地區資料dump 5、擷取應用載入DEX資訊。 6、擷取指定DEX檔案載入類資訊。 7、dump Dalvik Java堆資訊。 8、在目標進程動態運行lua指令碼。
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操作 也夠用了
安卓逆向之基於Xposed-ZjDroid脫殼