https://github.com/helgesverre/jadx-webgui
๐งช Experimental Web GUI for real-time APK decompilation using JADX, Docker, Flask, and SocketIO.
https://github.com/helgesverre/jadx-webgui
docker docker-compose flask-application jadx jadx-gui svelte webapp
Last synced: about 2 months ago
JSON representation
๐งช Experimental Web GUI for real-time APK decompilation using JADX, Docker, Flask, and SocketIO.
- Host: GitHub
- URL: https://github.com/helgesverre/jadx-webgui
- Owner: HelgeSverre
- Created: 2024-09-20T00:27:14.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-25T01:02:25.000Z (almost 2 years ago)
- Last Synced: 2026-01-29T21:35:13.908Z (5 months ago)
- Topics: docker, docker-compose, flask-application, jadx, jadx-gui, svelte, webapp
- Language: Svelte
- Homepage:
- Size: 683 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ๐ฉ๏ธ APK Decompiler - In the *Cloud* ๐ฑ
## โจ Overview
This project demonstrates real-time output streaming from a backend process to a frontend using SocketIO and Python.
It uses [JADX](https://github.com/skylot/jadx) to decompile an uploaded APK file, streaming the output to the frontend
in real-time. Additional features
include browsing decompiled files and scanning for URLs and Firebase keys.
The project serves as a testbed for ideas, exploring how to build upon this concept. It's not intended for production
use but as a learning tool for working with websockets, Docker, and Flask, and building tools for APK analysis.
Feel free to fork and play around with it.
## ๐ Features
- **Real-Time Output Streaming**: Uses SocketIO to stream live output from the backend process (JADX) to the frontend,
providing immediate feedback.
- **Wrapping a Complex Process**: Demonstrates how to handle and stream output from a non-trivial task like APK
decompilation.
- **Dockerized Environment**: Both backend and frontend are containerized using Docker, making it easy to build and run
the application.
- **Tech Stack**:
- **Backend**: Flask (Python) for the API, with SocketIO for real-time communication.
- **Frontend**: Svelte with TailwindCSS for building a responsive user interface.
## ๐ ๏ธ Setup and Installation
### Clone the Repository
Clone the repository to your local machine:
```shell
git clone git@github.com:HelgeSverre/jadx-webgui.git
cd jadx-webgui
```
### Quick Start with Docker Compose
To build and run the application using Docker Compose:
```shell
# Build and run the containers
docker compose up --build -d
# Stop and remove containers
docker compose down
```
Access the application at `http://localhost:8080`.
### Backend Setup
To build and run the backend separately:
```shell
# Navigate to the API directory
cd api
# Format the Python code
pipx run black app.py
# Build the Docker image
docker build -t decompiler-backend .
# Run the Docker container
docker run -p 8080:5000 \
-v $(pwd)/uploads:/tmp/uploads \
-v $(pwd)/decompiled:/tmp/decompiled \
decompiler-backend
# Or as a one-liner
docker build -t decompiler-backend . && docker run -p 8080:5000 -v $(pwd)/uploads:/tmp/uploads -v $(pwd)/decompiled:/tmp/decompiled decompiler-backend
```
### Frontend Setup
#### Using Docker ๐ณ
```shell
# Build the Docker image
docker build -t decompiler-frontend .
# Run the Docker container
docker run -p 3000:3000 decompiler-frontend
```
#### Without Docker ๐
```shell
# Navigate to the web directory
cd web
# Install dependencies
yarn install
# Format the code
yarn format
# Run the development server
yarn dev
```
## ๐งน Code Formatting
To maintain code consistency:
```shell
# Format backend Python code
pipx run black api/app.py
# Format frontend code
yarn --cwd web format
# One-liner for both
pipx run black api/app.py && yarn --cwd web format
```
## ๐ Notes
This project is primarily an experiment to see how to stream output from a backend process to the frontend in real-time
using sockets. It serves as a practical example of handling complex tasks within a Dockerized environment and streaming
their output, rather than focusing solely on the APK decompilation.
## โ ๏ธ Disclaimer
> This project is provided for educational and research purposes only. The authors and contributors are not responsible
> for any misuse or damage that may result from using this tool. Users should ensure they have the right to decompile
> and
> analyze any APK files they process with this tool.
>
> Remember that decompiling applications without permission may violate terms of service, copyright laws, or other legal
> agreements. Always respect intellectual property rights and use this tool responsibly and ethically.
>
> By using this software, you agree to these terms and acknowledge that you use it at your own risk.
You know the drill.