I'm sorry, but the whole process isn't easy.
First of all, you'll need an original fir file from the canon website.
Then you'll have to compile "dissect_fw3_2.c" from the attachment and run it on the fir file. This will split it into pieces.
Now you can write some code you want to run on your camera, for example
#define LED_BLUE 0xC02200E8
#define LED_ON 0x46
int main() {
*((volatile long*)LED_BLUE) = LED_ON;
while (1) ;
}
Compile it and link it.
Now build a new fir file. Open assemble_fw and change $header_file, $flasher_file and $camera_id to match your camera. Run assemble_fw. You will get a file "output.fir". Copy this file to your sd card and do a firmware update. The blue led should turn on. To make your camera work again you'll have to take out its battery...
You will have to blink out at least a part of a new firmware version through an led in order to find out some function addresses you need for creating a complete dump. For that I used the blue led, a photo diode and some cd audio cable. Just look at the pictures in the attachment.
Now disassemble your dump and find all of the functions listed in entry_subs.S. Replace the addresses there with the ones you found out.
You are able to reboot your camera and create a new process now, which will write a complete dump to an sd card.
Decryption of the flasher part of fir files is possible, but I think it is of no use...