对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 和BLE 的 RISC-V 微控制器。它们还提供给过乐鑫ESP32 WiSoC 系统一个替代方案。虽然,它已经加入乐鑫自己的RISC-V解决方案—ESP32- c3中了。

在 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 协议栈进行逆向工程的知识。

分享这篇文章
<-- Multiplex code - to do -->
0 评论
内联反馈
查看所有评论