Firmware Development


 * Encryption / Decryption
 * File Formats / Bundles
 * Assembly / Disassembly
 * Compilers and Compilation

Source Code

 * https://github.com/simeonpilgrim/nikon-firmware-tools

Firmware Creation
Here is the basic workflow needed in order to make a change to the firmware


 * Decrypt a firmware file
 * Split it into A+B
 * Disassemble it
 * Trace through the compiler produced code to find whatever we want to change
 * Write the change in assembler (until compiler available)
 * Translate it to machine code
 * Insert it into the firmware file
 * Disassemble it again
 * Compare the with the intended assembler and iterate until it is the same
 * CRC sign the firmware
 * Encrypt the firmware
 * Load into Camera

(List seeded from roos in comments here)

Tools

 * GNU binutils

Compilers

 * C# - Microsoft Visual Studio "Express"/Free Edition
 * GNU C compiler (GCC)