← Back to list

Reverse Android Apk

Reversing an Android APK involves decompiling the APK to analyze its source code, resources, and manifest file. This process can help you…

Mohammad Muddasir · 2026-02-06 06:57 · 1 claps · 2.0 min read
#android #reverse-engineering #android-app-development #reverse #androidreverseengineering
Open on Medium ↗

Reverse Android Apk

Reversing an Android APK involves decompiling the APK to analyze its source code, resources, and manifest file. This process can help you understand the app’s functionality, identify vulnerabilities, or modify its behavior. Here’s a step-by-step guide to reverse-engineering an Android APK:

1. Prepare Your Environment

Ensure you have the necessary tools installed on your system:

  • Java Development Kit (JDK): Required for running Android decompiling tools.
  • Apktool: A tool for decompiling and recompiling Android APK files.
  • JD-GUI: A graphical utility that displays Java source codes of “.class” files.
  • dex2jar: A tool to convert Android DEX files to JAR files.
  • APK decompiler: Tools like JADX or Fernflower can be used for decompiling Java bytecode to source code.

2. Download the APK

Obtain the APK file you want to reverse-engineer. You can download it from the Google Play Store using tools like adb or directly from your device.

sh

adb pull /path/to/app.apk

3. Decompile the APK with Apktool

Apktool can decompile the APK to smali code and extract resources.

sh

apktool d app.apk -o output_directory

This command will create a directory structure with smali code and resources.

4. Convert DEX to JAR

Use dex2jar to convert the DEX files to JAR files, which can then be decompiled to Java source code.

sh

d2j-dex2jar.sh app.apk

This will generate a classes-dex2jar.jar file.

5. Decompile JAR to Java Source Code

Use JD-GUI or JADX to decompile the JAR file to Java source code.

Using JD-GUI

  1. Open JD-GUI.
  2. Drag and drop the classes-dex2jar.jar file into JD-GUI.
  3. Browse the decompiled Java source code.

Using JADX

JADX can decompile the APK directly to Java source code.

sh

jadx-gui app.apk

6. Analyze the Manifest File

The AndroidManifest.xml file contains important information about the app, such as permissions, activities, services, and receivers.

xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.app">
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

7. Examine Smali Code

Smali is an assembly-like language for the Dalvik Virtual Machine. You can examine the smali code to understand the app’s low-level behavior.

smali

.method public onCreate(Landroid/os/Bundle;)V
    .locals 1
    .prologue
    .line 10
    invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V
    .line 11
    const-string v0, "Hello, World!"
    invoke-virtual {p0, v0}, Landroid/app/Activity;->setTitle(Ljava/lang/CharSequence;)V
    return-void
.end method

8. Modify and Recompile (Optional)

If you want to modify the app, make changes to the smali code or resources, and then recompile the APK using Apktool.

sh

apktool b output_directory -o modified_app.apk

9. Sign the APK

After modifying and recompiling the APK, you need to sign it with a new key.

sh

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.jks modified_app.apk alias_name

10. Install and Test

Install the modified APK on your device or emulator and test it to ensure your changes work as expected.

sh

adb install modified_app.apk

Additional Tools

  • Bytecode Viewer: A Java decompiler and disassembler that supports multiple formats, including APK.
  • Ghidra: A software reverse engineering (SRE) framework developed by the NSA, which can be used to analyze APKs.

By following these steps, you can effectively reverse-engineer an Android APK to analyze its code, resources, and behavior.


메타데이터
post_id
c141735fcebd
slug
reverse-android-apk-c141735fcebd
url
https://medium.com/@nazar4314/reverse-android-apk-c141735fcebd
canonical_url
https://medium.com/@nazar4314/reverse-android-apk-c141735fcebd
author_url
https://medium.com/@nazar4314
status
ok
fetched_at
2026-07-26 09:46:03