Magic Lantern Firmware Wiki
Advertisement

Introduction[]

gensig is a tool written by CHDK people to create functions signatures based on function address, its name and a camera memory dump. Then, finsig is using signatures to find functions addresses in new camera, thus help porting CHDK.

The general explanation for CHDK build chain is here:
http://chdk.wikia.com/wiki/Signature_finder

Update: gensig2/finsig2 http://chdk.setepontos.com/index.php?topic=6560

How to create signatures for DryOS DSLR[]

I used these tools (slightly modified, for minor reasons): https://tools.assembla.com/chdk/browser/trunk/tools/gensigs.sh https://tools.assembla.com/chdk/browser/trunk/tools/finsig.c https://tools.assembla.com/chdk/browser/trunk/tools/gensig.c

1. first I created sig_ref_dryos_218_110.txt (for 5d2 v1.1.0, 218 is the model id) based on http://bitbucket.org/hudson/magic-lantern/src/tip/stubs-5d2.110.S (because it is the most complete stub file for 5d2, and can be tested on 204)
and sig_ref_dryos_270_108.txt (for 550d v1.0.8) from http://bitbucket.org/hudson/magic-lantern/src/tip/stubs-550d.108.S

2. then I applied signatures generation on the related dumps:

./gensigs.sh sort dryos "218_110 270_108" >signatures_dryos_AI.h
  • "sig_ref_dryos_218_110.txt" is signatures file for 5d2 1.1.0, dump is "sig_ref_dryos_218_110.bin", loaded at 0xff810000.
  • "sig_ref_dryos_270_108.txt" is signatures file for 550d 1.0.8, dump is "sig_ref_dryos_270_108.bin", loaded at 0xff010000.

Result: "signatures_dryos_AI.h" contains signatures for all functions described for 5d2 110 and 550d 108.

How to use signatures[]

then I recompiled finsig with these new signatures (just changed #include"signatures_dryos_AI.h".


then I used finsig to find functions addresses in 5d2 204 and 550d 106.

finsig.exe 5d2_204.bin 0xff810000 >5d2_204_finsig3.h
finsig.exe 0270_106_09.bin 0xff010000 >550_106_finsig3.h

I tested all of this under mingw/msys + gcc under windows 7. http://www.mingw.org/ Thanks a lot to CHDK people for gensig and finsig !!!

See also on the Mailing list:
find automatically addresses of known functions for a new firmware: gensig and finsig

Advertisement