If the 350D uses intercom for changing camera settings, 400plus is a great choice.
If it doesn't, but it has prop_request_change (pRequestChange) and similar property stuff, you may consider porting the
5D classic ML.
Either way, high level stuff is similar in many cases, we are exchanging code with them. FIO, GUI, task API, properties, state objects and most other low level things are identical or very similar from 5Dc (digic II) to 5D3 (digic V).
GUI stuff shouldn't be a big problem, bitmap buffer should be easy to find (Coutts can help here).
If you need to restore the hack after formatting the card from the camera, ML does that, look in bootflags.c and debug.c. FAT16/32 code included, you only need to find how to do low-level I/O on the card and a place where to copy the files temporarily. You can't just write the RAM copy of autoexec, as it contains some variables too, not just read-only code.
We couldn't trigger bulb exposures in 5Dc.
Hope this helps.