window微信小游戏修改尝试

修改代码并压缩成wxapkg后发现,出现了。 什么加载小程序代码包出错。

开始真正破解之旅....

第一步:寻找突破口, 看到了加载小程序

1. 微信安装目录搜索 “加载小程序失败”

Get-ChildItem -Path "C:\Users\Administrator\AppData\Roaming\Tencent\WeChat\XPlugin\Plugins\RadiumWMPF\8531\extracted" -Recurse -File | Select-String -Pattern "加载小程序" -List

 搜索扑了一个空。。。

2. 打开ida加载WeChatAppEx.exe继续搜索

又扑了一个空。。。。

 3. 怀疑在publicLib.wxapkg和clientPublicLib.wxapkg中,但是加密了。没有wxid

通过ida,找对应解密的地方:wxid = clientlib

 unwxapkg publicLib.wxapkg clientlib   ==> 解压后搜索,扑了一个空

 unwxapkg clientPublicLib.wxapkg clientlib ==> 解压后搜索,扑了一个空

4. 通过内存搜索,这玩意居然在微信进程中,很奇怪了, 开始使用ida打开

 地址:D:\Program Files\Tencent\WeChat

发现没有啥鸟用,因为我修改了所有字符串,发现依旧弹出那个错误弹窗

5. 继续瞎尝试:

小程序的进程是: WeChatAppEx.exe,  弹窗是在这个进程触发的,并且这个弹窗是原生弹窗。明天重点关注这个

=============继续研究===================

 通过SPY查看,发现所有看到小程序都是子窗口。 所有小程序又公用

 

 我发现他们的进程ID一样, 那么我就可以理解chrome浏览器,每个标签一个小游戏。 只不过这个浏览器没有边界,只是单纯的集合窗口。

通过CE工具打开父进程,已经验证了我的猜想:

 

 非常不可思议,WechatAppEx.exe 既可以进程居然可以包含自己。所有代码都在内存中。

拿到了签名信息:

 
    {
        "independent": false,
        "md5": "6ed7104293e96ce66ff63adb4f63d16d",
        "name": "/js/pocketSub.js"
    },
    {
        "independent": false,
        "md5": "56300dfe58baafcf527c0d2bde053ebc",
        "name": "/js/gamesdk.js"
    },
    {
        "independent": false,
        "md5": "60a17409bbf89c9b6583c1491c04ae1f",
        "name": "/js/pocket.js"
    },
    {
        "independent": false,
        "md5": "9ccea23a87fa80fe044baf4ba0795885",
        "name": "__APP__"
    }
]name其实就是解压后wxapkg文件值。

 

这些是未加密的, 我估计windows多了一层处理,先解密在进行md5计算

通过动态调试发现,比较MD5的地方,如果我让这个地方强行不一样,就会加载出现小程序代码包失败。

找到问题就好搞了, 将循环那一坨指令改成赋值语句,然后在走成功跳转的逻辑

最后记住成功跳: jmp     loc_1429028D3

分析完毕, 开始对它进行手术改造:

windows版本改完居然不生效:还需要再看看

 Mac 版本改造完成:/Applications/WeChat.app/Contents/MacOS/WeChatAppEx.app/Contents/Frameworks/WeChatAppEx Framework.framework/Versions/C/WeChatAppEx2_0

WeChatAppEx2_0是WeChatAppEx应用程序修改指令后且移除了签名信息的版本

 改完后现在小程序代码可以随便整了。

posted @ 2024-01-05 01:46  Please Call me 小强  阅读(269)  评论(1编辑  收藏  举报