数码之家

 找回密码
 立即注册
搜索
查看: 856|回复: 23

[STM] 破解微信小程序识别蓝牙模块的逻辑(还在尝试中)

[复制链接]
发表于 2025-4-9 16:05:41 | 显示全部楼层 |阅读模式
本帖最后由 tommmmmy 于 2025-4-10 15:48 编辑

      最近从网上购买了一个带蓝牙编程的电动车控制器,装上控制器后,突然想到,如果这个蓝牙模块突然坏了的话,那不就无法和控制器通讯了,所以在网上去搜索,在PDD发现这个蓝牙模块还不便宜,要几十块一个,那些蓝德,远驱控制器的蓝牙模块更贵,真的是妥妥的割韭菜。于是有了克隆蓝牙模块的想法。首先说明一下,本人不是码农,不是很懂代码


这个是网购的可编程的控制器,带蓝牙模块的。小程序名字:启航再扬帆,欢迎大神参与尝试

这个是所配套的小程序的主界面
原本以为事情会比较顺利,从网上买了MX-01P蓝牙模块,发现按顺序接好Vcc,Gnc,RX,TX,四条线,注意RX和TX需要对调才能使用,最后发现,小程序会屏蔽掉我的模块,只能识别原来的模块,所以我在论坛里面开始搜索相关资料,得知可能需要修改模块的mac,adv广播包,广播名称,uuid等才能识别。

通过查询模块的技术文档,运用AT指令修改了模块的参数,小程序就识别到了我的模块,但是连接模块是,却提示蓝牙设备不合法。
多次尝试之后,发现小程序在断网的情况下,依旧能准确识别合法和非法的蓝牙模块,所以我大概率猜测,小程序的背后并没有服务器数据去校验模块的合法性。
于是又有了新的想法,就是把小程序搞下来,解包,分析里面的代码。
找一台有root的手机,打开re管理器,找到路径:data/data/com.tentcent.mm/MicroMsg/appbrand/pkg,里面有4个文件夹,建议直接把这4个文件夹,全部删除,再去微信里面打开一次小程序,小程序会单独下载下来,这样就不用一个个去找了,最后把整个pkg文件夹复制到电脑上,解包


一般小程序会放在general这个文件夹内
接下来将这个wxapkg的格式文件进行解包,这里会用到专用的工具,WxApkgUnpacker.exe,软件会打包好,作为附件供下载,解包后的文件也会上传,供大家一起研究。

尝试过用记事本打开查看代码,但是发现没有排版,代码很多很乱,于是下载了vscode去查看里面的代码,通过把整个文件夹打开,全局搜索,最终定位到了校验蓝牙设备的相关代码。

最终定位到了1939行这里。代码文件已用DS分行整理了
个人不会分析代码,所以把整行代码给到了deepseek去分析,接下来就看看ds的表演。



目前的结果就是卡在这里,本人不懂代码分析,只是根据ds的分析作出判断,大概的结论就是,小程序会通过模块的特定广播包去识别模块,非特定广播包的蓝牙模块将被屏蔽,接下来将会对模块的uuid进行识别,其中会识别通知服务和写服务通道的的uuid,两个uuid匹配成功的话,就等于1,两个uuid的结果相加等于2时,则设备合法,广播包能识别到,和uuid能过,该设备就合法。
最后在这里求助一下论坛的大神,看能不能破解这个设备校验的问题,目前只是把原设备的uuid读出来了,克隆到新的设备上,依旧提示设备不合法,实在是想不到有什么好办法去分析了。

这边放出原模块的raw数据,0x0201060502E0FFCOFFOC09584943482D3 537383339340512100020000EFF6E8601383 B2657839402000311
还有uuid,00010203-0405-0607-0809-0a0b0c0d1912,00010203-0405-0607-0809-0a0b0c0d2b12,0x2901
并附上软件的截图,有兴趣的朋友可以拿自己的模块尝试连接,小程序的名字是:启航再扬帆



补充内容 (2025-4-13 11:37):
最新的帖子,希望大家喜欢!!!
破解微信小程序识别蓝牙模块的逻辑(已成功)完结
https://www.mydigit.cn/forum.php ... amp;fromuid=2205679

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 5家元 +135 收起 理由
不长叶子的树 + 60
zto中通快递 + 27
jf201006 + 15 謝謝分享
nokia5320 + 18
8139 + 15 謝謝分享

查看全部打赏

发表于 2025-4-9 17:30:05 来自手机浏览器 | 显示全部楼层
这玩意多少钱?超过20就不如用ESP32自己做了,没有折腾的价值
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-10 11:39:37 | 显示全部楼层
flyrack 发表于 2025-4-9 17:30
这玩意多少钱?超过20就不如用ESP32自己做了,没有折腾的价值

自己做也得用人家的小程序编程控制器,哪有这么简单?
回复 支持 反对

使用道具 举报

