news 2026/9/30 2:22:07

小程序逆向加解密实录-元一软件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
小程序逆向加解密实录-元一软件

小程序逆向加解密实录

反编译

想要逆向wx小程序首先要找到小程序的路径

Android:/data/data/com.tencent.mm/MicroMsg/xxxxxxxxxxxxxxxxxxxxxxxxx(wxid)/appbrand/pkg/xxx.wxapkg(小程序版本号.wxapkg)

iOS:/User/Containers/Data/Application/xxxx-xxx-xxxxx-xxxx-xxxxxxx(wx安装后的uuid)/Library/WechatPrivate/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(wxID)/WeApp/LocalCache/release或debug/wxxxxxxxxxxxxxxxx(小程序id)/xxx.wxapkg(小程序版本号.wxapkg)

此目录下存放的.wxapkg文件就是小程序打包后的文件。如果想找到自己需要的小程序,可将此目录下的文件都删除,重新打开小程序,新生成的wxapkg文件就是要找的小程序。

小程序逆向工具:https://github.com/xuedingmiaojun/wxappUnpacker

解包主包

windows系统使用: ./bingo.bat testpkg/master-xxx.wxapkg Linux系统使用: ./bingo.sh testpkg/master-xxx.wxapkg

解包子包

windows系统使用: ./bingo.bat testpkg/sub-1-xxx.wxapkg-s=../master-xxx Linux系统使用: ./bingo.sh testpkg/sub-1-xxx.wxapkg-s=../master-xxx

静态分析

通过抓包分析,登录包及以前的数据包均未加密只采用了base64编码

而登录后的包则使用了加密

我们打开反编译后的项目,通过接口名称搜索

该接口其实就是传了一个"{}"大括号,关键则是t方法。我们继续追踪该方法

最终发现data段会通过 header中有没有flag为1的标志以及有没有access_token去判断是否要加密

加密则使用aes128 CBC的加密模式,密钥和IV则是从一个randomString中取的,现在我们来看一下这个randomString

原来这个randomString是在登录时生成的一个32位的字符串,本地在Storage中存储,在登录时会由RSA加密,通过factor字段发送至服务器,我们再看一下登录包中的内容,果然有factor字段。

动态调试

由于密钥并不固定,那我们应该如何测试呢?虽然js代码我们无法Hook,但是却可以动态调试呀。首先安装wx开发者工具,将反编译后的包,导入wx开发者工具当中

AppID我们使用测试号即可

将项目导入后首先会报_typeof3 is not a function的错误,此时我们需要将详情-本地设置-将JS编译成ES5取消勾选

之后项目又会报错,不在合法域名列表中

此时我们需要将详情-本地设置-将不校验合法域名勾选

再次编译项目,发现仍有问题,提示
VM2_INTERNAL_STATE_DO_NOT_USE_OR_PROGRAM_WILL_FAIL is not defined

后发现出现的几处,均为处理异常时调用,代码直接注释掉即可

再次编译已无报错信息产生,现在我们直接选择真机调试

发现应用已经可以调试了,提示:第一次调试时,尽量不要挂代理,否则可能连不上调试器。可以先正常启动一次调试,然后结束调试再挂代理,再选择真机调试。

我们在登录时下断点

登录时会触发断点

这样我们就知道randomString的值了,再由之前静态分析加解密可知,randomString会被分成两部分前16位为key,后16位为iv。我们查看一下现在加密的数据

再使用此次生成的randomString来解密,发现可正常解密,可以愉快的测试了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/30 2:20:05

A Sparsity Predicting Approach for Large Language Models via Activation Pattern Clustering

文章主要内容和创新点 主要内容 本文聚焦大型语言模型(LLMs)的激活稀疏性(即输入仅激活部分神经元),旨在通过高效预测激活模式降低计算成本。由于直接预测单个神经元的激活状态计算开销极大(因神经元数量庞大),作者提出一种基于聚类的激活模式压缩框架:将相似的激活…

作者头像 李华
网站建设 2026/9/30 2:20:04

DS@GT at Touch\‘e: Large Language Models for Retrieval-Augmented Debate

文章主要内容和创新点 主要内容 本文是乔治亚理工学院DS@GT团队为参与2025年CLEF Touch竞赛中的“检索增强辩论(RAD)”任务所做的研究。研究聚焦于大型语言模型(LLMs)在辩论中的两类应用:一是结合论据数据集生成结构化辩论回应,二是对辩论过程中的表述进行评估。 方法:…

作者头像 李华
网站建设 2026/9/30 2:17:46

大麦抢票脚本实战指南:三步跑通 Python 自动下单全流程

大麦抢票脚本实战指南:三步跑通 Python 自动下单全流程 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 手动抢票要刷页面、找按钮、填观演人,慢一步就…

作者头像 李华