[JS逆向] 微信小程序逆向工程實戰

博客配套代碼與工具發布于github:微信小程序?(歡迎順手Star一下?)

相關爬蟲專欄:JS逆向爬蟲實戰??爬蟲知識點合集??爬蟲實戰案例?逆向知識點合集


前言:

微信小程序對于很多嘗試JS逆向的人群來說,都是一個不小的挑戰。相比于常規逆向調試,其主要問題在于難以下手,不知道小程序逆向常規流程應該怎么走。但別擔心,本文會詳細介紹相關邏輯搭建與具體操作流程,幫助讀者更好理解。

一、思路構建

1.準備工具:

  • 任意一款調試工具(fiddler,Charles,Wireshark等):因為運行是在微信小程序上,所以無法用常規的開發者工具直接調試,得專門下載一個工具再操作。
  • 相關的兩個工具包(用于反編譯):一者負責將數據包先解密,另一者負責將解密后的數據包再還原成源碼。這倆工具包我會在github的鏈接上提供,自取即可
  • 微信開發者工具:用于斷點調試debug,去官網下就行。

2.具體思路:

首先要明白:微信小程序逆向工程是指通過分析、反編譯或調試微信小程序,來理解其內部機制、數據流、加密算法以及潛在漏洞的過程。這通常涉及對小程序包_APP_.wxapkg)、前端JS代碼、API請求與響應等進行深入分析。

在具體操作上,我們首先會通過一系列步驟,發起對某個小程序的請求,并通過專門的調試工具

獲取該響應查看相關信息。同時在涉及到JS逆向時,常規情況下我們需要在瀏覽器調試中不斷設置斷點、調用堆棧來查看相關信息。但因為在微信小程序上我們無法做到這點。所以需要通過獲得微信小程序緩存的相關加載信息,將其先解密反編譯獲得最原始的小程序數據包,再將它們寫入到微信開發者工具,把相關報錯信息處理一下就可以在上面自由調試了。之后所有操作都跟常規JS逆向思路一致。該咋分析咋分析即可。

綜上,思路構建后之后我們就開始在下面詳細操作演示。因為本文重點是對微信小程序逆向的通用處理思路,所以并不會涉及到某個具體小程序的JS逆向實戰。

二、具體操作

注:以下操作默認你已經把準備工具安裝準備完畢。

1. 找到微信小程序當前位置,并清空當前緩存:

點開電腦微信-設置-文件管理-打開文件夾-返回到上一級的WeChat Files-進入到下級的Applet

可以看到如圖信息。除了上面兩個public文件,其他文件都是小程序的緩存信息,將除開倆public的文件全部刪除即可。后面再載入新的微信小程序才可以更直觀的看到。

2. 搜索微信小程序并對其發起響應:

點開你想要的小程序,并在里面隨意按幾下多觸發點事件,

這時候再返回,就能看到這個小程序的信息已經被緩存好了。

點進這個wx2f...,這個正是我們需要的數據包。

3. 用第一個軟件解密

這里需要分別用到倆工具,第一個先解密,第二個再反編譯。

這里的wxpack文件夾是我提前裝好的,如果沒有該文件夾下載一個即可。

直接選擇剛才我們找好的后綴為.wxapkg的文件就行,里面有多少個文件就都解密過來:

它會在wxpack里生成一次解密后的文件,這里生成完后會出現一堆wx...很混亂,就將其還是改成原來名字(如果你不改就是重名,涉及多個文件時就會來回覆蓋,所以重命名才能保證不覆蓋)。

4. 用第二個軟件反編譯

在當前有unveilr.exe的目錄下,搜cmd:

進入cmd后再寫unveilr.exe (wxpack的目錄),按回車

看到這些綠色INFO即代表成功獲取。

看到產生了對應的文件夾即反編譯到了小程序的源碼。

5.將該源碼放到微信開發者工具內,并修改報錯


點+號,目錄就用剛才的那個源碼文件,使用測試號且不使用云服務,再點擊創建。信任并運行。

這時候大概率會出現模擬器啟動失敗,并給出相應報錯讓我們排。這里的解決就沒什么好辦法了,因為報錯原因不一。看錯誤自己調就行,每次調試完后點擊編譯查看新的運行是否可以,調不出來的可以問問ai怎么搞。

這里簡要介紹下幾個常見的報錯怎么處理:

(一)、

在app.json里找到componentFramework的字段,將對應的值改成"exparser"即可

(二)、

插件未授權使用,點擊添加插件即可。如果還提示要授權才行,那比較難頂。但仍可以試試將該插件刪去,假若不影響js調試與小程序運行的話(雖然通常都會影響)。

