10

我有一个十六进制文件,该文件将被闪存到在 Arduino 设备上运行 的Atmel芯片上。

在把它放到我的 Arduino 上之前,我想修改这个文件的某些方面,但我没有源 C++;只是十六进制文件。

有没有任何有效的方法来获取 .hex 文件并重新组装 C 代码?如果是这样,怎么做?

4

2 回答 2

12

我会看看avr-objdump (gulp) 的输出:

avr-objdump -j .sec1 -d -m avr5 foo.hex 

您必须将“-m”后面的单词更改为您的架构。即使/如果可行,它也会为您提供汇编代码,这看起来可能不是您曾经编写过的任何东西。变量名称会有所不同,方便的 Arduino 函数看起来就像是杂乱无章的汇编垃圾。我希望有更好的方法,对不起。

另请参阅AVR GCC 论坛 - 使用 avr-objdump 反汇编十六进制代码

于 2013-05-23T13:39:25.293 回答
12

在给出其他答案时,这可能不可用。它将 .hex 转换回汇编程序。您可能需要了解它所针对的原始 AVR 的体系结构。对于我编写和编译的代码来说效果很好。我用 AVR-25 测试了 Tiny 85。希望它有所帮助。有一个相同的东西的离线版本会很高兴! http://www.onlinedisassembler.com/ 另一种商业选择是来自https://www.hex-rays.com/的 IDA

于 2014-02-19T01:54:00.750 回答