数码之家

标题: 破解微信小程序识别蓝牙模块的逻辑(还在尝试中) [打印本页]

作者: tommmmmy    时间: 2025-4-9 16:05
标题: 破解微信小程序识别蓝牙模块的逻辑(还在尝试中)
本帖最后由 tommmmmy 于 2025-4-10 15:48 编辑

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

[attach]2410808[/attach]
这个是网购的可编程的控制器,带蓝牙模块的。小程序名字:启航再扬帆,欢迎大神参与尝试
[attach]2410812[/attach]
这个是所配套的小程序的主界面
原本以为事情会比较顺利,从网上买了MX-01P蓝牙模块,发现按顺序接好Vcc,Gnc,RX,TX,四条线,注意RX和TX需要对调才能使用,最后发现,小程序会屏蔽掉我的模块,只能识别原来的模块,所以我在论坛里面开始搜索相关资料,得知可能需要修改模块的mac,adv广播包,广播名称,uuid等才能识别。
[attach]2410813[/attach][attach]2410814[/attach]
通过查询模块的技术文档,运用AT指令修改了模块的参数,小程序就识别到了我的模块,但是连接模块是,却提示蓝牙设备不合法。
多次尝试之后,发现小程序在断网的情况下,依旧能准确识别合法和非法的蓝牙模块,所以我大概率猜测,小程序的背后并没有服务器数据去校验模块的合法性。
于是又有了新的想法,就是把小程序搞下来,解包,分析里面的代码。
找一台有root的手机,打开re管理器,找到路径:data/data/com.tentcent.mm/MicroMsg/appbrand/pkg,里面有4个文件夹,建议直接把这4个文件夹,全部删除,再去微信里面打开一次小程序,小程序会单独下载下来,这样就不用一个个去找了,最后把整个pkg文件夹复制到电脑上,解包
[attach]2410828[/attach]
[attach]2410829[/attach]
一般小程序会放在general这个文件夹内
接下来将这个wxapkg的格式文件进行解包,这里会用到专用的工具,WxApkgUnpacker.exe,软件会打包好,作为附件供下载,解包后的文件也会上传,供大家一起研究。
[attach]2410832[/attach]
尝试过用记事本打开查看代码,但是发现没有排版,代码很多很乱,于是下载了vscode去查看里面的代码,通过把整个文件夹打开,全局搜索,最终定位到了校验蓝牙设备的相关代码。
[attach]2410833[/attach]
最终定位到了1939行这里。代码文件已用DS分行整理了
个人不会分析代码,所以把整行代码给到了deepseek去分析,接下来就看看ds的表演。
[attach]2410834[/attach]
[attach]2410835[/attach]
[attach]2410836[/attach]
目前的结果就是卡在这里,本人不懂代码分析,只是根据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
并附上软件的截图,有兴趣的朋友可以拿自己的模块尝试连接,小程序的名字是:启航再扬帆
[attach]2411498[/attach][attach]2410814[/attach]


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

作者: flyrack    时间: 2025-4-9 17:30
这玩意多少钱?超过20就不如用ESP32自己做了,没有折腾的价值
作者: tommmmmy    时间: 2025-4-10 11:39
flyrack 发表于 2025-4-9 17:30
这玩意多少钱?超过20就不如用ESP32自己做了,没有折腾的价值

自己做也得用人家的小程序编程控制器,哪有这么简单?
作者: 13395052912    时间: 2025-4-10 11:47
所有uuid都有克隆过去吗 是卡在特征效验这层吗
s.globalData.BLE_DATA_CHAR_NOTIFY)
s.globalData.BLE_DATA_CHAR_WRITE))
这两个是效验的全局变量,不知道怎么来的
作者: lmn2005    时间: 2025-4-10 11:55
高手,高手!
作者: tommmmmy    时间: 2025-4-10 15:25
13395052912 发表于 2025-4-10 11:47
所有uuid都有克隆过去吗 是卡在特征效验这层吗
s.globalData.BLE_DATA_CHAR_NOTIFY)
s.globalData.BLE_DATA ...

