Encoding/Decoding DOS (Windows) Firmware images
Name of encoded file: DXM06B0Q.enc
uint8_t encode(uint8_t v) {
return (v & 0x80)
? (~(v<<1) & 0xE0) | (v & 0x0F)
: (v<<1 & 0xE0) | 0x10 | (v & 0x0F);
}
uint8_t decode(uint8_t v) {
return (v & 0x10)
? (v>>1 & 0x70) | (v & 0x0F)
: (~(v>>1) & 0x70) | 0x80 | (v & 0x0F);
}
ARM little endian
Sections:
Five tiny data sections:
00000000-0000004c
00001000-00001a9e
00002000-000020e5
00003000-00003062
00003800-00003809
Four code sections
00004000 low0 (mapped to 00000000)
0000C000 low1 (mapped to 00000000)
00028000 low2 (mapped to 00000000)
00044000 low3 (mapped to 00000000)
And two more code sections
0006C000 high0 (mapped at 80000000)
000A4000 high1 (not sure where)
there are calls in high0 into the lower area that only make sense when low1 is mapped.
but it doesn't look like code to me since it disassembles into a sequence of garbage ANDEQ instructions
some of the code is thumb, some is arm, so you have to check both possibilities
are we looking at the same file?
probably not, mine is named "DXT09B0Q"