4

I'm in the process of trying to reverse engineer a GPS-watch firmware image in purpose of adding a new feature to the watch. Here's what I got so far

  • I have the firmware image (.gcd file). AFAIK it's no common image, I couldn't find any information about it from googling

Here's the binwalk output:

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
344446        0x5417E         Zlib compressed data, default compression
548342        0x85DF6         Zlib compressed data, default compression
548698        0x85F5A         Zlib compressed data, default compression
548849        0x85FF1         Zlib compressed data, compressed
549789        0x8639D         Zlib compressed data, compressed
550677        0x86715         Zlib compressed data, compressed
550878        0x867DE         Zlib compressed data, default compression
551849        0x86BA9         Zlib compressed data, default compression
551871        0x86BBF         Zlib compressed data, best compression
552002        0x86C42         Zlib compressed data, default compression
552145        0x86CD1         Zlib compressed data, compressed
552274        0x86D52         Zlib compressed data, default compression
552425        0x86DE9         Zlib compressed data, compressed
552778        0x86F4A         Zlib compressed data, default compression
553056        0x87060         Zlib compressed data, default compression
553199        0x870EF         Zlib compressed data, compressed
554875        0x8777B         Zlib compressed data, compressed
555202        0x878C2         Zlib compressed data, default compression
555341        0x8794D         Zlib compressed data, compressed
555600        0x87A50         Zlib compressed data, default compression
555778        0x87B02         Zlib compressed data, default compression
555928        0x87B98         Zlib compressed data, default compression
556221        0x87CBD         Zlib compressed data, compressed
556502        0x87DD6         Zlib compressed data, default compression
556612        0x87E44         Zlib compressed data, default compression
556953        0x87F99         Zlib compressed data, compressed
559176        0x88848         Zlib compressed data, default compression
559922        0x88B32         Zlib compressed data, default compression
560116        0x88BF4         Zlib compressed data, default compression
560292        0x88CA4         Zlib compressed data, default compression
560417        0x88D21         Zlib compressed data, compressed
560774        0x88E86         Zlib compressed data, default compression
561567        0x8919F         Zlib compressed data, default compression
562207        0x8941F         Zlib compressed data, best compression
670601        0xA3B89         Zlib compressed data, best compression
673859        0xA4843         Zlib compressed data, compressed
678389        0xA59F5         Zlib compressed data, default compression
797326        0xC2A8E         Zlib compressed data, default compression
811248        0xC60F0         Zlib compressed data, compressed
850955        0xCFC0B         Zlib compressed data, best compression
1023917       0xF9FAD         Zlib compressed data, best compression
1079306       0x10780A        Zlib compressed data, default compression
1278786       0x138342        Zlib compressed data, default compression
1278986       0x13840A        Zlib compressed data, default compression
1279066       0x13845A        Zlib compressed data, default compression
1279106       0x138482        Zlib compressed data, default compression
1279186       0x1384D2        Zlib compressed data, default compression
1279226       0x1384FA        Zlib compressed data, default compression
1281321       0x138D29        Copyright string: " 2002-2009n"
1284386       0x139922        XML document, version: "1.0"
1294150       0x13BF46        LZMA compressed data, properties: 0x64, dictionary size: 16777216 bytes, uncompressed size: 754974720 bytes
1294166       0x13BF56        LZMA compressed data, properties: 0x64, dictionary size: 16777216 bytes, uncompressed size: 419430400 bytes
1294182       0x13BF66        LZMA compressed data, properties: 0x64, dictionary size: 16777216 bytes, uncompressed size: 419430400 bytes
1294206       0x13BF7E        LZMA compressed data, properties: 0x64, dictionary size: 16777216 bytes, uncompressed size: 419430400 bytes
1294222       0x13BF8E        LZMA compressed data, properties: 0x64, dictionary size: 16777216 bytes, uncompressed size: 419430400 bytes
1370193       0x14E851        Zlib compressed data, default compression

It all seems like a false positive because when I run binwalk -e I get these files as output:

enter image description here

All files without file suffixes are empty and the zip files give an error. ( I can't unzip the zlib files)

From hexdump output I see quite a lot of ascii which I guess indicates it's not encrypted. Especially I've found that there seems to be some sort of language files between 0x10780A and 0x138342

I've included the hexdump as hex2.out

All the files can be found here

My question is: Where do I go from here? Please help, I've no idea.

9

The Garmin GCD file format is documented here, with some additional information here and here.

Furthermore, it looks like somebody already wrote a tool (mirrored here) for handling and manipulating Garmin GCD files:

enter image description here

  • Thank you, just what I was looking for! Next step was to find a tool to further disassemble the bin files to which I found garmin-ida-loader a loader for IDA. I'm not that familiar with IDA so do you know a better tool for it? – Markus Dec 21 '14 at 19:26
  • 2
    When it comes to disassembling, there is no better tool than IDA. However, the Garmin devices are apparently running ARM processors, so any ARM disassembler should be able to handle the extracted files. – Jason Geffner Dec 21 '14 at 22:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.