如何反汇编 atmega328p Elf 文件
How To Disassemble A atmega328p Elf File
我试过像这样删除 atmega328p elf 文件。
avr-objdump -d -Maddr16,data16 target/avr-atmega328p/release/sample.elf (git)-[serial_echo_interrupt]
target/avr-atmega328p/release/sample.elf: file format elf32-avr
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end>
4: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
8: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
10: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
但是程序地址不匹配,因为flash宽度是16位
你知道如何设置16位flash宽度吗?
此命令适用于反汇编为 ATmega328P 编译的 ELF 或 HEX 文件:
avr-objdump -D -m avr5 FILENAME
这个命令最棘手的部分是avr5
参数,它指定了芯片的架构。如果您使用的芯片不是 ATmega328P,您可以通过查看 GCC 源代码中的这个文件并找到定义您的芯片的行来获得有关指定什么架构的提示:
https://github.com/gcc-mirror/gcc/blob/releases%2Fgcc-10.2.0/gcc/config/avr/avr-mcus.def
我试过像这样删除 atmega328p elf 文件。
avr-objdump -d -Maddr16,data16 target/avr-atmega328p/release/sample.elf (git)-[serial_echo_interrupt]
target/avr-atmega328p/release/sample.elf: file format elf32-avr
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end>
4: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
8: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
10: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt>
但是程序地址不匹配,因为flash宽度是16位
你知道如何设置16位flash宽度吗?
此命令适用于反汇编为 ATmega328P 编译的 ELF 或 HEX 文件:
avr-objdump -D -m avr5 FILENAME
这个命令最棘手的部分是avr5
参数,它指定了芯片的架构。如果您使用的芯片不是 ATmega328P,您可以通过查看 GCC 源代码中的这个文件并找到定义您的芯片的行来获得有关指定什么架构的提示:
https://github.com/gcc-mirror/gcc/blob/releases%2Fgcc-10.2.0/gcc/config/avr/avr-mcus.def