微信小程序mmtls协议逆向分析小记

ius 2026-06-24 01:27 1


这次打算好好水一篇文章,我们就来慢慢的唠!


前言


什么是mmtls


我们来看看腾讯安全自己的介绍




简单点说,mmtls就是腾讯自己魔改的私有协议,最早就要追溯到17年了,微信当时的技术团队自研魔改的。


在手机微信上抓包的佬应该会经常见到。




小程序的mmtls有啥用


mmtls在小程序的使用途径就是云函数,最常用的,也是我们这次搞定的对象 wx.login()


小程序的官方文档



我们在打开小程序的时候,会有一个快捷登录,又或者没有登录,直接打开就发现小程序已经登录账号了


这都是wx.login进行返回的code,有了这个code,就可以登录小程序,跟小程序自己写的后端换token


又或者是霸王茶姬的sign加密,key也是通过云函数返回的



逆向的时候随便找了个小程序,这里的抓包就是云函数code,然后请求小程序登录接口,后端下发token


通过云函数的方式,会让人抓不到包(wireshark和vpn抓包除外)


即使抓到包,也没有办法篡改,因为被加密了 ^-^




说到这,我相信聪明的佬已经懂了。这个云函数就相当于卡在我们与小程序之前不可逾越的大山


有云函数卡着,我们想实现纯协议,就非常非常难。


举个最简单的例子,如果是一个网页,网页需要每天打卡,那我们直接抓包,模拟登录,然后模拟打卡就好了


但是如果小程序使用了云函数,我们就不得不需要微信作为载体,然后通过云函数,来获取一个code。


这样对比,难度直接跑到喜马拉雅山了,我们总不能自己把微信逆向出来,然后云函数逆向出来,最后才能放到服务器吧 ^-^




虽然我觉得现在让ai去逆向微信协议也不是什么难事了,但是能简单一点是一点。


毕竟光应用宝+mmtls就搞了整整4天


期间跑完了3次plus的重置次数,5h一限额我就浑身难受。作为一个学生钱包还有一点点拮据。


然后用deepseek v4 pro 跑了14块钱的,发现ds还是不太靠谱,最后买了站内富可敌国的pro中转,累计充50元


加上今天下午购入一个月的火山plan49.9元。满打满算也得有100块的成本了。


闲话介绍完了,我们来步入正题




正文


应用宝渠道


我也是无意间发现的,看到有人玩qq农场,可以协议获取code,点进去就是应用宝渠道介绍。才了解到应用宝都能玩小程序了,毕竟没人会在自己电脑里下载一个应用宝吧。。。


不过应用宝就是牛,自己都说了授权后可以获取任意小程序



逆向开始


现在都26年了,已经全面拥抱ai了,所以逆向过程我就把这几天用ai踩得坑,还有对于gpt和glm模型的感受分享出来。毕竟也不是我自己逆向出来的hhh


有了前几篇文章的铺垫,我相信佬们对于黑客起手,应该不陌生了。不过要完全不被拒绝还要站内之前分享的5.4ctf破限词,放到codex配置里,这样才能完美。这几天的实测,只有今天中午,弹了一次蓝色的cyber,4天内一直安全无恙。中午弹cyber还是我新开了会话,直接让他按照之前的进度做,没有说提示词。


我们要准备的工具就是,安装应用宝,安装idapro的mcp,还有codex安全卫士


6-20


任务刚开始用的还是any大善人的gpt,不过用起来不会自动压缩,也没有远程压缩,体验感太差了,最终放弃了


刚开始任务,我们就不要暴露自己的目的了,先虚晃一枪,让codex进入工作流程



然后我们要手动抓一次包,来扫码登录应用宝。对于http流程,gpt复现的很快,4天时间卡点都在mmtls




没一会应用宝的扫码登录就复现了。由于任务下发有code,gpt想通过内存获取,我后面又补充了一句(很贴心的提示)




就这么挂了一晚上,不过也没跑多久,自己就中断了。


来到第二天,开始拷打



现在来复盘,看见gpt说处于最后一段 已经开始无奈的笑了


这时候继续跑,不过额度很快就用光了,于是换了deepseek


让deepseek大王读了codex的会话,然后根据最后的进度,继续处理。不过有一说一,deepseek的速度是真快,看着是挺爽的




不过gpt当时应该也已经根据idapro还有dll实现了一部分协议内容了


这是deepseek跑了一会之后的进度




还有一点不得不说,用deepseek给的情绪价值是真足,和glm差不多,不知道是不是claudecode的影响,至少每次有新发现,会第一时间说出来,让人看着很爽。


