Reverse engineering of android java app using apktool, dex2jar, jd-gui to convert .apk file to .java.
By reverse engineering of android app (.apk file) we can get following :
- understand how a particular UI in an App is constructed
- reading AndroidManifest.xml – permissions, activities, intents etc in the App
- native libraries and images used in that App
- obsfucated code ( android SDK, by default, uses ProGuard tool which shrinks, optimizes, and obfuscates your code by removing unused code and renaming classes, fields, and methods with semantically obscure names.
Required Tools :
Download the followings first.
- Dex2jar from http://code.google.com/p/dex2jar/
- JD-GUI from http://java.decompiler.free.fr/?q=jdgui
- ApkTool from http://code.google.com/p/android-apktool/
Using ApkTool
- to extract AndroidManifest.xml and everything in res folder(layout xml files, images, htmls used on webview etc..)
Run the following command :
>apktool.bat d sampleApp.apk
It also extracts the .smali file of all .class files, but which is difficult to read.
##You can achieve this by using zip utility like 7-zip.
Using dex2jar
- to generate .jar file from .apk file, we need JD-GUI to view the source code from this .jar.
Run the following command :
>dex2jar sampleApp.apk
Decompiling .jar JD-GUI
- it decompiles the .class files (obsfucated- in case of android app, but readable original code is obtained in case of other .jar file). i.e., we get .java back from the application.
Just Run the
jd-gui.exe and File->Open to view java code from .jar or .class file.
You May Also Like -
- Android: Application Project Structure in Eclipse
- Final Year Computer Project Suggestion, A HUGE LIST
- Installing Android SDK, ADT in eclipse
- Java: using recursion to read a folder and its content in tree format sub-fo …
- Android First Program eclipse- getting started
Reference: Android Reverse Engineering – decompile .apk-.dex-.jar-.java from our JCG partner Ganesh Tiwari at the GT’s Blog blog.


