How to Hack Android Games with CheatDroid
An offline game keeps your coins, lives and unlocked levels in a file on your phone, and a few things only in memory while it runs. The method is the same for every game: find out where the value lives, change it there, and make sure the game doesn’t write the old one back. Each game tutorial on this site is this page applied to one game.
What you need
- A rooted phone. Android keeps every app’s data away from every other app, and root is the only way past that. If yours isn’t rooted yet: how to root with Magisk.
- CheatDroid, from the download page. The free version saves three edits a day, enough to find out whether a game plays along.
- A game that keeps its numbers on the phone. Most offline, single-player games do. Online ones mostly don’t.
1. Open the game’s files
Open CheatDroid, allow root when Magisk asks, and tap the game in the app list, or search for it. CheatDroid sorts what the game stores under Shared preferences, DataStore, Databases and Files.
Start with Shared preferences. Games made with Unity keep all of it in one file named after the game’s package, ending in .v2.playerprefs.xml; Sand Balls and Perfect Slices both work that way, and Unity PlayerPrefs has what’s worth knowing about that file. If you’re not sure where a game saves at all, here’s where Android games keep their data.
2. Find the value
- Write down the number the game shows, say 1250 coins, and type it into the search of the open file. The search looks at values as well as names.
- Names are usually plain English:
coins,gems,gold,lives,highscore,level. - Nothing in the preferences? Look under Databases. A game that keeps a row per level or per item puts it in an SQLite table (more on that).
- Change one value at a time, so you know which one did what.
3. Stop the game, then change it
A running game holds its own copy of every value and writes it back when it closes, right over your edit. That’s the most common reason a change “doesn’t work”. When you open a file of a game that’s running, CheatDroid says so and offers Force stop. Take it.
Then tap the value, type the new one and save. Start the game again with Launch on its page in CheatDroid, or from the home screen, and it reads your number.
4. When the number only exists in memory
Health during a fight, ammo, a countdown: some values never reach a file. For those, open Memory from the game’s page while the game is running.
- Type the value you see and tap Scan.
- Make it change in the game, take a hit or spend a coin, then tap = new value.
- Repeat until a few addresses are left. Set one, or freeze it so the game can’t lower it again.
If the game doesn’t show a number, only a bar, turn on I don’t know the value and narrow it down with More, Less, Changed and Same. If a set value snaps back, you changed a copy. Freezing all remaining matches at once usually gets the real one. The floating window keeps the scanner on top of the game, so you don’t have to switch apps between hits.
Scanning is free. Setting and freezing memory is part of Pro. The memory guide has the details, including what to do when a value snaps back.
5. If it keeps coming back
A value that returns after every edit lives somewhere else. Usually that’s the game’s server: games with an account or a cloud save keep the real number there, and the phone only shows it. Nothing on the phone changes that, whatever a video promises. Traffic on the game’s page shows what the game sends and gets back, so if your coin count arrives from a server you know before you spend an evening on it.
The other two reasons are on the phone. A value that looks like random letters is encrypted. A game that resets everything after an edit, even a correct one, checks its file against a checksum. Both are in why changes don’t save.
Keep a copy first
Before the first edit, export the file: the ⋮ button next to it in the file list, then Export. If the game won’t start afterwards, import the copy back (Pro), or clear the game’s data in Android’s settings and start over. What to do when a game crashes.
The walkthroughs
- Hill Climb Racing: coins and gems, in
hillclimbprefs.xml. - Sand Balls: gems and coins, in a Unity playerprefs file.
- Perfect Slices: coins, same kind of file.
Keep it to games you play on your own. Raising your score on a leaderboard or in a match takes something from the other players, and it’s also how accounts get banned. What CheatDroid is for.