又干了一段时间,deepseek直接给我放弃了,说搞不通,让我换内存获取


然后我就放弃deepseek了,后面买了中转站的gpt



其实这个时候,gpt本身的目标规划就已经出现问题了,一直在自己打转,没有根本性的进展,一直死磕,不会自己去写工具,自己不知道去调试。这也能变相反映出来,如果使用者没有这个思维,只让ai自己做,确实很难做出来。所以这个时候我让他根据之前加密解密的代码,写了一个mmtls的加解密捕获工具。



然后继续分析,plus额度又用光了,这时候在站内看到有佬分享了个glm,我也是火速用上了,在此感谢一下这个佬!下面是glm的进度,glm根据gpt捕获出来的数据,开始着手写python的mmtls客户端,我这才知道,gpt干了半天的活,连python协议模拟都没写,一直在分析。



开始着手实现客户端,期间的进度很明显,glm是真出活,一步一步的复现协议内容


最后也是喜提额度用光,又去买了富可敌国的pro号池


其实这里就已经实现整个框架了,只不过还有几个细节没搞定,卡了我3天




接着就切换gpt来进行干活了,这里就能看出来,只要你目的明确,让gpt干活是真的又快又好。


但是如果没有明确的目标,让gpt自己探索,妈的能探索一辈子。



然后额度又用光了,这里切换了朋友的deepseek,但是撤销对话的时候把代码也撤销了,我直接红温了


然后尝试让deepseek恢复。。。



6-20一天的内容就干了这些,没想到难熬的还在后面。




6-21


依旧开局辱骂。


这个时候的gpt已经开始出现,wsl路径和win路径的错乱,脚本路径模糊,还有调用win系统接口的问题,这已经是在skill里强调的,还是经常会犯错,特别折磨,不知道mac的体验会不会好一些。



当时就已经有点不耐烦了,顺手逆了一下bandizip



剩下的时间都在捣鼓bandizip,我们直接步入次日




6-22


这时候的gpt能感觉到已经流口水了


虽然它一直再说推进,但是其实根本就没有真实有效的进展,就这样跑了接近半天。



我开始受不了了,于是又主动介入,让codex自己下载了wireshark,然后找了mcp,把mmtls的请求都抓下来


然后再用脚本筛选,最后解密。


gpt干活就是这样,你如果不提出来,它一辈子也不会去下wireshark,也不会去抓包。。而是一直静态分析,不会发散思维。



然后傻逼gpt又开始给我整活



又开始陆陆续续的跑,一天又结束了,如果不是我后期干预,让他抓包。估计还是不会出成果




6-23


凌晨也算第二天!!!


事实证明我的干预非常有效,gpt根据抓包的流程,解密分析,然后根据之前glm写好的python客户端,对齐了一部分,最后通过调用dll的方式,成功的获取到了code


但是我当时并不知道,它没有依赖dll,我还以为它把协议全实现了。。。


最恶心的是,我让gpt自己测试它获取到的code,根本没法用来授权登录小程序,被拒绝了!!!



然后从睡醒到下午,一直让gpt排查,为什么会被拒绝,让gpt自己找字段哪里没有对齐,来回折腾。。


就这样持续到下午我购买火山coding plan。当时觉得gpt搞得过程性文件太多了,就让他清理了一下没用的文件


没想到傻逼到流口水的gpt,自己把自己之前写的tools给删了。


然后我再让gpt继续分析为啥code没办法授权的时候,连code都获取不到了。


不过好在这个弱智gpt在wsl外面给我存了一份镜像文件,但是此时我已经不想让傻逼gpt继续干了


接着迎来了最强国模glm5.2 !!!



不过glm5.2的速度确实慢,就跟当初用gpt5.2一样,也许比5.2快一点点吧。


经过了3天的苦战,我已经心力憔悴,无力记录,所以干脆也不看过程了,就等他做完了发通知



然后我万万没想到,让glm接手之后,没一会就把code跑出来了,也是根据之前的镜像


跑出来之后还自己测了一下,由于当时思考太慢了,我看到glm测试之后就开骂了,因为code的有效期是5分钟,当时至少等了10分钟


结果迎来了意外之喜,这次产生的code竟然可以被消费了!


此时的我心情十分激动,虽然还依赖dll,但是至少流程打通了




由于当时用glm觉得慢,我就让gpt去测其他的小程序是否能获取


但是貌似恰逢遇到中转站号池紧缺了,估计是掺free了,跑了20分钟,连开始都没开始,一直四处搞没用的


气得我直接开骂,,,,



