1

I have recently found a bunch of old iPod (pre-touch) games. These ipg files (similar to modern iOS ipa files). Are application bundles which contain resources (images, music files, textures), sometimes a localized strings file, and executables.

Each bundle contains a Manifest.plist file, with executable information. Below is the manifest for Bomberman 1.0:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>BuildIdentifier</key>
    <string>1465338237-ae7bdef1533
</string>
    <key>Files</key>
    <array>
        <dict>
            <key>Digest</key>
            <string>D576EBCA193EA6C08060394435497CBE52288730</string>
            <key>Path</key>
            <string>bombLaunchm25.raw.lcd5</string>
            <key>Size</key>
            <integer>138256</integer>
        </dict>
        <dict>
            <key>DRM</key>
            <true/>
            <key>Digest</key>
            <string>10A5CD8E82B692D4A3136753639FFE9EC96F9E72</string>
            <key>Path</key>
            <string>Executables/iPodBomberman_7052137.bin</string>
            <key>Size</key>
            <integer>425664</integer>
            <key>Verify</key>
            <true/>
        </dict>
        <dict>
            <key>Digest</key>
            <string>3DBFC1556706CF12555448CC5103FCCB59E6E773</string>
            <key>Path</key>
            <string>bombLaunchm1a.raw.lcd5</string>
            <key>Size</key>
            <integer>6176</integer>
        </dict>
        <dict>
            <key>DRM</key>
            <true/>
            <key>Digest</key>
            <string>99B99192D77939DAB9A7E05AEB9ED564D33ECFDB</string>
            <key>Path</key>
            <string>Executables/iPodBomberman_7052208.bin</string>
            <key>Size</key>
            <integer>633344</integer>
            <key>Verify</key>
            <true/>
        </dict>
    </array>
    <key>GUID</key>
    <string>20000</string>
    <key>Name</key>
    <string>Bomberman</string>
    <key>Platforms</key>
    <array>
        <dict>
            <key>BuildID</key>
            <integer>7052137</integer>
            <key>ExecutablePath</key>
            <string>Executables/iPodBomberman_7052137.bin</string>
            <key>LaunchingArtwork</key>
            <string>bombLaunchm25.raw.lcd5</string>
            <key>PlatformID</key>
            <integer>1</integer>
            <key>PlatformVersion</key>
            <integer>1</integer>
            <key>Size</key>
            <integer>425664</integer>
        </dict>
        <dict>
            <key>BuildID</key>
            <integer>7052208</integer>
            <key>ExecutablePath</key>
            <string>Executables/iPodBomberman_7052208.bin</string>
            <key>LaunchingArtwork</key>
            <string>bombLaunchm1a.raw.lcd5</string>
            <key>PlatformID</key>
            <integer>2</integer>
            <key>PlatformVersion</key>
            <integer>1</integer>
            <key>Size</key>
            <integer>633344</integer>
        </dict>
        <dict>
            <key>BuildID</key>
            <integer>7052208</integer>
            <key>ExecutablePath</key>
            <string>Executables/iPodBomberman_7052208.bin</string>
            <key>LaunchingArtwork</key>
            <string>bombLaunchm1a.raw.lcd5</string>
            <key>PlatformID</key>
            <integer>3</integer>
            <key>PlatformVersion</key>
            <integer>1</integer>
            <key>Size</key>
            <integer>633344</integer>
        </dict>
    </array>
    <key>Version</key>
    <string>1.0</string>
</dict>
</plist>

The Manifest appears to contain two different builds (one is listed twice), presumably for two different iPod architectures (?). For each executable there also appears to be an accompanying .bin.sinf file, which I believe contains purchaser information used by Apple's FairPlay DRM.

Here's where I get stuck:

  • Running strings on either of the executables, .bin.sinf files, or the .raw.lcd5 files prints garbage.

  • Running nm gives me an error that the files are not object files.

  • file just tells me that the files are binary data.

  • I cannot use otool because the files are not Mach-O binaries.

According to Wikipedia, all iPods before the 6th gen classic used an ARM processor (one or more 7TDMI-derived CPUs).

What are my options for dissembling or reading any of the information (strings, etc) of these executables and binary files?

  • Modern IPA files are heavily encrypted. Could it be the same for these old files? Your search for plain text strings seems to indicate that. – usr2564301 Nov 17 '16 at 21:27
  • @RadLexus That could be the case. All of the binaries should be the same for all purchasers, but the sinf contain purchaser-specific keys to start the executable. But wouldn't it be odd for all the binary files in the bundle to be encrypted? Surely the game data should be somehow visible. – JAL Nov 17 '16 at 21:29

Your Answer

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

Browse other questions tagged or ask your own question.