In 2013, Bluebox Security announced that they had found a bug in Android that could be used to modify the contents of any application package (including ones distributed as part of the system software) without affecting the attached cryptographic signatures; details to be disclosed at Black Hat USA 2013. I don't want to explain in detail as this site explain it well: http://www.computerworld.com/article/2483525/security0/android-flaw-lets-attackers-modify-apps-without-breaking-signatures.html

However there was no news if it has been fixed. I find that there is really an app "Xmodgames" which is exactly doing the same thing.After granting it root permissions It modifies game files without breaking its signature. You can't update that app automatically from play store once its signature get broken right? I assumed the same thing but even if xmodgames applies the mod on a game you can still update that game from play store. It means that it keeps the signature intact. Has it not really been fixed till yet?

  • The answer is important for me because then I'll look forward how apps with granted root permissions do that without breaking signature.
    – defalt
    Sep 12, 2016 at 12:59
  • The only way an APK needs to be resigned is if its content gets altered. I don't know about XmodGames, but a similar tool, Lucky Patcher, extracts the file called classes.dex (the binary) from the target base.apk (signed archive), performs a check to determine the bytes to patch, creates the base.odex with what's unchanged from the classes.dex and the patch itself (the patched bytes must be located at the same offset as the original ones), and finally puts the base.odex into a subdirectory called arm where the original base.apk resides, for which root is needed.
    – Grimoire
    Sep 12, 2016 at 17:16
  • I find that after apk is installed, its classes l.dex file is copied in /data/dalvik-cache folder. Doesn't it require new signature after modifying it?
    – defalt
    Sep 13, 2016 at 4:09
  • The funny thing is that the DEX and ODEX are not signed: they are executables. Think of them as a sequence of ones and zeroes. The APK is somewhat of a ZIP archive, and can archives be signed? Indeed they can. So, resign just the APK if you edit its contents and repack it. Patch the DEX and ODEX directly, no further operations required. Granted, patching is way harder than decompiling, editing, recompiling and signing.
    – Grimoire
    Sep 13, 2016 at 11:45
  • @DeathMaskSalesman Do you have any link where I can learn more about dex and odex patching and modification?
    – defalt
    Sep 16, 2016 at 14:07

1 Answer 1


Yes it was fixed (sourced from MasterKeyDualFix) on Wed Jul 03rd 2013. Generally vulnerabilities like this are reported to Google a long time prior to it being publicly announced. In this case it was reported to Google in Feb 2013 and the fix had already been passed to OEMs to include in their releases. (Note, the date it was committed to AOSP (the first link) is not the date it was available to Google and the OEMs)

As for the second part of your question I believe XMOD works by modifying the files after the app has been installed which bypasses the signature checks. Although I am not that familiar with XMOD I'm pretty sure that it is not using this vulnerability.

  • 1
    If I recall correctly, XMOD patches the classes.dex, similarly to Lucky Patcher, which creates a patched ODEX, so it's possible to update the app without changing its signature.
    – Grimoire
    Sep 12, 2016 at 15:39
  • That's why both lucky patcher and xmodgames were removed from play store. This is big vulnerability to android apps. Any app with fully granted root permissions can modify other apps in its environment without breaking the signature.
    – defalt
    Sep 13, 2016 at 3:48
  • @user334283 Sure, but the only thing Google does by removing them, is to bury their heads in the sand, instead of properly counter the vulnerability.
    – Grimoire
    Sep 13, 2016 at 18:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .