基于VxWorks的嵌入式设备固件分析——PLC NOE-771

固件分析

通过Binwalk进行自动分析可以发现,NOE 771模块的升级包NOE77101.bin中内嵌了一个使用zlib压缩的文件。
在这里插入图片描述
通过调用Binwalk的-e参数进行自动提取后,Binwalk会把自动提取后的文件以偏移地址命名并存储在特定的目录中。
在这里插入图片描述
继续使用Binwalk对提取的385文件进行分析可以确认,该文件的确是我们所需要分析的VxWorks固件,因此提取的385文件也就是我们需要分析的固件文件了。
在这里插入图片描述

分析固件内存加载地址

为了对VxWorks系统固件进行逆向分析,我们首先必须要知道固件在内存中的加载地址。加载地址的偏差会影响到一些绝对地址的引用例如跳转函数表、字符串表的引用等。

下图是VxWorks系统在PowerPC架构下的内存分布图,如图所示VxWorks的系统固件将会被加载到一个由BSP (Board Support Package)定义的内存地址中。
在这里插入图片描述

分析固件头部的初始化代码,寻找加载地址的特征

在很多情况下我们拿到的固件是没有采用ELF格式封装的,这时就需要我们通过对固件的某些特征进行分析来判断具体的加载地址。还是以施耐德的NOE 711固件为例, 在具体分析某个固件时首先我们需要知道目标设备的CPU架构,具体可以如下图所示通过binwalk -A指令来对固件的CPU架构进行分析,此外也可以用binwalk -Y指令来调用capstone反汇编引擎来进行辅助判断,不过我实际测试下来存在一些误报的情况会把NOE 711的固件识别成arm架构的。
在这里插入图片描述在得知目标CPU架构后就可以使用IDA加载固件并对其代码进行初步分析。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下图是默认加载后的IDA界面,仅仅分析出了极少数的函数。接下来就需要根据固件头部的这段代码来寻找加载地址的特征。
在这里插入图片描述
在固件头部有如下图所示的一段有趣的代码,在对r1和r3寄存器进行赋值后进行了跳转。

在这里插入图片描述

指令解析 (lis:立即数载入并左移)

lis r3,0x1234
addi r3,r3,0x5678

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值