发表于 2025-4-10 11:47:57 | 显示全部楼层
所有uuid都有克隆过去吗 是卡在特征效验这层吗
s.globalData.BLE_DATA_CHAR_NOTIFY)
s.globalData.BLE_DATA_CHAR_WRITE))
这两个是效验的全局变量,不知道怎么来的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-10 15:25:16 | 显示全部楼层
13395052912 发表于 2025-4-10 11:47
所有uuid都有克隆过去吗 是卡在特征效验这层吗
s.globalData.BLE_DATA_CHAR_NOTIFY)
s.globalData.BLE_DATA ...

是卡在校验这里
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-10 15:26:34 | 显示全部楼层
13395052912 发表于 2025-4-10 11:47
所有uuid都有克隆过去吗 是卡在特征效验这层吗
s.globalData.BLE_DATA_CHAR_NOTIFY)
s.globalData.BLE_DATA ...

试过设置uuid,但是无论怎么设置,都不能和原来的一样,不知道是我买的模块问题,还是有别的验证方法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-10 15:33:25 | 显示全部楼层
13395052912 发表于 2025-4-10 11:47
所有uuid都有克隆过去吗 是卡在特征效验这层吗
s.globalData.BLE_DATA_CHAR_NOTIFY)
s.globalData.BLE_DATA ...

用nrf connect去查uuid,00010203-0405-0607-0809-0a0b0c0d1912,00010203-0405-0607-0809-0a0b0c0d2b12,0x2901,设置了还是不合法
回复 支持 反对

使用道具 举报

发表于 2025-4-10 21:14:16 | 显示全部楼层
嘉百达(程序名称:小象电动)新版程序也是会屏蔽其他蓝牙模块,改了mac和名称没有用
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-11 08:16:59 | 显示全部楼层
曾经- 发表于 2025-4-10 21:14
嘉百达(程序名称:小象电动)新版程序也是会屏蔽其他蓝牙模块,改了mac和名称没有用 ...

要改uuid的
回复 支持 反对

使用道具 举报

发表于 2025-4-11 18:08:19 | 显示全部楼层

我估计uuid就是利用某些参数加密组成,达到本地效验,这种要找一下我发那两个参数在哪里生成的
回复 支持 反对

使用道具 举报

发表于 2025-4-11 18:35:00 | 显示全部楼层
raw data里面最后一行0xff是厂商信息,r.devicefilter就是处理这一行信息,判断校验不通过就返回,所以关键在devicefilter函数里,但是你得到这个函数也没有用,一般的蓝牙模块是不会开放厂商信息让你修改的,你得自己写蓝牙程序修改这一信息
回复 支持 反对

使用道具 举报

发表于 2025-4-11 18:50:32 | 显示全部楼层
tommmmmy 发表于 2025-4-10 15:33
用nrf connect去查uuid,00010203-0405-0607-0809-0a0b0c0d1912,00010203-0405-0607-0809-0a0b0c0d2b12 ...

很简单,在服务下面还要建两个特征,一个通知,一个写,你的模块可以改吗?如果不能改,那估计得用ESP32-C2之类的自己写程序才行
回复 支持 反对

使用道具 举报

发表于 2025-4-11 19:01:22 | 显示全部楼层

你用蓝牙调试助手连上车子的原厂蓝牙信号截个图看看,CLIENT项里的
回复 支持 反对

使用道具 举报

发表于 2025-4-11 19:03:10 | 显示全部楼层
tommmmmy 发表于 2025-4-10 15:26
试过设置uuid,但是无论怎么设置,都不能和原来的一样,不知道是我买的模块问题,还是有别的验证方法 ...

要跟原厂的一样才行的,你买的模块不支持设置那么多参数,网上成品模块基本都不支持,需要自己用ESP32-C3写程序自定义,我以前写过一个,你可以参考:
https://www.mydigit.cn/thread-482755-1-1.html
回复 支持 反对

使用道具 举报

发表于 2025-4-11 19:06:40 | 显示全部楼层
这个模块应该可以自己写程序改参数,不知道1块钱包邮活动还有没有了:
https://www.mydigit.cn/thread-500762-1-1.html
回复 支持 反对

使用道具 举报

发表于 2025-4-12 10:15:39 | 显示全部楼层
猪小呆 发表于 2025-4-11 19:03
要跟原厂的一样才行的,你买的模块不支持设置那么多参数,网上成品模块基本都不支持,需要自己用ESP32-C3 ...

为阿呆点赞
回复 支持 反对

使用道具 举报

发表于 2025-4-12 16:45:21 | 显示全部楼层
挺好的 给大家提供了一些方案
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-12 17:07:52 | 显示全部楼层
猪小呆 发表于 2025-4-11 18:50
很简单,在服务下面还要建两个特征,一个通知,一个写,你的模块可以改吗?如果不能改,那估计得用ESP32- ...

我单纯用MX-01P的模块已经克隆出来了,完全能用,和原来的一样用,后面会更新这个帖子
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-2 09:02 , Processed in 0.421200 second(s), 18 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表