是卡在校验这里
作者: tommmmmy    时间: 2025-4-10 15:26
13395052912 发表于 2025-4-10 11:47
所有uuid都有克隆过去吗 是卡在特征效验这层吗
s.globalData.BLE_DATA_CHAR_NOTIFY)
s.globalData.BLE_DATA ...

试过设置uuid,但是无论怎么设置,都不能和原来的一样,不知道是我买的模块问题,还是有别的验证方法
作者: tommmmmy    时间: 2025-4-10 15:33
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
嘉百达(程序名称:小象电动)新版程序也是会屏蔽其他蓝牙模块,改了mac和名称没有用
作者: tommmmmy    时间: 2025-4-11 08:16
曾经- 发表于 2025-4-10 21:14
嘉百达(程序名称:小象电动)新版程序也是会屏蔽其他蓝牙模块,改了mac和名称没有用 ...

要改uuid的
作者: 13395052912    时间: 2025-4-11 18:08
tommmmmy 发表于 2025-4-10 15:25
是卡在校验这里

我估计uuid就是利用某些参数加密组成,达到本地效验,这种要找一下我发那两个参数在哪里生成的
作者: momo1990    时间: 2025-4-11 18:35
raw data里面最后一行0xff是厂商信息,r.devicefilter就是处理这一行信息,判断校验不通过就返回,所以关键在devicefilter函数里,但是你得到这个函数也没有用,一般的蓝牙模块是不会开放厂商信息让你修改的,你得自己写蓝牙程序修改这一信息
作者: 猪小呆    时间: 2025-4-11 18:50
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
tommmmmy 发表于 2025-4-11 08:16
要改uuid的

你用蓝牙调试助手连上车子的原厂蓝牙信号截个图看看,CLIENT项里的
作者: 猪小呆    时间: 2025-4-11 19:03
tommmmmy 发表于 2025-4-10 15:26
试过设置uuid,但是无论怎么设置,都不能和原来的一样,不知道是我买的模块问题,还是有别的验证方法 ...

要跟原厂的一样才行的,你买的模块不支持设置那么多参数,网上成品模块基本都不支持,需要自己用ESP32-C3写程序自定义,我以前写过一个,你可以参考:
https://www.mydigit.cn/thread-482755-1-1.html
作者: 猪小呆    时间: 2025-4-11 19:06
这个模块应该可以自己写程序改参数,不知道1块钱包邮活动还有没有了:
https://www.mydigit.cn/thread-500762-1-1.html
作者: 1588858    时间: 2025-4-12 10:07

高手,高手!
作者: 纯今    时间: 2025-4-12 10:15
猪小呆 发表于 2025-4-11 19:03
要跟原厂的一样才行的,你买的模块不支持设置那么多参数,网上成品模块基本都不支持,需要自己用ESP32-C3 ...

为阿呆点赞
作者: zzqyyds    时间: 2025-4-12 16:45
挺好的 给大家提供了一些方案

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

我单纯用MX-01P的模块已经克隆出来了,完全能用,和原来的一样用,后面会更新这个帖子
作者: tommmmmy    时间: 2025-4-12 17:11
猪小呆 发表于 2025-4-11 19:01
你用蓝牙调试助手连上车子的原厂蓝牙信号截个图看看,CLIENT项里的

第四张图就是原厂的模块信息,用的app是nrf connect
作者: tommmmmy    时间: 2025-4-12 17:17
曾经- 发表于 2025-4-10 21:14
嘉百达(程序名称:小象电动)新版程序也是会屏蔽其他蓝牙模块,改了mac和名称没有用 ...

主要识别的是广播包
作者: tomac88    时间: 2025-4-12 20:24
关键点在哪里还是没摸清楚
作者: tommmmmy    时间: 2025-4-13 11:38
tomac88 发表于 2025-4-12 20:24
关键点在哪里还是没摸清楚

关键是UUID




欢迎光临 数码之家 (https://www.mydigit.cn/) Powered by Discuz! X3.4