Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/APKLab/APKLab

Android Reverse-Engineering Workbench for VS Code
https://github.com/APKLab/APKLab

android apk-decompiler apk-editor apk-studio apksigner apktool app-analyzer bytecode dalvik https-inspection jadx malware-analysis malware-detection mitm reverse-engineering smali smalidea uber-apk-signer

Last synced: about 1 month ago
JSON representation

Android Reverse-Engineering Workbench for VS Code

Awesome Lists containing this project

README

        



APKLab



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.



Version


Download


Installs


CI




XDA Developers


Telegram


Matrix

## Features

- Decode all the resources from an APK
- Disassemble the APK to Dalvik bytecode aka Smali
- Decompile the APK to Java source
- Interactive Malware Analysis Report
- Initialize Project dir as Git repo
- Excellent Smali language support with [**Smalise**](https://github.com/LoyieKing/Smalise)
- 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
- Supports Linux, Windows, and Mac

## Requirements

- **JDK 8+**

> Run **`java -version`** in your Shell, if not found, download from [here](https://adoptopenjdk.net/).

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

> Run **`quark`** in your Shell, if not found, check [official docs](https://github.com/quark-engine/quark-engine).

- **adb**
> Run **`adb devices`** in your Shell, if not found, check [this guide](https://www.xda-developers.com/install-adb-windows-macos-linux/).

## Getting Started

#### Open APK or Apktool project

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

![decode.gif](https://github.com/APKLab/APKLab/raw/master/assets/decode.gif)

- 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.gif](https://github.com/APKLab/APKLab/raw/master/assets/mitm.gif)

#### ReBuild and Sign APK

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

![rebuild.gif](https://github.com/APKLab/APKLab/raw/master/assets/rebuild.gif)

#### Install APK to device

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

![install.gif](https://github.com/APKLab/APKLab/raw/master/assets/install.gif)

#### Clean ApkTool frameworks dir

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

## 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.
- **`apklab.updateTools`**: Whether APKLab should check for tools (for apklab, jadx...) update and show a notification.

## Known Issues

Please check our [Bug tracker](https://github.com/APKLab/APKLab/issues) for known issues.

## Contribution Guide

For bug reports, feature requests or simply discussing an idea, please open an issue [here](https://github.com/APKLab/APKLab/issues). PRs are always welcome.

## [Changelog](https://github.com/APKLab/APKLab/blob/master/CHANGELOG.md)

## Credits

- [Feimaomii](https://github.com/Feimaomii) for the awesome logo
- [Aman Sharma](https://github.com/amsharma44) for active contribution
- [Niklas Higi](https://github.com/shroudedcode) for apk-mitm
- [Shaun Dang](https://github.com/pulorsok), [JunWei Song](https://github.com/krnick) & [KunYu Chen](https://github.com/18z) for Quark-Engine
- [iBotPeaches](https://github.com/iBotPeaches), [brutall](https://github.com/brutall) and [JesusFreke](https://github.com/JesusFreke) for Apktool & Smali
- [patrickfav](https://github.com/patrickfav) for uber-apk-signer
- [skylot](https://github.com/skylot) for Jadx
- [Loyie King](https://github.com/LoyieKing) for Smalise