日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓逆向之基于Xposed-ZjDroid脱壳 逆向分析(脱壳)

發布時間:2025/3/11 编程问答 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓逆向之基于Xposed-ZjDroid脱壳 逆向分析(脱壳) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

安卓逆向——某力播逆向分析(脫殼)

?

一、環境

這一步真的頭疼,環境很重要,各種測試,一下是我測試的環境,由于沒有真機,就拿虛擬機做測試

1.? Xposed? ? ? ?2.?FDex2? ? ? ? ?3. fiddler? ? ?4.?軟件?

?

二、抓包

通過 fiddler 抓包分析參數

可以看到,倆次請求的參數, udid 是一樣,可以不用變,timestamp 應該是個時間戳,signature 可以經過某種變化的,也是主要分析的

三、脫殼

1、查看加固??

首先對apk進行反編譯

  • # 首先對apk進行反編譯

  • apktool d com.iCitySuzhou.suzhou_8.2.apk

  • 進入到反編譯后的文件夾

  • 進入到反編譯后的文件夾

  • cd com.iCitySuzhou.suzhou_8.2

  • 查看lib文件夾下的so文件

  • .

  • ├── libBugly.so

  • ├── libYLEncode.so

  • ├── libjcore110.so

  • ├── liblbs.so

  • ├── liblocSDK6a.so

  • ├── libshella-2.9.0.2.so

  • ├── libshellx-2.9.0.2.so

  • ├── mix.dex

  • └── mixz.dex

  • 如何確認是什么加固呢? 不同的加固廠商有不同的加固特征, 查看lib下的so文件libshella這個就是 樂加固 的特征,可以直接百度搜索一下, 不知道如何確認 就把每個文件都在百度搜索一下。

    2、進行脫殼

    通過上一步我們知道了該App為樂加固, 現在我們通過FDex2來進行脫殼, 打開我們已經安裝好的FDex2

    ?? ?? ? ? ? ?

    點擊引力播

    ? ? ? ? ? ??

    將這幾個文件 使用adb pull 拉取到本地?

    使用jadx把這幾個文件打開看下, 看看哪個是我們所需要的脫殼后的文件,

    經過驗證com.iCitySuzhou.suzhou0015542488.dex

    這個就是我們脫殼后所需要的文件。 脫殼成功

    四、signature分析

    1、定位signature

    全局搜索signature

    可以看到很多結果,這個就需要自己一個一個去看看,去找到正確的,

    可以看到這里,應該可以看出是個賦值的操作吧,點進去

    我這里用了反混淆,更好的分析代碼,不然搜索一下出現很多不太好分析,找到 那個方法 鼠標右擊 跳轉申明 (跳到申明函數的地方)

    (這里反混淆,只是吧方法或者變量變成 唯一的好查找而已,工具----》反混淆)

    m12059a(udid, valueOf)? 這里傳了倆個參數,應該udid 應該獲取的設備號,valueOf 是獲取的時間戳

    這里 signature 參數方法,在 跳轉聲明 到下面這個地方,這里應該是調用了什么 MD5 的加密方法

    通過 上面應該函數的 參數,進行 MD5 加密? 在經過 字節偏移 得到的值

    這里 有倆種方法,1.? 自己?重寫 signature算法? ? 2. 復制 原來的 java 代碼

    我用 第二種方法吧,

    1.? ?復制 java代碼,保持為 java 文件?

    2.? ?編譯Java成class?javac MySig.java

    2.? ?把class文件打包成jar包? ?jar ?cvf ?(新jar的名字) ?(.class文件,多個則中間用空格隔開)??

    ? ? ? ? ?如: jar? cvf??test.jar test.class??test2.class

    3.? ?python 來執行 jar 包 ,jpype 包,,用 pip install?jpype1 安裝

    5.? 擼代碼

    把 3個?signature ,timestamp,udid 參數配置好就可以模擬請求了。代碼如下

  • from jpype import *

  • import time

  • import requests

  • ?
  • uuid = 'IMEI860000000065903-IMSI460001993232212'

  • # udid = "IMEI867686021698806-IMSI460NNNNNNNNNNNN"

  • ?
  • str_2 = str(int(time.time()))

  • str_1 = "f1190aca-d08e-4041-8666-29931cd89dde"

  • ?
  • str_sign = "%s&&%s&&%s"%(uuid,str_2,str_1)

  • ?
  • def Getsignature(str_sign):

  • jvm_path = getDefaultJVMPath()

  • ?
  • jar_path = 'F:\\mysig.jar' # jar包路徑

  • startJVM(jvm_path, '-ea', '-Djava.class.path=%s' % jar_path) # 啟動虛擬機

  • JClass2 = JClass('mysig')

  • instance = JClass2()

  • sum = str(instance.get_sign(str_sign))

  • print(type(sum),str(sum))

  • print(type(str(sum)),str(sum))

  • ?
  • # shutdownGuiEnvironment()

  • # shutdownJVM()

  • return sum

  • ?
  • def GetDate(signature):

  • Headers = {

  • 'sys': 'Android',

  • 'sysVersion': '6.0.1',

  • 'appVersion': '8.2',

  • 'appVersionCode': '54',

  • 'udid': uuid,

  • 'clientType': 'android',

  • 'timestamp': str_2,

  • 'signature': signature,

  • 'Host': 'app.suzhou-news.cn',

  • 'Connection': 'Keep-Alive',

  • 'Accept-Encoding': 'gzip',

  • 'User-Agent': 'okhttp/3.9.0',

  • }

  • ?
  • for i in range(1,100):

  • Url = 'https://app.suzhou-news.cn/api/v1/appNews/getBannerNewsList7?page={}&bannerID=11 '.format(i)

  • res = requests.get(Url,headers=Headers, verify=False)

  • print('弟 %s 頁'%(i),res.json())

  • ?模擬請求了100頁,下面是 運行的結果,

    ?

    作者?源代碼??下載

    ?

    補充 :

    環境要慢慢測試,模擬器很多問題,建議真機,最好 Android 6 ,以下是我測試過的環境

    ? ? ? ??

    ?

    前言

    之前介紹了普通常見的反編譯模式 但對于使用了?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格式文件 直接進行查看

    ?

    ?

    總結

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

    ?

    總結

    以上是生活随笔為你收集整理的安卓逆向之基于Xposed-ZjDroid脱壳 逆向分析(脱壳)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。