FreeRTOS Reverse Engineering
FreeRTOS简介
FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。
FreeRTOS编译
编译环境
· windows10 20H2
· keil V5.33.0.0
从FreeRTOS下载地址下载官方源代码。
解压下载的文件,获得的目录如下
这里我们重点关注的是FreeRTOS,这里面包含FreeRTOS的内核代码以及我们要进行测试的代码。
这里我们选择STM32F103系列的代码进行编译,使用keil打开这个系列的项目代码
通过keil我们可以看到整个项目涉及的代码。
因为我们提取的固件普遍为BIN文件,所以我们得在keil中设置,最后编译生成BIN文件。
在After Build/Rebuild选项中的Run#1处添加如下代码:
D:\keilv5_core\ARM\ARMCC\bin\fromelf.exe --bin -o .\bin\RTOSDemo.bin .\RTOSDemo.axf
这里fromelf.exe是最后格式化为BIN的应用程序,-o是编译生成的BIN文件存放到当前目录下的bin目录中,bin目录没有会自动创建,RTOSDemo.axf文件是keil编译生成的文件。
编译成功,我们可以获得RTOSDemo.bin固件文件,这里包含我们全部的应用代码!
FreeRTOS逆向
逆向分析环境:
· IDA 7.0
· binwalk
这里我们使用IDA进行逆向分析已经编译成功的BIN固件,首先这是BIN固件的架构ARM Little-endian。
在processor type里选择ARM little endian,打开processor options。在截图上,你能看到适用于我这个环境的设置。我的Cortex-M3基于ARMv7-M架构,所以才这样设置。
接下来当我们载入IDA时,会让我们输入ROM,RAM等基地址,这里我们使用两种方式去添加。
方式一
由于整个固件是我们自己编译的,这里我们可以在Keil中查看ROM,RAM等载入地址信息。
这里我们可以看到RAM和ROM对应的起始地址以及大小,我们将对应的数据添加到IDA进行分析时的Disassembly memory organization对应的ROM和RAM中,数据添加情况如下:
我们逐步确定,IDA自动加载,最终得到如下分析结果
但是由于IDA没有自动去解析BIN固件,需要我们自己进行解析。首先我们设置IDA支持ARM Thumb指令,可以使用快捷键Alt+G设置指令分析格式
可以看到已经变成CODE16的汇编代码了。这里我们按C键进行自动分析,分析完的代码如下:
这里我们可以看出已经有functions和反汇编代码了。这种方式仅仅对我们分析自己编译的固件能够起到帮助作用。
方式二
接下来,让我们看一下方式二,这种方式经常应用于逆向工程。
现在假设固件是我们从设备中提取的固件,目前不知道任何有用的信息。
根据常规方式我们使用binwalk进行简单的扫描分析,得到如下结果:
在这里我们得不到任何信息。但是我们知道这是个RTOS,所以我们直接上IDA,暴力简单!
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 1 澳门是伟大祖国的一方宝地 7901117
- 2 女法官遇害案凶手被判死刑 7925769
- 3 日本火山喷发灰柱高达3400米 7825921
- 4 中国为全球经济增长添动能 7730900
- 5 肖战新片射雕英雄传郭靖造型曝光 7653072
- 6 大三女生练咏春一起手眼神骤变 7551270
- 7 胡军演洪七公 7410612
- 8 男子钓上一条自带“赎金”的鱼 7395690
- 9 赵丽颖带儿子探班 7289072
- 10 高考601分女生为何选择殡葬专业 7198987