How to extract code of .apk file which is not working? [duplicate]
Actually I was trying to extract code of a .apk file called cloudfilz.apk and wanted to manipulate in its source code so I followed the steps given below:-
make a new folder and put .apk file (which you want to decode) now rename this .apk file with extension .zip (eg: rename from filename.apk to filename.apk.zip) and save it..now you get classes.dex files etc...at this stage you are able to see drawable but not XML and java file...so continue...
Step 2:
now extract this zip apk file in the same folder(in this eg or case NEW FOLDER). now download dex2jar from this link http://code.google.com/p/dex2jar/ and extract it to the same folder (in this case NEW FOLDER).....now open command prompt and reach to that folder (in this case NEW FOLDER)....after reaching write "dex2jar classes.dex" and press enter.....now you get classes.dex.dex2jar file in the same folder......
=>Question:-I was successful to achieve step 1 but in step2 when I am executing dex2jar classes.dex I am getting an error on command prompt java.lang.UnsupportedClassVersionError
,I know this is due to incompatibility between my installed JDK version and classes.dex JDK version number so stuck here and don't have way out...
Note: All of the following instructions apply universally (aka to all OSes) unless otherwise specified.
Prerequsites
You will need:
- A working Java installation
- A working terminal/command prompt
- A computer
- An APK file
Steps
Step 1: Changing the file extension of the APK file
-
Change the file extension of the
.apk
file by either adding a.zip
extension to the filename, or to change.apk
to.zip
.For example,
com.example.apk
becomescom.example.zip
, orcom.example.apk.zip
. Note that on Windows and macOS, it may prompt you whether you are sure you want to change the file extension. Click OK or Add if you're using macOS:
Step 2: Extracting Java files from APK
-
Extract the renamed APK file in a specific folder. For example, let that folder be
demofolder
.If it didn't work, try opening the file in another application such as WinZip or 7-Zip.
For macOS, you can try running
unzip
in Terminal (available at/Applications/Terminal.app
), where it takes one or more arguments: the file to unzip + optional arguments. Seeman unzip
for documentation and arguments.
Download
dex2jar
(see all releases on GitHub) and extract that zip file in the same folder as stated in the previous point.-
Open command prompt (or a terminal) and change your current directory to the folder created in the previous point and type the command
d2j-dex2jar.bat classes.dex
and press enter. This will generateclasses-dex2jar.jar
file in the same folder.-
macOS/Linux users: Replace
d2j-dex2jar.bat
withd2j-dex2jar.sh
. In other words, rund2j-jar2dex.sh classes.dex
in the terminal and press enter.
-
macOS/Linux users: Replace
Download Java Decompiler (see all releases on Github) and extract it and start (aka double click) the executable/application.
From the JD-GUI window, either drag and drop the generated
classes-dex2jar.jar
file into it, or go toFile > Open File...
and browse for the jar.Next, in the menu, go to
File > Save All Sources
(Windows: Ctrl+Alt+S, macOS: ⌘+⌥+S). This should open a dialog asking you where to save a zip file named `classes-dex2jar.jar.src.zip" consisting of all packages and java files. (You can rename the zip file to be saved)Extract that zip file (
classes-dex2jar.jar.src.zip
) and you should get all java files of the application.
Step 3: Getting xml
files from APK
- For more info, see the
apktool
website for installation instructions and more -
Windows:
- Download the wrapper script (optional) and the apktool jar (required) and place it in the same folder (for example,
myxmlfolder
). - Change your current directory to the
myxmlfolder
folder and rename the apktool jar file toapktool.jar
. - Place the
.apk
file in the same folder (i.emyxmlfolder
). -
Open the command prompt (or terminal) and change your current directory to the folder where
apktool
is stored (in this case,myxmlfolder
). Next, type the commandapktool if framework-res.apk
.What we're doing here is that we are installing a framework. For more info, see the docs.
- The above command should result in "Framework installed ..."
-
In the command prompt, type the command
apktool d filename.apk
(wherefilename
is the name of apk file). This should decode the file. For more info, see the docs.This should result in a folder
filename.out
being outputted, wherefilename
is the original name of the apk file without the.apk
file extension. In this folder are all the XML files such as layout, drawables etc.
- Download the wrapper script (optional) and the apktool jar (required) and place it in the same folder (for example,
Source: How to get source code from APK file - Comptech Blogspot
Any .apk file from market or unsigned
-
If you apk is downloaded from market and hence signed Install Astro File Manager from market. Open Astro > Tools > Application Manager/Backup and select the application to backup on to the SD card . Mount phone as USB drive and access 'backupsapps' folder to find the apk of target app (lets call it app.apk) . Copy it to your local drive same is the case of unsigned .apk.
-
Download Dex2Jar zip from this link: SourceForge
-
Unzip the downloaded zip file.
-
Open command prompt & write the following command on reaching to directory where dex2jar exe is there and also copy the apk in same directory.
dex2jar targetapp.apk file
(./dex2jar app.apk on terminal) -
http://jd.benow.ca/ download decompiler from this link.
-
Open ‘targetapp.apk.dex2jar.jar’ with jd-gui File > Save All Sources to sava the class files in jar to java files.
step 1:
Download dex2jar here. Create a java project and paste (dex2jar-0.0.7.11-SNAPSHOT/lib ) jar files .
Copy apk file into java project
Run it and after refresh the project ,you get jar file .Using java decompiler you can view all java class files
step 2: Download java decompiler here