然后我就又换glm了,让glm核对,一会就出来了,其他小程序也通用!



剩下的就是让glm去把dll里用到的地方,全还原成协议,不过蹬了5000万token,到5h上限了


不过此时gpt也恢复正常了,接手了glm的收尾工作,最终打通python纯协议获取code ^-^





后面让glm列了一下实现的功能表


有想自己实现的佬,可以用功能表来实现,能少踩很多坑,再具体的就不放出来了。(你懂的




结尾


再次感慨一下AI的强大,也感慨国模的努力,之间的差距越来越小了。


同时也感慨一下自身,这个云函数在我接触小程序逆向的时候就是个卡点,在我心中就像一个无法逾越的大山。


ai在我的帮助下,竟然真的搞出来了,我心中有几分震撼也有几分激动。




写文章写嗨了,再来一波回忆录


初中的时候在手机上写代码,去玩qq机器人,写词库。那时候就感慨有的人怎么这么厉害,能自己抓包分析,把qq安卓协议搞出来。同龄人里一直都有很多高手,我也十分的崇拜他们。


中考的暑假,我才搞明白qq空间的扫码登录,能用php实现 qq扫码获取skey,来进行一些qq空间等web操作。但是当时的卡点还是手机,没有电脑就没有开发者工具,就没法做到调试js。


一直到了大学,有了电脑之后就玩起来了游戏,玩了两年游戏,编程也没什么进展,唯一对我有提升的就是参加了一个人工智能的比赛,当时都23年了,在ai的帮助下,我也玩起来了深度学习。


后面又在抖音刷到了有人教js逆向,我这才重拾起来曾经的记忆,然后自己尝试上手,没想到非常简单的就搞了个简单的滑块验证码。又捣鼓了一下网易云音乐的web端签名,因为我初中的时候想做机器人点歌,抓网易云就发现是加密的,于是放弃。这次还真捣鼓出来了。


然后第二天内心就膨胀了,就去搞抖音的xbogus,唉,现在想想入门第二天就搞vmp,我也是无敌了


当时搜文章,看别人教程,也是脑袋懵懵的,但是在我坚持不懈的查看下,还是找到了签名入口。但是搞不出来可用的,因为有环境检测,最后去github翻来翻去,找到了别人分享的半成品,我用了他的环境,生产出来的签名虽然不是百分百正确,但是服务端可以通过校验。


然后又搞了极验3的滑块,这个确实是搞出来了,一直跟栈调用就行。


后面越搞越多,不过大多数都是看的别人的教程或者用插件补环境,知乎的x96,小红书的xs,最开始都是补环境的。


再往后看到了b站有人分享vmp的插桩跟栈,看了这个视频之后,我脑袋里才有点感觉,能捋顺。就跟着这个视频的方法,去搞了抖音的abogus,笑死,从xbogus都更新到abogus了。这也是我第一个跟栈还原出来的vmp算法,当时跟栈从早上跟栈还原到凌晨,最终也是搞出来了。后面又还原了小红书的vmp,顺手又搞了小红书的验证码。又顺手搞了抖音的验证码。


不过抖音的验证码当时就是一周换一次参数,还有轨迹之类的有的接口校验严格,但是登录接口是可以用的。


就这么慢慢的过去,之前逆向出来的也都慢慢的失效了。。


cursor,claude code,codex,横空出世。


最早就是用上了cursor的学生优惠,体验了一把agent。再后来慢慢的,代码也不会写了。之前逆向还要自己写一点代码,现在是代码也不用了。25年早期的agent还做不了太多逆向,模型能力也没这么强。25年下半年就已经开始崭露头角了,慢慢的连逆向都不需要人来干了。


直到现在,我已经变成了ai的形状了,开发,逆向,全是ai干。ai提升了我们每个人的下限,现在让我去逆向vmp我都不一定能搞出来了。更别说mmtls了,如果真让我自己干,那我觉得给我1年,我可能真的可以慢慢的耗出来。但是现在的ai,加起来,一共4天。只能说很可怕了。


现在把mmtls搞出来了,我觉得让ai去搞微信登录,发消息的协议,也不是什么难事了。


但是暂且到这里吧。


最后感慨一下能够经历这个最好的时代

最新回复 (17)
  • 吃豆人 06-24 01:36
    1

    全文看完了,很精彩,而且也是对glm5.2的一次比较全面的测评,恨不得能给两个赞^-^

  • CBYellowstone 06-24 01:37
    2

    所以这个相当于可以自动化登录小程序吗?

  • ius 楼主 06-24 01:39
    3

    其他的开发不是很清楚,但是对于逆向来说glm的能力真的非常哇塞


    如果不切glm的话,让gpt累死也搞不出来 ^-^


    当然如果切claude我觉得也能做出来,奈何钱包羞涩+a÷的风控严格


    glm真的是便宜又好用的选择了

  • ius 楼主 06-24 01:40
    4

    实现的是,用户只需要扫码登录一次应用宝,然后就可以通过协议随意获取小程序code,随意的发送云函数。


    也就是能随意访问你的每个小程序


    当然我们的利用场景不是这样的。一般来说用来签个到,抢个东西会用。

  • CBYellowstone 06-24 01:40
    5

    应用宝本身的凭证有效期是多久呢佬

  • ius 楼主 06-24 01:42
    6

    actoken是2小时,rftoken是长期的,每次刷新凭据就可以给新的ac和rf。所以我也没测有多长,但是可以一直换。

  • 一只橘子🍊 06-24 01:43
    7

    哇,那这挺好诶,可以用这么久的话,我的校园跑有着落了(bushi

  • ius 楼主 06-24 01:43
    8

    是这样的,再也不用因为微信载体而烦恼了

  • CBYellowstone 06-24 01:44
    9

    那这篇文档要不设个等级,现在好像是公开的吧?会不会不太好

  • 竹屋 06-24 01:44
    10

    享受最好的时代吧


    现在是最好的时代,未来就是最黑暗的时代


    ai可以突破以往繁复的逆向,我相信更复杂的正向就在未来了


    我觉得可能大家还没意识到,破坏性的门槛到底降低到多低了,当意识到的时候,攻防的军备竞赛会再次打响


    到时候新手一出门,怎么全世界都是满级boss?不要飞升,不要飞升,不要飞升 ^-^


    题外话,


    给大家总结下,其实都是很常规的逆向思路


    很多东西难度不在于正面突破,而在于找到渠道,找到特殊的路径,就好像本帖走的是应用宝,此外还有车机,平板等等,后两个尽管已经很广泛了但风险还是有的,靠自己猛猛干很难,


    站内之前有的佬突破一些站点,考的就是log路径暴露和2fa不限定频率,又或者一些程序,漏洞就在于不同端选择的策略和方案不一样,例如说有的时候新上的平台往往bug满天飞,这是开发过程中不可避免的,进而导致解密难度不同,很多东西还是要先正儿八经开发才会知道有哪些坑,很多佬u说学习无用,至少我是不觉得的,现在的ai还没做到可以无指导实现一切


    本质上都是一些很常见的问题,只是ai可以让大家更快的遍历常见的疏漏,要是靠自己就只能苦苦一个个试,这个就需要灵感和耐心,而ai只需要钱和一点点的经验

  • 蛇✨ 06-24 01:46
    12

    之前还在想code这要是每次通过抓包获取一个很短的时效期,还得微信抓,这下有思路了,谢谢佬

  • ius 楼主 06-24 01:47
    13

    没关系,因为也没发特别重要的内容。而且别人想分享直接保存就可以分享了哈哈哈

  • yanlei 06-24 01:51
    16

    佬牛逼,原来是这个原理,学到东西了啊.

  • yueluo3721 06-24 01:53
    17

    文中的一些观点不予置评吧,没恶意。

    想当年一几年那会,自己对着QQ撸了2年才搞定,纯图一乐,既入门了逆向,又搞了自己的闭源bot,毕竟见光死,不是什么都应该开源的。

    之后隔了几年听闻有人搞定了wx,xy更是惊人卖到了10w元,还不是源码,不展开讨论,属于黑灰产。

    后面就一直跟着Android系统性的搞了十几年,现在有了AI,更多的是助力,而不是替代了原本的工作,同样的工作,老手和新手耗费的token那肯定不是一个量级的,当然我也不好说哪天AI会不会发展到连经验都不需要了。

    说白了很多人静不下心来在一个行业里面深耕,都是什么热门进去插一脚,最后风口变了留下一地鸡毛,自己什么都没沉淀。

    与其说AI降低了逆向门槛,不如说原本就很厉害的人,有了AI助力之后,只会办更大的事。

  • mengxing897 06-24 01:55
    18

    佬还需要glm吗,开的max实在用不完,最近刚好在研究小程序,就看到你这篇帖子 ^-^

  • ius 楼主 06-24 01:55
    19

    是这样的,让不了解的人去用ai还是做不出来的

  • Kasetelut 06-24 01:59
    20

    很好的思路,楼里的佬说的也很多,非常感谢佬们的启发,改天就去试试 ^-^

* 帖子来源Linux.do
返回