如何在 mips 或 sh4 bin 固件中找到入口点?

逆向工程 艾达 拆卸 米普
2021-06-10 06:51:18

很高兴知道从 bin 公司、基于 mips 或 os21 解压缩引导加载程序后入口点在哪里。

我的意思是,总是在相同的偏移量还是取决于编译?我认为这是一个非常有用的信息,可以很好地开始......

更新:好的,但在这一点上我有另一个疑问,通常当您从设备(nor-nand)进行转储时,您会得到一个压缩/加密的二进制文件,我们知道闪存映射,它分为引导程序/引导加载程序和更高版本的应用程序、日志等...

当我获得简单的应用程序时,主要的疑问出现了,可能是根文件系统,也可能是其他二进制文件,如 .rodata.bin ......那么在此之后,如何推断入口点?因为使用 .elf 很容易(自动加载)但是对于提取的文件,通常是二进制文件,我无法推断是否将入口点应用于这些提取的文件,或者尝试找出主二进制转储的入口点..(我猜主 bin 可以在它的引导加载程序部分被拆卸)

1个回答

嵌入式系统通常在裸机上运行,​​没有任何 BIOS。因此,入口点通常是特定于体系结构和系统复位向量您需要查阅芯片或至少架构的数据表,以了解它对复位向量的说明。

例如,在 ARM 上,默认复位向量位于地址 0(Cortex-M 系列除外),因此您通常可以从固件的开头开始反汇编。i8051 是另一个值得注意的例子,它从 0 开始。

对于 MIPS,规范复位向量是 0xBFC00000。但是,这是一个处理器地址,您需要弄清楚它在闪存中映射到什么。这取决于flash如何连接到CPU,如何设置芯片选择等等。很可能它实际上对应于flash的开始。

另一种主要由较旧的 8 位和 16 位芯片使用的方法是将复位向量放置在地址空间的末尾附近所以像 FFFE 这样的地址是这些的很好的候选者。8086 从 FFFF0 开始,当前的 x86 芯片从 FFFFFFF0 开始。但同样,如果您有任何数据表,您应该检查它们而不是猜测。