A few minutes of checking can tell you whether an IPA is the file its developer actually published, and whether someone has added code to it. You need a computer for the best checks. The commands below work on Windows and Mac.
1. Compare the SHA-256 checksum
If the developer publishes a checksum (GitHub releases often do), compare it with yours:
Windows (PowerShell):
Get-FileHash .\Game.ipa -Algorithm SHA256
Windows (Command Prompt):
certutil -hashfile Game.ipa SHA256
Mac / Linux:
shasum -a 256 Game.ipa
If the hashes match exactly, the file has not been changed and was not corrupted during the download. If they don't match, do not install it.
2. Look inside the IPA
An IPA is a ZIP file. Copy it, rename the copy to .zip, and extract it. You should see Payload/GameName.app/. If the archive contains other odd top-level files, such as .exe or .bat files or installers, delete it.
3. Check the bundle ID and version
Open Payload/GameName.app/Info.plist. On a Mac:
plutil -p Payload/GameName.app/Info.plist | grep -E "CFBundleIdentifier|CFBundleShortVersionString|MinimumOSVersion"
On Windows, with Python installed (the plist is often binary):
python -c "import plistlib;d=plistlib.load(open(r'Payload\GameName.app\Info.plist','rb'));print(d['CFBundleIdentifier'],d.get('CFBundleShortVersionString'),d.get('MinimumOSVersion'))"
Make sure the bundle ID belongs to the expected developer (for example com.realdeveloper.game) and the version is the one you meant to download.
4. Look for injected libraries
Open Payload/GameName.app/Frameworks/. Well-known frameworks, such as analytics SDKs, Unity and ad networks, are normal. Be suspicious of:
- loose
.dylibfiles with random or "tweak"-style names, - names like
hack,menu,inject,substrateorcheat, - files dated much later than everything else.
On a Mac, you can list what the main program loads:
otool -L Payload/GameName.app/GameName
5. Inspect the code signature (Mac)
codesign -dvv Payload/GameName.app
codesign -d --entitlements - Payload/GameName.app
The first command shows who signed the app. The second lists what it is allowed to do. A simple game rarely needs unusual entitlements such as VPN configuration or access to other apps' shared data.
6. Scan with VirusTotal
Upload the IPA to virustotal.com. It takes files up to 650 MB. A clean result is only a weak signal, but a detection by several engines is a clear reason to walk away.
Verification checklist
- Checksum matches the developer's published value
- Only
Payload/inside the archive - Bundle ID matches the real developer
- No unexplained
.dylibfiles - Entitlements make sense for a game
Passed all checks? Continue with how to install IPA on iPhone.
Frequently asked questions
What is a checksum?
Can I verify an IPA on my iPhone?
Does a VirusTotal scan mean an IPA is safe?
Keep reading