I have an image of the original load on one of my two HTC Magic phones. But even if you only have one phone, if I want the latest update of a "problem" app (Google Maps, Google Search by Voice...etc...), all I would (likely) need to do is:
- Restore the original un-rooted image to phone, then update the relevant app.
- Once updated, I then use "adb pull" from /system/app to grab the apk I want off the official load onto my linux PC.
- Then put the phone in fastboot mode and fastboot Cyanogen's recovery image (cm-recovery-1.4.img) and use that to restore Cyanogen Mod onto my phone from a nandroid backup taken previously.
- Then boot the phone normally and use "adb push" the push the new app into /system/app of the CM version of the phone.
- The app will then crash...as maps did (instant force close - every time)....but I found I could THEN uninstall it (couldn't do that to the real one)...and just install the real Maps.apk from the market, over the top.....on Cyanogen...with no signing issues.
I'm sure this isn't the easiest, most direct way.....but it is another way...and it worked for me.
Now I just have to work out where the VoiceSearch.apk is located.