關於破解微信小游戲


最近一直在破解某小游戲,且已經達到了一定目的。

關於wxapkg文件解壓和壓縮,我自己本人擴展了一下工具。

附上鏈接:https://github.com/dzqdzq/unwxapkg

安裝方式: npm i git@github.com:dzqdzq/unwxapkg.git -g

修改js代碼后, 然后壓縮,替換原來的wxapkg.  

 

因為不能在開發者工具里運行看日志,也不能在logcat中看微信小程序的輸出日志。 於是開發了一個遠程輸出日志的功能:

服務器代碼:

const express = require('express')
const app = express()
const port = 3000

app.use(express.json())
app.post('/echo', (req, res) => {
  let {m, a} = req.body;
  let f = console[m];
  if(f){
    f.apply(console, a);
  }
  res.sendStatus(200);
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

 

客戶端hook console 代碼:

crayon.framework.dzqLog = (method,args)=>{
                  wx.request({
                    url:"http://192.168.31.158:3000/echo",
                    data:{ "m":method, a:args},
                    method:'post',
                    header:{
                       "Content-Type":"application/json"
                    },
                    success:function(res){
                      // crayon.framework.Toast.Make('請求成功').Show()
                    },
                    fail:function(err){
                      crayon.framework.Toast.Make(err).Show()
                    }
                })};
                
                console.log = function(){
                  crayon.framework.dzqLog('log', Array.from(arguments))
                }
                console.info = function(){
                  crayon.framework.dzqLog('info', Array.from(arguments))
                }
                console.error = function(){
                  crayon.framework.dzqLog('error', Array.from(arguments))
                }
                console.warn = function(){
                  crayon.framework.dzqLog('warn', Array.from(arguments))
                }

 

將改好的代碼重新壓縮成wxapkg文件。  不能直接替換原文件,因為直接替換無效,每次啟動小程序,微信會校驗md5文件信息。 我的方式是文件做了一個監聽,等md5檢驗完后,再讓微信讀取我修改的文件。

 

 

 

 打印日志杠杠滴

 

 

==============2021-03-25----------

以上的日志,我是在真機上跑的, 可以用IP。   今天我發現在模擬器上居然不OK。 提示 fail url not in domain list

 

當然, 這個並不能難住我。既然提示url沒有配置, 那么就直接使用用domain list里的域名, 然后在中間做一個代理, 如果是echo, 那么就走本地, 其他接口就正常訪問服務就行。

至於有哪些域名是已經配置了的, 在代碼里肯定有交待, 直接全局搜索 https:// 就完事, 隨便整一個域名寫上,沒啥難度。

 

配置charles代理 android7以上:

1, 下載chls.pro/ssl    直接到默認目錄: /data/media/0/Download

2, 將證書再導出到Mac電腦

adb pull /data/media/0/Download/downloadfile-1.crt .
openssl -subject_hash_old -in downloadfile-1.crt |head -1

3. 將得到hash值3be31b03

4.  將下載的證書移動到根證書目錄並重命名

/data/media/0/Download/downloadfile-1.crt /system/etc/security/cacerts/3be31b03.0

5. 至此就可以拿到任何app的https內容了

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM