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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Auto.js逆向分析-提取脚本文件(附源码)

發布時間:2024/3/13 编程问答 131 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Auto.js逆向分析-提取脚本文件(附源码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Auto.js:能在手機沒有ROOT的情況下,制作各種運行于安卓的自動化腳本,類似手機按鍵精靈。
公眾號中發送:AI小子,將獲得一個AI學習大禮包的推送。

項目倉庫地址:

碼云:
https://gitee.com/liuliuzhu/Autojs_tools
Github:
https://github.com/66pig/Autojs_tools

apk下載(Github):
https://github.com/66pig/Autojs_tools/releases/download/v1.2/Auto.js.apk

今天要干啥?


看到好用的 Auto.js 腳本,咱想瞅瞅這東西是咋寫的,咋辦?

干他!兄弟們上!!奧利給!!!

什么是Auto.js


有啥特點?

  • 無需root:基于無障礙服務;

  • 基于控件:以坐標為基礎的按鍵精靈、腳本精靈很容易出現分辨率問題,而以控件為基礎的Auto.js則沒有這個問題;

  • 上手簡單:使用javascript編寫,支持中文變量名;

  • 可打包 :可以將JavaScript打包為apk文件;

  • 其他:結合Tasker、自動布局分析、生成簡單代碼等功能,詳見官方文檔。

都能干些啥?

替代用戶做一些手機操作,比如以下腳本:

  • 一鍵收集螞蟻森林能量

  • 微信跳一跳腳本

  • 支付寶星星球腳本

  • 手機屏幕取色器

  • 百度貼吧一鍵簽到

  • 東方頭條、趣頭條自動刷金幣

  • 超星爾雅學習刷課腳本

  • 王者榮耀刷金幣

  • 紅包雨

  • ……

  • 準備工具


    Python環境、Enjarify、Apktool、JD-GUI、測試APP、AndroidStudio、Xposed(可以使用免ROOT的VirtualXposed)

    以上軟件我已經給大家準備好了:

    工具下載地址:
    https://pan.baidu.com/s/1t6THinA5cX_qEPcrv1__kQ? 密碼:y6w0
    若連接失效,請在公眾號聊天界面發送關鍵詞:Autojs逆向

    Apktool 查看目標 APP 資源文件


    Apktool 下載地址:
    https://ibotpeaches.github.io/Apktool/install/

    第一步:下載所需的 2 個文件,一個 jar 和一個腳本,注意正確的保存方式是這樣的:

    正確的姿勢

    提示:下載下來的 jar 文件后面有版本號,需要手動去掉,請保持名字與上圖一致

    第二步:給 apktool 腳本賦予可執行權限:

    $?chmod a+x apktool

    運行apktool腳本,檢查是否成功:

    $?./apktool

    出現如圖所示關于apktool參數的說明,表示成功了

    第三步:開始對咱們的測試 APP 下手

    1.將測試 APP 放到當前文件夾中

    2.執行命令

    $ ./apktool d 點贊狂魔_v1.2.0.apk -o result

    或者不用 apktool 腳本,直接用 apktool.jar

    $ java?-jar?apktool.jar?d?點贊狂魔_v1.2.0.apk?-o?result

    3.執行成功后,會在當前文件夾中生成一個名為?result?的資源文件

    4.用編輯器打開 AndroidManifest.xml 文件,分析一下 Activity

    經過統計,一共有 6 個 Activity,從名字上基本就能確定他們的作用,而小子要做的腳本源碼分析一定是與?ScriptExecuteActivity?這個 Activity 有關:

    ?# 1 : LogActivity -> 日志相關 # 2 : SplashActivity -> 啟動頁相關 # 3 : SettingsActivity -> 設置相關 # 4 : ScriptExecuteActivity -> 腳本執行相關 # 5 : PermissionRequestActivity -> 權限許可相關 # 6 : ScreenCaptureRequestActivity -> 屏幕截圖相關

    記住:我們之后需要從?ScriptExecuteActivity?這個文件入手進行分析

    Enjarify 生成 Java 字節碼


    Enjarify 下載地址:https://github.com/google/enjarify
    —— 來自Google推薦

    將?點贊狂魔_v1.2.0.apk(小子的測試APP)放到 enjarify項目中,并在當前目錄下執行以下命令:

    $ python3 -O -m enjarify.main 點贊狂魔_v1.2.0.apk

    命令執行成功,會在當前文件夾中生成一個名字為?[測試APP名字]-enjarify.jar?的文件

    JD-GUI?的使用


    將生成的 jar文件(點贊狂魔_v1.2.0-enjarify.jar)直接拖拽到 JD-GUI 中打開:

    導入 jar 后的 JD-GUI 界面

    通過搜索定位到?ScriptExecuteActivity.class?,并 open

    在?ScriptExecuteActivity.class中找了一圈,并未發現任何可用的信息,所以只能換一個思路:通過 DDMS 來動態調試APP中函數調用流程(棧跟蹤法)

    DDMS 棧跟蹤法


    已知:DDMS 在 Android SDK的 sdk目錄下的 tools 目錄中

    前提:手機通過 USB 調試模式連接至電腦,或者在電腦中使用模擬器

    查詢可調試設備名稱

    $?adb?devices

    查詢到我所連接的調試設備

    注意:如果你已通過 USB 連接至電腦,或者已經開啟了模擬器,但使用這條命令時卻查詢不到任何信息,請檢查手機是否開啟了開發者模式與 USB 調試模式。如果以上操作均沒有問題,請通過以下命令重啟adb:

    $ adb kill-server # --停止adb服務 $ adb start-server # --開啟adb服務

    確保 adb 服務已經開啟且手機能正常連接之后,通過which命令找到 adb 的位置(adb 默認在?Android SDK的 sdk 目錄下的platform-tools目錄中),隨之找到 DDMS 的位置

    $ which adb # /Users/xingjiarui/Library/Android/sdk/platform-tools/adb $ cd /Users/[計算機用戶名]/Library/Android/sdk/tools/

    在tools目錄中的monitor可執行程序就是打開DDMS的入口,直接運行monitor

    ./monitor

    DDMS 啟動界面

    主界面

    等LogCat穩定下來了,清空所有日志

    清空后的界面

    在調試設備上打開測試APP:

    測試APP界面

    當測試APP完全打開后,全選LogCat窗口所有日志文件,并粘貼到編輯器進行分析:

    日志獲取正確姿勢

    前面小子已經分析出:啟動 測試APP 后第一個 Activity 界面是ScriptExecuteActivity,那么可以在日志中查找一下,有沒有出現?ScriptExecuteActivity這個類中的方法,以及在這個ScriptExecuteActivity類附近有沒有其他類出現

    通過搜索,在?ScriptExecuteActivity這個類調用的過程中執行了一次?XJavaScriptEngine類中的?execute 方法

    打開 JD-GUI 找到?XJavaScriptEngine.execute一探究竟

    XJavaScriptEngine.execute

    找到了突破口,小子完全可以直接攔截解密方法的結果即腳本數據源碼

    advancedEncryptionStandard.decrypt

    位置已經確定,接下來開始編寫Xposed插件進行數據攔截+存儲

    插件編寫


    對?com.stardust.autojs.engine.encryption.ScriptEncryption.decrypt?方法進行攔截,拿到返回結果即解密數據:

    /*** @author 溜溜豬* @date 2020/05/23* @desc 微信公眾號:AI小子*/ public class Hook extends Application implements IXposedHookLoadPackage, Config {@Overridepublic void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable { ?final Class<?> clazz = XposedHelpers.findClass("com.stardust.autojs.engine.encryption.ScriptEncryption",loadPackageParam.classLoader); ?XposedHelpers.findAndHookMethod(clazz,"decrypt",byte[].class,int.class,int.class,new XC_MethodHook() {@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {// 獲取到的解密數據String str = HookUtils.bytesToString((byte[]) param.getResult());HookUtils.strToFile(str, FILEPATH);}});} }

    由于拿到的解密結果為字節數組,無法正常使用,所以,特意寫了一個HookUtils工具類,來處理返回結果:

    /*** @author 溜溜豬* @date 2020/05/23* @desc 微信公眾號:AI小子*/ public abstract class HookUtils {/*** 將字節數組轉為字符串* @param bs: 字節數組* @return*/public static String bytesToString(byte[] bs) {try {// 通過指定的字符集解碼指定的byte數組并構造一個新的字符串return new String(bs, "utf-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}return null;} ?/*** 將字符串寫入文件并保存* @param data: 腳本數據文件*/public static void strToFile(String data, String filePath) {String path = filePath.substring(0, filePath.lastIndexOf("/"));File destDir = new File(path);if (!destDir.exists()) {destDir.mkdirs();}FileWriter fwriter = null;try {fwriter = new FileWriter(filePath);fwriter.write(data);} catch (IOException ex) {ex.printStackTrace();Log.d("溜溜豬提示", ex.toString());} finally {if (fwriter != null)try {fwriter.flush();fwriter.close();Log.d("溜溜豬提示", "保存路徑為:" + filePath);} catch (IOException ex) {ex.printStackTrace();}} ?} }

    最后再處理一下UI界面,打包輸出:

    輸出的軟件界面

    使用方法


    第一步:在手機中安裝以下軟件:

  • VirtualXposed

  • Auto.js腳本提取器

  • 測試軟件(Auto.js打包出來的軟件)


  • <點贊狂魔>就是小子準備的測試軟件

    第二步:打開VirtualXposed,并將Auto.js腳本提取器與點贊狂魔克隆進去(或者直接安裝進去)

    VirtualXposed是什么?


    它的工作原理,有點像那些雙開軟件。你可以這么理解:它會在我們的手機里生成了一個「虛擬環境」,然后在這個環境中啟用 Xposed。一切都是虛擬的,所以叫它做 VirtualXposed

    第三步:在 VirtualXposed 中打開Xposed Installer?軟件,并開啟Auto.js腳本提取器模塊

    正確的開啟姿勢:勾選中需要打開的模塊

    第四步:重啟?VirtualXposed 軟件,并打開測試軟件<點贊狂魔>,等測試軟件完全開啟后,退出VirtualXposed,回到真機環境,打開?Auto.js腳本提取器。如果以上操作步驟沒有問題,此刻便可看見提取出來的腳本文件的路徑,已經顯示出來了

    接下來就可以直接對腳本文件進行編輯或分享了,也可以直接導入Auto.js軟件

    選擇打開方式

    正確打開姿勢

    注意:要想直接通過軟件中的按鈕打開腳本文件或者分享腳本文件,一定要在手機真實環境中打開Auto.js腳本提取器方可操作,因為虛擬環境中通常沒有可以用來打開腳本文件的應用,如果想要在虛擬環境中打開,就需要安裝一些必要的編輯器。如果想要在虛擬環境中分享,就需要安裝一些必要的社交應用

    補充說明


    文章僅用于交流軟件的安全知識,切勿將技術用于非法用途。若讀者因此做出危害他人軟件安全的行為后果自負,與平臺以及原作者無關,特此聲明!

    如果想跟小子一起探索人工智能的奧秘

    請長按下方二維碼關注我吧

    總結

    以上是生活随笔為你收集整理的Auto.js逆向分析-提取脚本文件(附源码)的全部內容,希望文章能夠幫你解決所遇到的問題。

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