ATmega328P hex文件,逆向工程和调试

问题描述 投票:0回答:1

我有 ATmega328P 微控制器的编译十六进制文件,但没有源代码。我需要找到一种方法在 AVR 模拟器中调试它。

我已经做了什么:

  • 安装了Microchip Studio,其中有AVR模拟器和调试器。但它无法加载十六进制文件。它只需要源文件或 ASM 文件。
  • 使用 IDA 或 AVRDisassembler 工具反汇编十六进制文件,但 Microchip Studio 再次不接受这种反汇编格式。

我读到了 avr8js 模拟器项目,但我不知道如何将任何调试器插入到这个模拟器中。

您能告诉我有关 Windows/Linux/MacOSX 平台上执行此操作的工具吗?

debugging reverse-engineering avr atmega
1个回答
0
投票

你可以使用avr-gdb。

GDB 将接受十六进制文件,但显然由于缺少调试符号,调试功能将受到限制:

avr-gdb firmware.hex

要在模拟器中调试程序,您可以使用 simavr,它公开了一个 GDB RSP 调试服务器,您可以通过 GDB 连接到该服务器。

simavr -g --mcu atmega328p --freq 1000000 firmware.hex

然后,连接到simavr的GDB服务器,在GDB中:

(gdb) target remote :1234

此时就可以在GDB中调试程序了。

要反汇编GDB中的程序内存,可以使用

x
命令:

x/10bfi 0x100

10b
是字节数,
fi
指示GDB拆解内存,
0x100
是起始地址。所以上面的命令将从程序存储器中的地址 0x100 开始反汇编 10 个字节。

如果您有 AVR 兼容的调试工具,例如 Atmel-ICE 或 PICKit4,则可以使用 Bloom 等工具来调试程序。 Bloom 将连接到您的调试工具并通过 GDB 服务器向目标公开接口,就像 simavr 一样。免责声明:我是《Bloom》的作者。

© www.soinside.com 2019 - 2024. All rights reserved.