对BL602 RISC-V WiFi和BLE微控制器的SDK进行逆向工程

原文链接:Reverse engineering the SDK for BL602 RISC-V WiFi & BLE microcontroller 由Jean-Luc Aufranc撰写。

博流智能(Bouffalo Lab)的 BL602,以及带有额外GPIO的系列产品BL604,都是带有WiFi和蓝牙LE的RISC-V微控制器。我们了解到乐鑫公司也设计了自己的RISC-V解决方案(ESP32-C3)。不过,前面提到的微控制器也为乐鑫公司基于ESP32 Xtensa的WiSoC提供了一种新选择。

其实,在 2020 年 10 月 BL602 产品发布会后不久,我就注意到了它的SDK 和一个相对便宜的 BL602 板不过,他的 SDK 有很多闭源的二进制文件。在那之后不久, 矽速科技(sipeed )和 Pine64 就都表示有兴趣开发BL602的开源工具链甚至开源 WiFi(和 BLE)协议栈。但时间已经过去那么久,甚至我在今年一月份都拿到一个基于BL602的PineCone板,他们还是没有对开源工具链和协议栈做的任何事情。

但Lup Yuen Lee(又名MrTechBlog)却在这方面做了很多工作,他花时间做了很多与Pine64 BL602模块和电路板相关的有趣事情,并详细记录了他与Tensorflow Lite相关的所有工作,例如用该板连接LORA模块以及一些其他工作

BL602“非WiFi”模块功能和代码行
BL602“非WiFi”模块功能和代码行

最近,他决定参与Nutcracker 挑战从而来创建开源 WiFi 和蓝牙协议栈,并撰写了一篇长文章。专门介绍 BL602 SDK 中 WiFi 代码逆向工程的过程。

这个过程包括浏览代码的所有功能以了解基本知识,例如连接到 WiFi 路由器和使用演示固件发送一些 HTTP 数据包,由于某些代码是二进制的,因此仅将其反编译为 C 语言以供进一步分析。这部分不太容易,因为变量和函数名称并不完全有意义,但可以通过它来检查哪一部分可以用于逆向工程,如下图所示。

BL602反编译C代码
BL602反编译C代码

然后整个过程就是 SDK 源代码和反编译C 源代码之间的舞蹈,通过两者之间的转换,试图了解发生了什么。最终发现,WiFi 代码似乎来自许多 WiFi 解决方案中使用的CEVA RivieraWaves固件/软件。此外,Lup Yuen Lee 还注意到了 BL602 的代码看起来与 RK3399 WiFi supplicant 的代码非常相似。

因为大部分非 WiFi 功能都是开源的,所以很方便就能看到它们的实现。通过分析还发现 SDK 使用了各种项目的源代码,包括用于多任务处理和设备驱动程序的 AliOS 嵌入式框架、用于物联网和 MQTT(消息队列)服务的 AWS 云、EasyFlash 嵌入式数据库、在 AliOS 框架下运行的 FreeRTOS、轻量级 IP (LWIP) 和 Mbed TLS等。

虽然所有这些工作都只是下一步工作的起点,但是通过阅读完整的文章,你们可以学到很多关于对 WiFi 协议栈进行逆向工程的知识。

分享这篇文章
订阅评论
提醒
0 评论
内联反馈
查看所有评论