Welcome to the UnCrackable Apps for Android and iOS, a collection of mobile reverse engineering challenges. These challenges are used as examples throughout the Mobile Security Testing Guide. Of course, you can also solve them for fun.
This app holds a secret inside. Can you find it?
- Objective: A secret string is hidden somewhere in this app. Find a way to extract it.
- Author: Bernhard Mueller.
- Maintained by the OWASP MSTG leaders.
This app is compatible with Android 4.4 and up.
$ adb install UnCrackable-Level1.apk
- Solution using Frida by c0dmtr1x
- Solution using static analysis
- Solution using jdb
- Solution using Frida by Eduardo Novella
- Solution using Xposed by sh3llc0d3r
- Solution using RMS by @mobilesecurity_ (video)
- Solution using static analysis by Eduardo Vasconcelos
- Solution using Frida by Davide Cioccia
This app holds a secret inside. May include traces of native code.
- Objective: A secret string is hidden somewhere in this app. Find a way to extract it.
- Author: Bernhard Mueller.
- Special thanks to Michael Helwig for finding and fixing an oversight in the anti-tampering mechanism.
- Maintained by the OWASP MSTG leaders.
This app is compatible with Android 4.4 and up.
$ adb install UnCrackable-Level2.apk
- Solution using Frida and radare2 by c0dmtr1x.
- Solution using Frida by Eduardo Novella.
- Solution using patches by sh3llc0d3r.
- Solution using RMS by @mobilesecurity_ (video).
- Solution using static analysis and Ghidra by Eduardo Vasconcelos.
- Solution using Ghidra and Frida by Davide Cioccia
The crackme from hell!
- Objective: A secret string is hidden somewhere in this app. Find a way to extract it.
- Author: Bernhard Mueller.
- Special thanks to Eduardo Novella for testing, feedback and pointing out flaws in the initial build(s).
- Maintained by the OWASP MSTG leaders.
This app is compatible with Android 4.4 and up.
$ adb install UnCrackable-Level3.apk
- Solution using Frida by Eduardo Novella.
- Solution using patches by sh3llc0d3r.
- Solution using Ghidra and Frida by Davide Cioccia
The Radare2 community always dreamed with its decentralized and free currency to allow r2 fans to make payments in places and transfer money between r2 users. A debug version has been developed and it will be supported very soon in many stores and websites. Can you verify that this is cryptographically unbreakable?
Hint: Run the APK in a non-tampered device to play a bit with the app.
- Objectives:
- 1: There is a master PIN code that generates green tokens (aka r2coins) on the screen. If you see a red r2coin, then this token won't be validated by the community. You need to find out the 4 digits PIN code and the salt employed as well. Flag:
r2con{PIN_NUMERIC:SALT_LOWERCASE}
- 2: There is a "r2pay master key" buried in layers of obfuscation and protections. Can you break the whitebox? Flag:
r2con{ascii(key)}
- 1: There is a master PIN code that generates green tokens (aka r2coins) on the screen. If you see a red r2coin, then this token won't be validated by the community. You need to find out the 4 digits PIN code and the salt employed as well. Flag:
- Author: Eduardo Novella & Gautam Arvind.
- Special thanks to NowSecure for supporting this crackme.
- Maintained by Eduardo Novella & Gautam Arvind.
This app is compatible with Android 4.4 and up.
$ adb install r2pay-v0.9.apk
v0.9
- Release forOWASP MSTG
.- Source code is available and the compilation has been softened in many ways to make the challenge easier and more enjoyable for newcomers.
v1.0
- Release forR2con CTF 2020
.- No source code is available and many extra protections are in place.
- Not yet
- Solution bypassing protections using Frida/QBDI by Romain Thomas.
- Solution whitebox key recovery using SCAMarvels by Romain Thomas.
A brand new Android app sparks your interest. Of course, you are planning to purchase a license for the app eventually, but you'd still appreciate a test run before shelling out $1. Unfortunately no keygen is available!
- Objective: Generate a valid serial key that is accepted by this app.
- Author: Bernhard Mueller.
- Maintained by the OWASP MSTG leaders.
Copy the binary to your Android device and run using the shell.
$ adb push validate /data/local/tmp
[100%] /data/local/tmp/validate
$ adb shell chmod 755 /data/local/tmp/validate
$ adb shell /data/local/tmp/validate
Usage: ./validate <serial>
$ adb shell /data/local/tmp/validate 1234
Incorrect serial (wrong format).
$ adb shell /data/local/tmp/validate JACE6ACIARNAAIIA
Entering base32_decode
Outlen = 10
Entering check_license
Product activation passed. Congratulations!
This app holds a secret inside. Can you find it?
- Objective: A secret string is hidden somewhere in this binary. Find a way to extract it. The app will give you a hint when started.
- Author: Bernhard Mueller
- Maintained by the OWASP MSTG leaders.
Open the "Device" window in Xcode and drag the IPA file into the list below "Installed Apps".
Note: The IPA is signed with an Enterprise distribution certificate. You'll need to install the provisioning profile and trust the developer to run the app the "normal" way. Alternatively, re-sign the app with your own certificate, or run it on a jailbroken device (you'll want to do one of those anyway to crack it).
- Multiple solutions by David Weinstein.
- Solution by Ryan Teoh.
- Solution with Angr by Vikas Gupta.
- Solution by Pietro Oliva.
This app holds a secret inside - and this time it won't be tampered with!
- Objective: Find the secret code - it is related to alcoholic beverages.
- Author: Bernhard Mueller.
- Maintained by the OWASP MSTG leaders.
Note: Due to its anti-tampering the app won't run correctly if the main executable is modified and/or re-signed. You'll need to trust the developer run it the standard way on a non-jailbroken device (General Settings -> Profile & Device Management) and to verify the solution.
Open the "Device" window in Xcode and drag the IPA file into the list below "Installed Apps".
Note: The IPA is signed with an Enterprise distribution certificate. You'll need to install the provisioning profile and trust the developer to run the app the "normal" way. Alternatively, re-sign the app with your own certificate, or run it on a jailbroken device (you'll want to do one of those anyway to crack it).
Did you enjoy working with the Crackmes? There is more! Go to the MSTG Hacking Playground and find out!
If the app does not boot, or if there is another bug: file an issue at this repository or at the one you should not go to (SPOILER ALERT!).