TrustZone中TrustApp格式解析

ARM早在ARM v6的时候就引入了一个叫做Trust Zone的概念。其基本原理是,相对于普通操作系统的执行环境来说,又引入了一个独立的执行环境,彼此基本上不相关。即使普通操作系统和应用的执行环境被攻破,也不能触及到这个所谓的安全执行环境,这是通过硬件来保证的。

Trust Zone中也会运行一个非常轻量级的操作系统,在这个操作系统中运行的程序,叫做Trust App,都是由硬件厂商特别编写的,一般个人不可能写一个程序运行在Trust Zone中。

对于Google Nexus 6手机来说,这些程序都存放在/firmware/image目录下,就拿keymaster程序来说,其由五个文件组成:


先来看看第一个文件内有什么:


好消息,有ELF文件的魔数头,但文件很短,肯定不是一个完整的ELF文件。再用readelf文件看看:


可以看到keymaster.b00文件其实就是一个ELF文件的头部,这个ELF文件包含了四个段。

第一个就是ELF文件头,就是b00文件的内容;第二个段没有类型,文件偏移是0x1000,文件大小是0x19a8;第三个段可以看出包含执行的代码,在文件的0x3000偏移处,文件大小是0x4994;最后一个段应该是数据段,可读可写,在文集的0x8fcc偏移处,文件大小之后0xd0。

好了,来看看第二个keymaster.b01文件:


文件很长,从里面的内容也看不出是用来干什么的,但是有没有发现它的长度刚好是0x19a8。

可以再看看keymaster.b01,发现其长度也刚好是0x4994,而keymaster.b02也确实是0xd0。

因此,我们可以推断,keymaster.b00~b03这四个文件其实就是真正可执行程序的四个段,只需要找一个二进制编辑工具,将它们拼接好之后(注意文件偏移,少的部分补0)就是一个完整的可以用IDA分析的文件了:


至于最后一个keymaster.mdt文件,也包含一个完整的ELF头部,和keymaster.b00一样,不清楚具体的用途,不过看内容猜测是和证书验证有关。并不是你写一个程序丢到/firmware/image目录下,然后调用startapp就可以让其在TrustZone中执行起来的,只有通过了证书签名验证的应用才可以。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值