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

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

 

 

 

 

 

 

 

 

版权声明:本文为dzqdzq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/dzqdzq/p/14415733.html