APKLab

The ultimate Android RE experience right inside your VS Code.

APKLab seamlessly integrates the best open-source tools: Quark-Engine, Apktool, Jadx, uber-apk-signer, apk-mitm and more to the excellent VS Code so you can focus on app analysis and get it done without leaving the IDE.

Features

  • Decode all the resources from an APK
  • Disassemble the APK to Dalvik bytecode aka Smali
  • Decompile the APK to Java source
  • Malware Analysis using Quark-Engine
  • Initialize project directory as Git repo
  • Analyze & Hack effectively with feature-rich VS Code
  • Apply MITM patch for HTTPS inspection
  • Build an APK from Smali and resources
  • Rebuild an APK in Debug mode for dynamic analysis
  • Sign the APK seamlessly during the build
  • Install the APK directly from VS Code
  • Support for Apktool-style projects (apktool.yml)
  • Support for most Apktool CLI arguments
  • Android resource frameworks management (Coming soon!)
  • Support for user-provided keystore for APK signing
  • Download and configure missing dependencies
  • Excellent Smali language support with Smalise
  • Supports Linux, Windows, and Mac

Getting Started

Open APK or Apktool project

  • Open the Command Palette (Ctrl+Shift+P) ➜ APKLab: Open an APK

decode

  • Or Just open an existing Apktool project folder

Apply MITM patch

  • Right-Click on or inside apktool.yml file ➜ APKLab: Prepare for HTTPS inspection

mitm

ReBuild and Sign APK

  • Right-Click on or inside apktool.yml file ➜ APKLab: Rebuild the APK
    rebuild

Install APK to device

  • Right-Click on .apk file (in dist directory) ➜ APKLab: Install the APK

install

Clean ApkTool frameworks dir

  • Open the Command Palette (Ctrl+Shift+P) ➜ APKLab: Empty ApkTool Framework Dir

Requirements

  • JDK 8+

    Run java -version in your Shell, if not found, download from here.

  • adb

    Run adb devices in your Shell, if not found, check this guide.

  • quark-engine >=21.01.6 (for malware analysis)

    Run quark in your Shell, if not found, check official docs.

Extension Settings

Dependency Paths

  • apklab.apktoolPath: Full Path of apktool.jar. If you want to use a different version of it, change it like:

    "apklab.apktoolPath": "/home/oozer/downloads/apktool_2.4.1.jar"

  • apklab.apkSignerPath: Full Path of uber-apk-signer.jar. If you want to use a different version of it, change it like:

    "apklab.apkSignerPath": "/home/oozer/downloads/uber-apk-signer-1.1.0.jar"

  • apklab.jadxDirPath: Full Path of jadx-x.y.z dir. If you want to use a different version of it, change it like:

    "apklab.jadxDirPath": "/home/oozer/downloads/jadx-1.1.0"

Keystore configuration

  • apklab.keystorePath: Put the absolute path of your Java keystore(.jks or .keystore) file here.

    "apklab.keystorePath": "/home/oozer/downloads/debug.keystore"

  • apklab.keystorePassword: Put the password of your keystore here.

  • apklab.keyAlias: Put the alias of the used key in the keystore here.

  • apklab.keyPassword: Put the password of the used key in the keystore here.

Additional configuration

  • apklab.initProjectDirAsGit: Initialize project output directory as Git repository.

GitHub

https://github.com/APKLab/APKLab