关于破解微信小游戏

最近一直在破解某小游戏,且已经达到了一定目的。

关于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内容了

 

 

 

 

 ============ 现在是2025年3月3日============

看到这篇博客约等于看了一个寂寞, 只知道我本人成功了, 并没有实际告诉你们怎么成功的。 今天我就告诉你们吧, 腾讯官方要是封了这个办法不要找我。现在我已经走正道了


就是首先root手机, inotify监听你需要修改的小游戏安装目录, 微信会读取或者创建游戏,先准备好已经修改小游戏, 等微信读这个wxapkg文件后,立即cp, 替换这个文件, 这样运行的时候就是你修改之后的, 这是核心思想, 具体细节还有很多, 我本人是写了一个shell脚本,全程自动化。    

思路告诉你们了,如果还做出来,那就放弃这个行业吧

posted @   Please Call me 小强  阅读(10174)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示