AVRDisassembler is a new open source, cross platform (Windows, Mac, Linux) disassembler for the AVR microcontroller platform, written in C# (.NET Core). It supports the full instruction set as described by the ATMEL 0856 Instruction Set Documentation. The code is made available under the MIT license.
Note: Full source code for the disassembler can be found on GitHub: AVRDisassembler.
Command line usage Using the disassembler is very straightforward.
While working with larger clients one sometimes encounters legacy applications that have been running on the same technology stack / backend for 20 years (or more). Running old components comes with a particular set of challenges without any doubt. But from time to time one can see artifacts that suggest security awareness itself was really just in its infancy (at least for some products on the market).
Some leeway should perhaps be given to the fact that this is old technology (for context, while Microsofts Access 97 was published on CD-rom, it was also distributed as a set of a 44 3½-inch floppy disks).
Sending a program to a microcontroller (which is most often called “programming” the device) can be done in multiple ways. For example, one can do it through the use of ICSP headers and dedicated hardware programmers. In the Arduino world the usage of bootloaders is extremely common, since it is what allows you to program your device directly through the Serial (USB) connection. This blog post will explore how we can upload a compiled program (in its Intel HEX form) to an Arduino UNO directly, by interacting with the device’s bootloader from C#.