Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >看我如何用云函数撸一个PC小程序代码包在线解密工具

看我如何用云函数撸一个PC小程序代码包在线解密工具

作者头像
薛定喵君
发布于 2022-01-15 03:55:19
发布于 2022-01-15 03:55:19
1.3K00
代码可运行
举报
文章被收录于专栏:薛定喵君薛定喵君
运行总次数:0
代码可运行

使用云函数实现 PC 端小程序包在线解密

前一段时间突发奇想,想白嫖腾讯云云函数的能力来实现无服务模式下 PC 端小程序包的在线解密(注意这里仅仅是做解密)。

因为业余时间以捣鼓有意思的东西作为娱乐活动,对于小程序技术这块本身理解也是比较深刻了,所以碰到相关需求都会首先去想:这 gie 能不能用云函数实现?

于是碰上这种有意思的功能自然想尝试用云函数去搞一下了,顺便积累下云开发经验,看看无服务器云函数到底可以做到什么程度。

开发前准备

开发之前我们是肯定有一套理论指导的,而且这个算法也是开源的。

主要内容如下:

  • 文件特征:文件起始为 V1MMWX
  • 文件加密方法:
    • 首先 pbkdf2 生成 AES 的 key。利用微信小程序 id 字符串为 pass,salt 为 saltiest 迭代次数为 1000。调用 pbkdf2 生成一个 32 位的 key
    • 取原始的 wxapkg 的包得前 1023 个字节通过 AES 通过 1 生成的 key 和 iv(the iv: 16 bytes),进行加密
    • 利用微信小程序 id 字符串的倒数第 2 个字符为 xor key,依次异或 1023 字节后的所有数据,如果微信小程序 id 小于 2 位,则 xorkey 为 0x66
    • 把 AES 加密后的数据(1024 字节)和 xor 后的数据一起写入文件,并在文件头部添加 V1MMWX 标识

有这个理论知识只要专注实现就可以了,而且已经有大佬实现了相应算法,我们只要拿来测试改一改就可以了。

本地调试

这里调试分别使用了 go 语言版本与 nodejs 版本,go 版本是没有问题的,node 版需要稍微改动一下。

调试环境

  • MacOS Catalina 10.15.7
  • Nodejs 14.17.0
  • go 1.17.2 darwin/amd64

本地验证运行 go 及 nodejs 版本都没有问题,然后就是如何迁移到云函数环境了。

云端开发

这里并没有纠结于具体使用什么版本的 node,所以一开始就默认用了 10.15,在腾讯云的云开发控制台创建应用时如果选择 koa 应用就默认是这个版本。

然后就是一顿操作了:

  1. 注册处理路由
  2. 增加文件上传功能(小文件可以用云函数直接接收,大的就不行了会报请求体大小超限错误),上传文件至云存储
  1. 触发解密操作后从云存储下载文件;
  2. 调用 node 脚本去执行解密操作;
  3. 将解密后文件上传至云存储后提供下载链接。

文件上传这块有个小插曲,因为不支持大文件直传,所以专门问了云函数产品页面上的客服,说云函数的使用遇到了问题,结果告诉我说这块不归他们管,需要找云开发团队,然后我就懵了,云函数不是云开发下面的产品吗??咋还不归他们管??这是什么合作关系??不过最后为了解决问题我就加了客服微信,然后客服把云开发的技术大佬们拉了一个外部群,群内有十几个人之多,这阵势可让我是受宠若惊啊。不过最后还是解决了,技术大佬给了个方案,扔了几个文档链接让我自己捣鼓,就是看个文档手撸代码嘛,没啥难的,我就"好的"然后自己捣鼓去了。

具体方案就是:

  1. 前端上传文件
  2. 服务端获取文件 或者获取文件链接

并且额度方面也是够用的:

所以我就按着大佬给的提示继续往下尝试了,编写初始版本。

完事之后我们要进行调试。

云函数调试

这里要区分下大小文件的情况,大文件倒是 OK 的,可以正常获取解密后的文件。

小文件(主要 5M 以内)的情况下测试了很多遍,无一例外都失败了,而且错误原因是(这个和是否使用云存储无关):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "library": "digital envelope routines",
  "function": "EVP_DecryptFinal_ex",
  "reason": "bad decrypt",
  "code": "ERR_OSSL_EVP_BAD_DECRYPT"
}

个人感觉是云端 nodejs 运行时带来的版本兼容问题,因为 10.15 是有些低了,所以将函数下载到了本地并把运行时改为了相对较新的 12.16 看看有没有救。

修改 cloudbaserc.json 里面的 runtime 运行时配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "envId": "xxx",
  "functionRoot": "functions",
  "functions": [
    {
      "name": "koa-decrypt",
      "timeout": 50,
      "runtime": "Nodejs12.16",
      "installDependency": true,
      "handler": "tcbindex.main"
    }
  ]
}

