Developer POV

Cheaters Gonna Cheat
Battling Fake High Scores
Nataly Eliyahu
CASUAL CONNECT TEL AVIV
19 – 21 OCTOBER 2015
Intro – About Me
• Freelance Game Developer (NatalyCreates)
• Indie Card Game and Video Game Designer
• Technological Unit Army Service
• Background in Security and Reverse Engineering
• [email protected]
CASUAL CONNECT TEL AVIV
19 – 21 OCTOBER 2015
What we’ll talk about
• Back and forth between developer and hacker
• Approaches and considerations for the developer
• Think like a hacker
CASUAL CONNECT TEL AVIV
19 – 21 OCTOBER 2015
Step 1 – Naive Score Saving
• Developer POV
• Save the score locally
• Use Player Preferences
• Hacker POV
• Rooted phone
• Use tool – Player Preferences
Editor
CASUAL CONNECT TEL AVIV
19 – 21 OCTOBER 2015
Edit Preferences
CASUAL CONNECT TEL AVIV
19 – 21 OCTOBER 2015
Step 2 – Manipulate the Score
• Developer POV
• Encode the score (base64 /
hex / custom encoding)
• Math manipulations
• Hacker POV
• Blackboxing
• Guessing
• Find the Pattern
CASUAL CONNECT TEL AVIV
19 – 21 OCTOBER 2015
Step 3 – Encrypt the Score
• Developer POV
• Encode the score (base64)
• Encrypt the score with a
secret key (a string)
• Also: use an obfuscator on
the compiled apk
• Hacker POV
• Decompile the apk, rename
functions and organize code
• Find the encryption code to
see which algorithms is used
• Find the string for the
encryption key
• Decrypt and encrypt your own
scores
CASUAL CONNECT TEL AVIV
19 – 21 OCTOBER 2015
Decompile APK
CASUAL CONNECT TEL AVIV
19 – 21 OCTOBER 2015
Decompile APK
CASUAL CONNECT TEL AVIV
19 – 21 OCTOBER 2015
Decompile APK
CASUAL CONNECT TEL AVIV
19 – 21 OCTOBER 2015
Step 4 – Non-standard encryption
• Developer POV
• Encode the score (base64)
• Encrypt the score with a
secret key (a string)
• Change the code of the
encryption function to non
standard implementation
• Hacker POV
• Previous method fails! Score
isn’t saved correctly with your
script
• Read the encryption code
• Look for the differences from
the standard implementation
• Alternative – use dynamic
debugging
CASUAL CONNECT TEL AVIV
19 – 21 OCTOBER 2015
Step 5 – Server side
• Developer POV
• Encode the score (base64)
• Call a function on the server
to encrypt and decrypt the
score
• Secret key is no longer in the
apk
• Always Online issue!
• Hacker POV
• Attack the server, look for
loopholes
• Alternative - Use dynamic
debugging, change the score
in memory before it’s sent to
the server
CASUAL CONNECT TEL AVIV
19 – 21 OCTOBER 2015
The Heuristics Approach
• Recognize suspicious scores
• Is the score possible in the amount of time the player played?
• Patterns in the score (apple = 5 points, banana = 3 points)
• Send constant updates on player status in the game
CASUAL CONNECT TEL AVIV
19 – 21 OCTOBER 2015
To Sum Up
• With enough determination, the hacker will always win
• But - if cheating at your game is really hard, most people
won’t bother
• Going always online helps make it much harder to cheat, but
at a cost for the majority of players
• Choose the most cost-effective solution depending on your
game
CASUAL CONNECT TEL AVIV
19 – 21 OCTOBER 2015
Questions? 
• Contact me: [email protected]
• Facebook: Nataly Eliyahu
• Twitter: @NatalyEliyahu
CASUAL CONNECT TEL AVIV
19 – 21 OCTOBER 2015