(三)、

并非合法域名,那么讓它不要去校驗即可。在詳情,本地設置,并勾選不校驗即可。

調試錯誤完成后再進行常規JS逆向即可,后面的JS因項目而異,此處礙于篇幅不再贅述。

四、總結

微信小程序逆向工程其實相比常規JS逆向,主要特殊點就在于接口在小程序而非web端,所以我們只要能把這個接口問題搞定,就可以像常規的方式一樣去處理小程序了。但還需要注意下:歸咎于小程序的特殊之處,很多地方的處理難以繞過。所以常規我們希望對某個軟件或網址的數據做爬取會從三個角度去考慮:app、web端、小程序端,這仨蛋哪個好叮叮哪個,叮到就是贏,不用糾結非得從哪個端口去叮到。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91847.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91847.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91847.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于5G系統的打孔LDPC編碼和均勻量化NMS譯碼算法matlab性能仿真

目錄 1.引言 2.算法仿真效果演示 3.數據集格式或算法參數簡介 4.算法涉及理論知識概要 4.1打孔技術 4.2 均勻量化NMS譯碼 5.參考文獻 6.完整算法代碼文件獲得 1.引言 在5G通信系統中,信道編碼技術是保障高速率、高可靠性數據傳輸的核心支撐,而低…

基于Java標準庫讀取CSV實現天地圖POI分類快速導入PostGIS數據庫實戰

目錄 前言 一、天地圖POI分類簡介 1、數據表格 2、分類結構 二、從CSV導入到PG數據庫 1、CSV解析流程 2、數據轉換及入庫 3、入庫成果及檢索 三、總結 前言 在之前的博客中,曾經對高德地圖和百度地圖的POI分類以及使用PostGIS數據庫來進行管理的模式進行了詳…

人-AI交互中的信息論不同于傳統的信息論,其信息的增量≠不確定性的減量

