http://bbs.pediy.com/thread-218798.htmjava
以前介紹了普一般見的反編譯模式 但對於使用了 360加固 棒棒 愛加密 等等的加固應用就沒辦法了、android
你會發現反編譯出來的dex 只有幾個類 邏輯都是調用so git
真正的dex會被加載到內存中隱藏起來 加固應用都是多dex這種形式github
要想拿到他真正的dex 須要進行脫殼處理 基本原理都是從內存中dump 我通常會先用工具來嘗試 不行的話就得上 IDA(反彙編神器)超級強的一個工shell
具 殺手級別 貫穿移動端 PC端的逆向 但使用IDA 進行靜態分析 動態調試脫殼就變的很麻煩了 並且並非一兩天能學會的安全
之後會介紹使用 咱們今天先用工具嘗試簡單的脫殼微信
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 確定能夠所有還原
某個朋友託我逆向個應用 叫微丟丟 微信營銷的 去官網下載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.
無視就能夠 警告而已
記住先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操做 也夠用了