首页
社区
课程
招聘
14
[原创]固件安全之加载地址分析
发表于: 2021-5-21 16:37 26888

[原创]固件安全之加载地址分析

2021-5-21 16:37
26888

前言

在固件分析中,我们经常需要定位固件的加载地址,尤其是Vxworks或者是Linux kernel加载到内存的地址,来方便逆向工具例如IDA PRO进行正确的反汇编以及字符串引用。在下面的部分,本人将结合几个实例,来介绍我们如何寻找正确的固件加载地址。

数据手册

在处理器芯片的数据手册中,一般都会描述该处理器的内存布局,包含各种中断表地址,也有加载flash数据的内存地址,这个地址就是我们需要找的固件加载地址,如下所示,0x8000000开始存放着flash数据,分析时候我们只需要设置这个地址即可。

串口信息

通过UART一般可以获取固件启动的敏感信息,其中可能会包含加载地址,如下所示,然而这个地址虽然是内核固件的加载地址,但是内核是压缩的,内核会解压到另一块内存地址,也就是说还需要找到真正的固件加载地址。

固件常量

为了获取Linux Kernel解压后的数据,可以使用binwalk -e kernel.bin解出原始的内核镜像。用IDA载入进行分析,注意高亮的地方已经标记出来,0xC0008080,很容易猜到真正的内核固件的加载地址为0xC0008000

跳转表法

这个方法在网上已经很多人已经分享了,主要是利用switch 跳转表,来确定固件的加载地址,这种方法在分析ARM架构的Vxworks使用的较多。

  1. 搜索“switch”:
  2. 找到一个合适的跳转表:

    加载地址即为:(0x20018140-0x8110)&0xfffff000=0x20010000(加载地址一般是0x1000对齐)。

魔数定位法


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 14
支持
分享
赞赏记录
参与人
雪币
留言
时间
東陽不列山
感谢你的贡献,论坛因你而更加精彩!
2024-8-26 04:24
freenow
为你点赞~
2023-12-23 16:16
Nameless_a
为你点赞~
2022-12-1 11:14
Jaubert
为你点赞~
2022-10-24 10:53
b23526
为你点赞~
2022-10-20 09:40
PLEBFE
为你点赞~
2022-7-27 01:07
心游尘世外
为你点赞~
2022-7-26 22:57
飘零丶
为你点赞~
2022-7-17 02:30
wx_十点半睡觉
为你点赞~
2022-1-8 16:34
APT_华生
为你点赞~
2022-1-5 09:58
gaoan
为你点赞~
2021-6-16 23:56
霸气压萝莉
为你点赞~
2021-5-25 10:24
kakasasa
为你点赞~
2021-5-23 18:15
r0Cat
为你点赞~
2021-5-21 21:56
最新回复 (6)
雪    币: 3341
活跃值: (5326)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
2
晴天师傅太强了!(震声)
2021-5-22 15:18
0
雪    币: 576
活跃值: (2035)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
mark  感谢分享
2021-5-23 18:15
0
雪    币: 2115
活跃值: (1009)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
4
mark  写的比较详细 
2021-5-24 14:22
0
雪    币: 3186
活跃值: (914)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
mark
2023-4-18 11:01
0
雪    币: 0
活跃值: (57)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
2023-4-18 16:59
0
雪    币: 205
活跃值: (329)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7

这个写得非常好,刚好我也遇到了要自己找的情况,马上去试试看。

最后于 2023-4-26 17:55 被XYUU编辑 ,原因:
2023-4-26 17:53
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册