在人機交互(Human-AI Interaction, HAI)領域,信息論的應用確實與傳統的信息論有所不同。這種差異主要源于人機交互HAI中信息的復雜性、動態性以及人類認知的特點。1. 傳統信息論的核心概念傳統信息論由克勞德香農(Claude Shannon&…

K8s 通過 Scheduler Extender 實現自定義調度邏輯

1. 為什么需要自定義調度邏輯 什么是所謂的調度? 所謂調度就是指給 Pod 對象的 spec.nodeName 賦值 待調度對象則是所有 spec.nodeName 為空的 Pod 調度過程則是從集群現有的 Node 中為當前 Pod 選擇一個最合適的 實際上 Pod 上還有一個平時比較少關注的屬性:…

7.19 換根dp | vpp |滑窗

lcr147.最小棧通過兩個棧 維護實現class MinStack { public:stack<int> A, B;MinStack() {}void push(int x) {A.push(x);if(B.empty() || B.top() > x)B.push(x);}void pop() {if(A.top() B.top())B.pop();A.pop();}int top() {return A.top();}int getMin() {retur…

以太坊的心臟與大腦:詳解執行客戶端(EL)與共識客戶端(CL)

好的&#xff0c;各位技術同道&#xff0c;歡迎再次光臨我的博客。在上一篇文章中&#xff0c;我們聊了如何搭建一個以太坊測試節點&#xff0c;并提到了節點需要同時運行“執行客戶端”和“共識客戶端”。很多朋友對此表示了濃厚興趣&#xff0c;想深入了解這兩者究竟是什么&a…

Debian-10,用glibc二進制預編譯包,安裝Mysql-5.7.44 筆記250716

Debian-10,用glibc二進制預編譯包,安裝Mysql-5.7.44 筆記250716 &#x1f4e6; 一步腳本 #!/bin/bash### 安裝依賴 apt install -y libaio1 libnuma1 libncurses5### 下載MySQL-5.7.44 的 glib二進制包: mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz ,(如果不存在) mkdir…

用邏輯回歸(Logistic Regression)處理鳶尾花(iris)數據集

# 導入必要的庫 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from…

華大北斗TAU1201-1216A00高精度雙頻GNSS定位模塊 自動駕駛專用

在萬物互聯的時代&#xff0c;您還在為定位不準、信號丟失而煩惱嗎&#xff1f;TAU1201-1216A00華大北斗高精度定位模塊TAU1201是一款高性能的雙頻GNSS定位模塊&#xff0c;搭載了華大北斗的CYNOSURE III GNSS SoC 芯片&#xff0c;該模塊支持新一代北斗三號信號體制&#xff0…

堅持繼續布局32位MCU,進一步完善產品陣容,96Mhz主頻CW32L012新品發布!

在全球MCU市場競爭加劇、國產替代加速的背景下&#xff0c;嵌入式設備對核心控制芯片的性能、功耗、可靠性及性價比提出了前所未有的嚴苛需求。為適應市場競爭&#xff0c;2025年7月16日&#xff0c;武漢芯源半導體正式推出基于CW32L01x系列低功耗微控制器家族的全新成員&#…

用線性代數推導碼分多址(CDMA)

什么是碼分多址 碼分多址&#xff1a;CDMA允許多個用戶同時、在同一頻率上傳輸數據。它通過給每個用戶分配唯一的、相互正交的二進制序列來實現區分。用戶的數據比特被這個碼片序列擴展成一個高速率的信號&#xff0c;然后在接收端通過相同的碼片序列進行相關運算來回復原數據 …

mac 配置svn

1.查看brew的版本&#xff1a;brew install subversion2.安裝brew命令&#xff1a;bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"3.把路徑添加到path環境變量&#xff1a;echo export PATH"/opt/homebrew/b…

使用 .NET Core 的原始 WebSocket

在 Web 開發中&#xff0c;后端存在一些值得注意的通信協議&#xff0c;用于將更改通知給已連接的客戶端。所有這些協議都用于處理同一件事。但鮮為人知的協議很少&#xff0c;鮮為人知的協議也很少。今天&#xff0c;將討論 WebSocket&#xff0c;它在開發中使用最少&#xff…

編程實現Word自動排版:從理論到實踐的全面指南

在現代辦公環境中&#xff0c;文檔排版是一項常見但耗時的工作。特別是對于需要處理大量文檔的專業人士來說&#xff0c;手動排版不僅費時費力&#xff0c;還容易出現不一致的問題。本文將深入探討如何通過編程方式實現Word文檔的自動排版&#xff0c;從理論基礎到實際應用&…

力扣經典算法篇-25-刪除鏈表的倒數第 N 個結點(計算鏈表的長度,利用棧先進后出特性,雙指針法)

1、題干 給你一個鏈表&#xff0c;刪除鏈表的倒數第 n 個結點&#xff0c;并且返回鏈表的頭結點。 示例 1&#xff1a;輸入&#xff1a;head [1,2,3,4,5], n 2 輸出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 輸入&#xff1a;head [1], n 1 輸出&#xff1a;[] 示例 3&…

VIT速覽

當我們取到一張圖片&#xff0c;我們會把它劃分為一個個patch&#xff0c;如上圖把一張圖片劃分為了9個patch&#xff0c;然后通過一個embedding把他們轉換成一個個token&#xff0c;每個patch對應一個token&#xff0c;然后在輸入到transformer encoder之前還要經過一個class …

【服務器與部署 14】消息隊列部署:RabbitMQ、Kafka生產環境搭建指南

【服務器與部署 14】消息隊列部署&#xff1a;RabbitMQ、Kafka生產環境搭建指南 關鍵詞&#xff1a;消息隊列、RabbitMQ集群、Kafka集群、消息中間件、異步通信、微服務架構、高可用部署、消息持久化、生產環境配置、分布式系統 摘要&#xff1a;本文從實際業務場景出發&#x…

LeetCode中等題--167.兩數之和II-輸入有序數組

1. 題目 給你一個下標從 1 開始的整數數組 numbers &#xff0c;該數組已按 非遞減順序排列 &#xff0c;請你從數組中找出滿足相加之和等于目標數 target 的兩個數。如果設這兩個數分別是 numbers[index1] 和 numbers[index2] &#xff0c;則 1 < index1 < index2 <…

【C# in .NET】19. 探秘抽象類:具體實現與抽象契約的橋梁

探秘抽象類:具體實現與抽象契約的橋梁 在.NET類型系統中,抽象類是連接具體實現與抽象契約的關鍵橋梁,它既具備普通類的狀態承載能力,又擁有類似接口的行為約束特性。本文將從 IL 代碼結構、CLR 類型加載機制、方法調度邏輯三個維度,全面揭示抽象類的底層工作原理,通過與…

Apache RocketMQ + “太乙” = 開源貢獻新體驗

Apache RocketMQ 是 Apache 基金會托管的頂級項目&#xff0c;自 2012 年誕生于阿里巴巴&#xff0c;服務于淘寶等核心交易系統&#xff0c;歷經多次雙十一萬億級數據洪峰穩定性驗證&#xff0c;至今已有十余年發展歷程。RocketMQ 致力于構建低延遲、高并發、高可用、高可靠的分…