新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/9/30 2:22:08来源:尧图网络
小程序逆向加解密实录-元一软件
小程序逆向加解密实录反编译想要逆向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来解密发现可正常解密可以愉快的测试了。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

vDisk虚拟磁盘全解析:云桌面镜像批量部署与性能优化实战 2026/9/30 3:26:24

vDisk虚拟磁盘全解析:云桌面镜像批量部署与性能优化实战

这两年做云桌面项目,被问得最多的一个问题就是:五十台终端要统一装系统、统一装软件,能不能别一台一台去折腾?我的回答通常很简单——如果你的诉求是“让所有机器保持一致、更新一次全部生效”,那 vDisk(虚…

阅读更多 →
Unreal多线程实战:为什么不用std::thread及替代方案解析 2026/9/30 3:26:23

Unreal多线程实战:为什么不用std::thread及替代方案解析

说实话,我刚从普通 C 项目转到 Unreal 开发那阵子,手特别“痒”。写了几年服务端代码,多线程早就习惯了,打开 UE 工程第一反应就是:直接std::thread拉起来一个线程干活不就行了?结果就是被现实狠狠教育了一…

阅读更多 →
vDisk虚拟磁盘实战:PXE引导与50台云桌面终端部署全解析 2026/9/30 3:26:23

vDisk虚拟磁盘实战:PXE引导与50台云桌面终端部署全解析

最近接了个云桌面项目,客户要求一台物理主机带 50 个桌面终端,系统还得分 Windows 和 Linux 两拨。刚开始头也大,不过理顺之后发现核心就一句话:用好 vDisk(虚拟磁盘)这套方案,部署效率和后期维…

阅读更多 →
基于SpringBoot2与Vue3的课程答疑系统前后端分离实战 2026/9/30 3:26:23

基于SpringBoot2与Vue3的课程答疑系统前后端分离实战

做课程答疑系统这件事,听起来不算新鲜,但真要把它做扎实,技术点一点都不少。我最近完成的一套 Java Web 课程答疑系统源码,选型是 SpringBoot2 Vue3 MyBatis-Plus MySQL8.0,前后端分离,带完整文档。这套…

阅读更多 →
基于PHP的GEO排名优化系统:架构设计、多城市分站与Schema标记实战 2026/9/30 3:26:23

基于PHP的GEO排名优化系统:架构设计、多城市分站与Schema标记实战

GEO这个词最近在国内技术圈和营销圈刷屏的频率实在太高了。我做PHP开发十多年,从最早的SEO关键词堆砌,到后来AEO(Answer Engine Optimization,答案引擎优化)里围着结构化数据打转,再到现在的GEO&#xff08…

阅读更多 →
C++继承方式本质:访问控制契约而非语法选择 2026/9/30 3:26:17

C++继承方式本质:访问控制契约而非语法选择

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