文章目錄
- 前言
- 一、前置條件
- 二、操作步驟
- 1.進入adb shell
- 2.提取原始碼編譯檔案
- 3.反編譯
前言
對微信小程式進行原始碼反編譯,一般目的為:- 獲取js簽名演算法,過資料包的防篡改策略
- 獲取介面的判斷邏輯,一般用于修改回傳包來達到未授權的效果,在嘗試無法找到爭取的回傳值的時候,需要從原始碼來進行構造
本文旨在記錄如何對一個微信小程式進行編譯獲取其原始碼,后續分析不做分享,因目的不同,分析的方式也會不同
一、前置條件
需要一臺root了的安卓測驗手機,root的方式請自行查找,如果是紅米手機,可以參考我的root方式,博客鏈接
本文演示的步驟,基于macbook m1進行,其他設備操作基本也差不多
二、操作步驟
1.進入adb shell
命令如下(示例):
(base) ? ~ adb shell
davinci:/ $ whoami
shell
# 提權
davinci:/ $ su root
davinci:/ # whoami
root
2.提取原始碼編譯檔案
代碼如下(示例):
davinci:/ # cd /data/data/com.tencent.mm
davinci:/data/data/com.tencent.mm # ls
982178cdd5589cb042c4efb99be0333c WebNetFile ipcallCountryCodeConfig.cfg recovery version_history.cfg
CheckResUpdate appbrand last_avatar_dir regioncode webcompt
ClickFlow autoauth.cfg luckymoney snsreport.cfg webservice
CompatibleInfo.cfg channel_history.cfg media_export.proto staytime.cfg webview_tmpl
CronetCache configlist mmslot systemInfo.cfg
NowRev.ini deviceconfig.cfg mobileinfo.ini textstatus
ProcessDetector ee1da3ae2100e09165c2e52382cfe79f newmsgringtone tmp
WebCanvasPkg heavy_user_id_mapping.dat patch_ver_history.bin trace
重點關注一個很長的用戶隨機碼,比如ee1da3ae2100e09165c2e52382cfe79f和982178cdd5589cb042c4efb99be0333c,分別訪問判斷即可
davinci:/data/data/com.tencent.mm/MicroMsg # cd ./982178cdd5589cb042c4efb99be0333c/
davinci:/data/data/com.tencent.mm/MicroMsg/982178cdd5589cb042c4efb99be0333c # cd appbrand/
davinci:/data/data/com.tencent.mm/MicroMsg/982178cdd5589cb042c4efb99be0333c/appbrand # ls
pagesidx pkg web_renderingcache
davinci:/data/data/com.tencent.mm/MicroMsg/982178cdd5589cb042c4efb99be0333c/appbrand # cd pkg/
davinci:/data/data/com.tencent.mm/MicroMsg/982178cdd5589cb042c4efb99be0333c/appbrand/pkg # ls
_-1223314631_166.wxapkg _-1991183043_171.wxapkg _-86252332_166.wxapkg _1233860900_205.wxapkg _1233860900_230.wxapkg _2106768478_166.wxapkg
_-1223314631_167.wxapkg _-289032338_166.wxapkg _-86252332_167.wxapkg _1233860900_206.wxapkg _1233860900_231.wxapkg _2106768478_171.wxapkg
_-1223314631_168.wxapkg _-289032338_167.wxapkg _-86252332_168.wxapkg _1233860900_207.wxapkg _1233860900_232.wxapkg _288413523_8.wxapkg
這些wxapkg即編譯后的小程式原始碼,為了準確找到目標小程式對應的wxapkg檔案,可以重新訪問目標小程式,之后對這些包進行排序,找到最新的
davinci:/data/data/com.tencent.mm/MicroMsg/982178cdd5589cb042c4efb99be0333c/appbrand/pkg # ls -lt
total 238092
-rw------- 1 u0_a239 u0_a239 907997 2021-12-26 15:25 _255193015_171.wxapkg
-rw------- 1 u0_a239 u0_a239 427489 2021-12-25 09:37 _1245338104_171.wxapkg
-rw------- 1 u0_a239 u0_a239 258272 2021-12-25 09:35 _2106768478_171.wxapkg
-rw------- 1 u0_a239 u0_a239 745490 2021-12-25 09:35 _927440678_171.wxapkg
找到了目標檔案之后,需要將其挪到電腦的目錄下,mac環境下,可以下載一個Android檔案傳輸工具,之后通過mv命令,將該檔案移動到可訪問的目錄,即可拖到電腦目錄下
mv /data/data/com.tencent.mm/MicroMsg/982178cdd5589cb042c4efb99be0333c/appbrand/pkg/_255193015_171.wxapkg /mnt/sdcard/Download

注意:有些情況下是分包,需要洗掉pkg目錄下所有檔案,重新訪問該小程式,之后將所有的wxapkg都移動出來
davinci:/data/data/com.tencent.mm/MicroMsg/982178cdd5589cb042c4efb99be0333c/appbrand # mv /data/data/com.tencent.mm/MicroMsg/982178cdd5589cb042c4efb99be0333c/appbrand/pkg/* /mnt/sdcard/Download/wxpkg
davinci:/mnt/sdcard/Download/wxpkg # ls
_-1223314631_171.wxapkg _-1820590985_171.wxapkg _-372062782_171.wxapkg _1123949441_612.wxapkg _255193015_171.wxapkg
_-1325581962_171.wxapkg _-1991183043_171.wxapkg _-86252332_171.wxapkg _2041131240_171.wxapkg _453111957_171.wxapkg
_-1536422934_171.wxapkg _-289032338_171.wxapkg _-942297262_171.wxapkg _2106768478_171.wxapkg _927440678_171.wxapkg
3.反編譯
使用wxappUnpacker
# 安裝依賴(具體參考下官方github)
npm install
node wuWxapkg.js /Users/spark/tools/安卓武器庫/_255193015_171.wxapkg
忽略分包爆錯,直接進去格式化一下js,Ctrl+F搜索介面
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/393961.html
標籤:其他
下一篇:Android WebView報錯Fatal signal 11 (SIGSEGV), code 2, fault addr解決方法
