我想弄清楚 TP-Link wr702n 设备(基于 AP121 MIPS 板)的引导加载程序如何启动操作系统(VxWorks 5.5.1)。引导加载程序是从固件更新文件中提取的,并且是一个二进制文件(没有 ELF、PE...)。我坚持下一步。IDA Pro 反汇编了一些函数,但(我猜)它需要有关 ROM 起始地址、加载地址和偏移量的更多信息才能正确执行。我在哪里可以找到这些信息?
我没有 RE 经验,我这样做是为了娱乐/教育。关于进一步阅读或下一步的任何提示都会很棒。
我想弄清楚 TP-Link wr702n 设备(基于 AP121 MIPS 板)的引导加载程序如何启动操作系统(VxWorks 5.5.1)。引导加载程序是从固件更新文件中提取的,并且是一个二进制文件(没有 ELF、PE...)。我坚持下一步。IDA Pro 反汇编了一些函数,但(我猜)它需要有关 ROM 起始地址、加载地址和偏移量的更多信息才能正确执行。我在哪里可以找到这些信息?
我没有 RE 经验,我这样做是为了娱乐/教育。关于进一步阅读或下一步的任何提示都会很棒。
正如您猜对的那样,您必须找出引导加载程序映像的正确起始地址。基于最新固件映像(TL-WR702N_V1_141203)中的引导加载程序,我建议您尝试将 0x80400000 作为起始地址。
虽然我不知道计算起始地址的简单而准确的方法,但我尝试解释一下,无论如何你是如何找到它的。
您可以尝试以下技巧:
来自http://www.nulltrace.org/2013/04/mips-bootstrapping.html:
MIPS 引导
Bootstrapping 是将 CPU 刚从复位、连续获取和执行指令到更复杂的运行环境的过程。执行此操作的程序称为“引导加载程序”或“引导带代码”或简称为“引导代码”。
第一条指令提取
当处理器通电并退出复位状态时,它会从硬连线的地址中获取第一条指令。此地址称为“引导向量”或“重置向量”。MIPS 处理器的引导向量位于物理地址
0x1FC00000。MIPS 处理器在通电后立即启用 MMU。因此,MIPS 内核提供了一个虚拟地址0xBFC00000。MMU 将此地址转换0x1FC00000为引导向量的物理地址。这个翻译再次是硬连线的。通常,引导设备存在于该地址并响应处理器的读取请求。