然后使用命令行覆盖上传云函数即可更改云端运行时。

不过遗憾的是并没有作用,错误依旧。

总结

使用最新的无服务模式实现 PC 端代码包解密功能上云,听起来有意思但是实际上做的时候并没有那么美丽,一番体验下来感觉就是坑好多啊。不过还好大文件的解密是执行成功的,算是成功了一半,要啥 🚲。

体验地址

工具地址:PC 代码包在线解密

AppId:wxd968ed6b8bb866da

测试包:__APP__.wxapkg

参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/01/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【愚公系列】《微信小程序与云开发从入门到实践》049-使用云函数
在微信小程序的开发过程中,如何高效地处理业务逻辑和实现复杂功能是每位开发者面临的挑战。云函数作为一种灵活、高效的无服务器计算解决方案,为小程序提供了强大的后台支持,使得开发者能够在云端运行代码,而无需关心服务器的管理与维护。这种架构不仅简化了开发流程,还提升了应用的可扩展性和安全性。
愚公搬代码
2025/01/28
3220
【Web实战】零基础微信小程序逆向
由于传播、利用本公众号亿人安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号亿人安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
亿人安全
2023/11/24
1.4K0
【Web实战】零基础微信小程序逆向
快速上线小程序,Serverless云开发带来哪些极致体验?
云开发(CloudBase)是一款云端一体化的产品方案 ,采用 serverless 架构,免环境搭建等运维事务 ,支持一云多端,助力快速构建小程序、Web应用和APP。
腾讯云开发者
2020/04/07
5.6K0
【开发实战】30分钟完成一个AI小程序
前言:作为一个无任何开发背景的产品经理,我通过一周时间摸索出一个最短开发AI小程序的路径。这里把我的小程序源码,还有需要做的每一步工作都进行了记录和分享。相信你可以按照下面的方式,30分钟完成一个体验版小程序的开发和体验。
陈华山
2020/01/03
8.9K1
腾讯云云函数实现小程序代码包分包数及插件等基础信息非侵入式检测
包文件结构是已知的,见之前发的一篇文章。所以我们只要直接读取分析就好了。需要基于 koa 创建一个云函数,在函数中接收小程序代码包进行分析就可以了。
薛定喵君
2021/08/31
3340
微信小程序云开发与部署
随着微信小程序生态系统的成熟,越来越多的开发者选择使用微信小程序进行移动应用的开发与部署。而微信小程序云开发(WeChat Mini Program Cloud Development)作为一种全新的后端开发模式,极大简化了开发者的工作,减少了在服务端架设、数据库管理等方面的繁琐操作。微信小程序云开发集成了云函数、云数据库、云存储等服务,为小程序的开发提供了强大的支持。本文将详细探讨微信小程序的云开发与部署流程,帮助开发者快速上手并实践。
LucianaiB
2025/02/10
6560
GMTC《在线教育小程序云开发工程化实践》演讲全文
GMTC·2019近日在深圳隆重召开。腾讯在线教育IMWeb团队的高级工程师袁龙在大会上发表了《在线教育小程序云开发工程化实践》的演讲,介绍了腾讯在线教育在小程序工程化,小程序CI、CD,以及云开发在多端开发的探索与实践经验。演讲内容整理如下。 一、腾讯在线教育业务背景 首先介绍下腾讯在线教育下的3个主要业务。 - 面向对成人职业化、兴趣化学习的腾讯课堂 - 面向小学、初高中K12领域的企鹅辅导 - 面向少儿英语学习的ABCmouse 这三块业务在各个端都有产品落地,来满足不同端用户的需求,当然也包括小程
用户1097444
2022/06/29
6980
GMTC《在线教育小程序云开发工程化实践》演讲全文
实战丨如何制作一个完整的外卖微信小程序开发项目(已开源)
一开始项目并非基于云开发而开发的,目前考虑用云开发,因此,需要在项目中开启云开发的相关选项。
腾讯云开发TCB
2020/07/29
4.4K0
实战丨如何制作一个完整的外卖微信小程序开发项目(已开源)
离岛日签|微信小程序云开发初体验
很多事情的开始都是长存于潜意识的精神需求和偶然的决定性契机相结合导致的结果,接触摄影也差不多,以前对于艺术的未知抱有一种神秘的向往,总觉得人的一生应该有一个时间段去了解某一种艺术门类,近而可以通过这扇大门拥抱更广阔的世界。
岛哥的质量效能笔记
2021/08/18
4060
离岛日签|微信小程序云开发初体验
提高一些开发小程序和云函数的效率
调试器、模拟区不隐藏的话,编辑区域是屏幕的一半都不到。而且没办法分屏,外接显示屏也派不上用场。
Bug生活2048
2019/04/25
1.5K0
提高一些开发小程序和云函数的效率
小程序-云开发基础
最近在学习研究小程序的云开发,不得不令人惊叹,个人觉得如果把小程序比作是干柴,那么云开发就是一把烈火,助推了小程序,小游戏的野蛮生长
itclanCoder
2020/10/28
3.1K0
小程序-云开发基础
李成熙 :云开发——小程序后台服务开发最佳实践
我本人是在2014年的时候加入腾讯,主要做过有像QQ,小程序也做过一些,如腾讯文档的小程序。现在主要负责小程序·云开发。
腾讯云开发者社区技术沙龙
2018/12/24
10.5K0
李成熙 :云开发——小程序后台服务开发最佳实践
微信小程序开发 -- 通过云函数下载任意文件
​ 微信小程序开发者众所周知,小程序开发拥有许多限制,当我还是一个菜鸟入门的时候,第一关就卡在了没有备案域名的HTTP请求上面,那时候云开发上线也没多久,使用的人也不是很多,我抱着尝试的态度去接触了云开发,发现了云开发的妙处。(自由)
Kindear
2020/06/01
1.8K0
如何优雅的写小程序代码
在中国35岁可能就是程序员的分水岭;35岁前你可以无视一切,但35岁后你可能就被无视。但其实怎么都好,路是自己的,走自己的路让人去说吧。35岁前你可以要求自己的程序能正常运行和不出问题就可以了,也可以引入一些最新的技术。但35岁后就不能按这些要求,虽然稳定是前提,但有更多应该去考虑代码的优雅和他人的可读性。为什么突然会有这些感想呢,因为最近获得了一份大厂内部的小程序代码,看后不经感慨都是实现同样的功能,但人家写得实在太优雅了,所以在这里分享一下吧。功能其实也很简单就是通过云函数获取微信的OPENID,那他是怎么写的呢。。
谭广健
2022/05/06
2.2K0
如何优雅的写小程序代码
微信小程序与云开发
Java、NodeJS、JavaScript、HTML5、CSS3、VueJs、ReactJs、前端工程化、前端架构
达达前端
2019/08/05
9.4K0
微信小程序与云开发
小程序云开发:菜鸟也能全栈做产品
很多时候当我们有一个产品想法的时候,我们往往发现,前端写完了,后端怎么搞?数据库怎么搞?域名怎么搞?域名还要备案?应用部署怎么搞?我得买什么样的服务器啊?静态资源 CDN 怎么搞?文件上传服务器怎么搞?万一访问用户多了能撑住吗?等等……问题很多,导致你的一个个想法,都只是在脑海中昙花一现,从来都无法将它们实现,或者说你激情饱满的实现了其中自己最擅长的一部分,当碰到其他难题的时候就止步了。于是仰天长啸:我就想独立做一个完整的产品为什么这么难?年轻人,这一切都不怪你……
极乐君
2019/12/18
1.1K0
校园超市,百货超市小程序,手把手带你开发一款微信商城小程序,云开发+cms+数据库+js+css+微信小程序
这些操作都和商品列表是联动的,也就是商品列表和购物车里增删个数,都是可以同步的。我会在项目预览章节的视频里做具体演示。
编程小石头
2021/04/21
2.4K0
小程序云开发--云函数上传文件或图片 base64
但是我们同时也知道,云函数是后台服务端,具有管理员权限,只要能调用云函数上传文件就可以解决这个问题了
Kindear
2019/05/25
6.9K2
不藏私分享!巧用支付宝小程序云开发,效率提升N倍
哈喽呀,各位开发小伙伴们!今天小编要给大家带来一个超厉害的秘密武器 —— 支付宝小程序云开发。想象一下,你开发小程序时,不再为繁琐的后端搭建、服务器运维等问题头疼,只需要专注于前端页面和业务逻辑,就能让小程序快速上线,是不是超级酷?这可不是天方夜谭,支付宝小程序云开发就能帮你实现!
小白的大数据之旅
2025/04/19
800
不藏私分享!巧用支付宝小程序云开发,效率提升N倍
小程序·云开发实战:定制化客服小程序
随着微信小程序不断发展壮大,商家把自有业务拓展到小程序以开拓更多商机。依托微信背后庞大的用户和流量,在大大提升了自有业务的同时,也带来了更多的客服工作。如果微信自有的客服助手不能满足多样化的客服工作,就需要定制适应自己的客服小程序,帮助客服人员更好的服务顾客。
可可爱爱没有脑袋
2020/01/14
2.9K0
小程序·云开发实战:定制化客服小程序
推荐阅读
相关推荐
【愚公系列】《微信小程序与云开发从入门到实践》049-使用云函数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档