[linux-dvb] 8051 firmware disassembly
isely at isely.net
Thu Mar 15 06:10:36 CET 2007
On Thu, 15 Mar 2007, Nick Andrew wrote:
> I figure this may take only a minute for the right person, and
> it can't hurt to ask, so ...
> I have a 3k firmware image for 8051. Is there anybody who can
> disassemble this file for me? The file seems to contain some
> code and some data, so naturally the disassembly will need to
> deduce which is which. I think the first 3 bytes are a jump
> instruction so there is a known code entry point.
Take a look at this:
It can also be found here:
It's a simple C program that disassembles 8051 code. You "suggest" to
it the entry points to start from and it will follow through every jump
it sees, hopping around through the code and hopefully skipping the
I have a version of this disassembler that I've heavily hacked on, where
I can define symbols & text annotations to be interpolated into the
output - great for interative exploration of a pile of opaque 8051 code.
Typically what I've done is to feed it all the architecture-defined
entry points for the various processor exception addresses (like for
example the spot you suspect), look at what results, remove entry points
that appear not to be in use (e.g. they disassemble into gibberish), try
again, etc, etc. As I spot interesting looking functions, I'll tag
those addresses with symbol names then run the disassembler again to see
where else those symbols might surface. It's not perfect since I don't
catch split instruction address calculations or computed gotos, but
usually with enough bleary-eyed staring you can start to see a pattern -
and if there's a computed goto in there it can be spotted from the
telltale lookup table. Then I tag each table target with another
fabricated symbol and iterate again.
You can certainly start with the link above. If what you see from that
looks promising, then if you ask nicely I might be convinced to
pretty-up my hacks and make available the results on a web page.
| Mike Isely | PGP fingerprint
Spammers Die!! | | 03 54 43 4D 75 E5 CC 92
| isely @ pobox (dot) com | 71 16 01 E2 B5 F5 C1 E8
More information about the linux-dvb