How to extract code of .apk file which is not working? [duplicate]
Question
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...
Solution 2
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.
OTHER TIPS
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
Click here this is a good tutorial for both window/ubuntu.
apktool1.5.1.jar download from here.
apktool-install-linux-r05-ibot download from here.
dex2jar-0.0.9.15.zip download from here.
jd-gui-0.3.3.linux.i686.tar.gz (java de-complier) download from here.
framework-res.apk ( Located at your android device /system/framework/)
Procedure:
- Rename the .apk file and change the extension to .zip ,
it will become .zip.
Then extract .zip.
Unzip downloaded dex2jar-0.0.9.15.zip file , copy the contents and paste it to unzip folder.
Open terminal and change directory to unzip “dex2jar-0.0.9.15 “
– cd – sh dex2jar.sh classes.dex (result of this command “classes.dex.dex2jar.jar” will be in your extracted folder itself).
Now, create new folder and copy “classes.dex.dex2jar.jar” into it.
Unzip “jd-gui-0.3.3.linux.i686.zip“ and open up the “Java Decompiler” in full screen mode.
Click on open file and select “classes.dex.dex2jar.jar” into the window.
“Java Decompiler” and go to file > save and save the source in a .zip file.
Create “source_code” folder.
Extract the saved .zip and copy the contents to “source_code” folder.
This will be where we keep your source code.
Extract apktool1.5.1.tar.bz2 , you get apktool.jar
Now, unzip “apktool-install-linux-r05-ibot.zip”
Copy “framework-res.apk” , “.apk” and apktool.jar
Paste it to the unzip “apktool-install-linux-r05-ibot” folder (line no 13).
Then open terminal and type:
– cd
– chown -R : ‘apktool.jar’
– chown -R : ‘apktool’
– chown -R : ‘aapt’
– sudo chmod +x ‘apktool.jar’
– sudo chmod +x ‘apktool’
– sudo chmod +x ‘aapt’
– sudo mv apktool.jar /usr/local/bin
– sudo mv apktool /usr/local/bin
– sudo mv aapt /usr/local/bin
– apktool if framework-res.apk – apktool d .apk