我最近发现了一堆旧的 iPod(触摸前)游戏。这些ipg
文件(类似于现代 iOSipa
文件)。是包含资源(图像、音乐文件、纹理)、有时是本地化字符串文件和可执行文件的应用程序包。
每个包都包含一个 Manifest.plist 文件,其中包含可执行信息。以下是炸弹人 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>
Manifest 似乎包含两种不同的版本(一个被列出两次),大概是针对两种不同的 iPod 架构 (?)。对于每个可执行文件,似乎还有一个随附.bin.sinf
文件,我相信其中包含 Apple 的 FairPlay DRM 使用的购买者信息。
这是我卡住的地方:
运行
strings
可执行文件,对任何.bin.sinf
文件,或.raw.lcd5
文件打印垃圾。运行
nm
给我一个错误,即文件不是目标文件。file
只是告诉我这些文件是二进制数据。我无法使用,
otool
因为这些文件不是 Mach-O 二进制文件。
根据维基百科,第六代经典之前的所有 iPod 都使用 ARM 处理器(一个或多个 7TDMI 衍生的 CPU)。
我有哪些选项可以分解或读取这些可执行文件和二进制文件的任何信息(字符串等)?