APKBreaker #0

For today’s post, i will talk about the tool i am currently developing, called APKBreaker. I will talk about its current progress, and future developments, including the features I may add into APKBreaker in future!

So what is APKBreaker?

APKBreaker will be designed as a reverse engineering tool for Android applications, given an APK, it will decompile the APK into it’s Java classes that is human readable, and at the same time, perform static analysis of the code to find vulnerabilities!

APKBreaker will exist in both terminal and GUI, to cater to individuals who prefer GUI and or terminal based application!

Main features that APKBreaker will essentially have

  • Decompressed AndroidManifest.xml that can be read.
  • classes.dex file decompiled into readable jar files (Something like dex2jar)
  • GUI support
  • Static analysis of the reverse engineered code to search for common vulnerabilities

(Ambitious) Future of APKBreaker

  • Produce detailed reports from static analysis
  • Able to reverse JNI layer -> Like Ghidra/IDA.
  • Dynamic analysis?
  • Repackaged files into a separate APK

Yes yes I know that currently there are a lot of tools out there which are already good and could do most, if not all of the things mentioned above. But it feels good to make your very own product, so why not? My aim of making APKBreaker would ultimately for my own learning and experimentation and in whatever developmental stage it is at, it will be open sourced entirely so others might make good use of it!

What APKBreaker can do at stage #0?

Here’s a breakdown of what APKBreaker can do currently.

For terminal based:

Given an apk file as an argument, APKBreaker will create a new directory, copy the apk file and convert it to a zip file before placing in the new directory, extract AndroidManifest.xml and decompress it to human-readable file, with this new file created in the new directory. Lastly, extract the classes.dex file, prepping it for the next stage, which is to be converted to a readable jar file. (Which is not done yet)

With the apk called test.apk, a new directory called test is created, and the above mentioned files are placed in this new directory. *This new directory is created in the location where the apk resides by the way!

For the GUI:

Currently it looks like this, with a basic interface. The console is located at the bottom, as you can see from the above screenshot. To begin, you simply go to File > Upload new APK.

Once you select your APK and open it, the same thing happens, a new directory is created based on the apk file and the relevant files are extracted and placed in this new directory!

Essentially, both the GUI and CLI will serve the exact same functions, except that the GUI will ultimately be easier for the eyes, and those who aren’t a fan of typing terminal commands will of course appreciate the presence of GUI!

And that’s all for APKBreaker! Till the next stage! (Hopefully I would be able to convert dex to jar file successfully by then)

If you are keen to follow, here’s the link to the public GitHub repo: https://github.com/matthewng1996/APKBreaker