APKnife – The Double-Edged Blade of APK Analysis 🔪
Fear the Blade, Trust the Power!
APKnife is an advanced tool for APK analysis, modification, and security auditing. Whether you're a security researcher, penetration tester, or Android developer, APKnife provides powerful features for reverse engineering, decompiling, modifying, and analyzing APK files.
🚀 Features & Capabilities
✅ Extract & decompile APKs into readable formats ✅ Modify & repackage APKs effortlessly ✅ Analyze APKs for security vulnerabilities ✅ Edit AndroidManifest.xml & Smali code ✅ Extract Java source code from an APK ✅ Detect Remote Access Trojans (RATs) & malware ✅ Decode binary XML files & scan for API calls ✅ Change APK metadata (icon, name, package name) ✅ Identify security risks like excessive permissions ✅ Sign APKs for smooth installation
🔧 Installation
📌 Prerequisites
Ensure you have the following installed on your system:
Python 3.12
Java (JDK 8 or later)
apktool
zipalign
keytool
🛠 Setting Up a Python Virtual Environment
Before installing apknife, it's recommended to set up a Python virtual environment to avoid package conflicts.
1️⃣ Create a Python Virtual Environment:
python3 -m venv venv source venv/bin/activate # On Linux/macOS
venv\Scripts\activate # On Windows
2️⃣ Install Required Packages
Once the virtual environment is activated, install APKnife:
pip install apknife
📥 Installing Rust (Required for APKnife)
apknife requires Rust for building. Follow the installation steps based on your OS:
🐧 On Linux:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Then follow the on-screen instructions.
🍏 On macOS (Using Homebrew):
brew install rust
🖥️ On Windows:
-
Visit rustup.rs and install Rust.
-
Verify installation:
rustc --version
❌ Issue Installing Rust on Termux
Ensure Termux is up to date:
pkg update && pkg upgrade
Install required build tools:
pkg install clang make python rust
❌ Issues Installing APKnife
Rust not installed properly? Ensure it's correctly installed via rustup or your package manager.
Python conflicts? If there are issues with virtual environments, reset it:
rm -rf venv
python3 -m venv venv
source venv/bin/activate
✅ Verifying Installed Versions
python --version rustc --version
🌍 Setting Up Rust Environment Variables
🐧 On Linux/macOS
nano ~/.bashrc # For bash
nano ~/.zshrc # For zsh
Add this line at the end:
export PATH="$HOME/.cargo/bin:$PATH"
Apply changes:
source ~/.bashrc # For bash
source ~/.zshrc # For zsh
🖥️ On Windows
-
Open "Environment Variables" from the Start menu.
-
Edit Path under System Variables and add:
C:\Users\<YourUsername>\.cargo\bin
- Click OK and restart your terminal.
Verify the setup:
cargo --version
rustc --version
📥 Cloning the Repository & Installing Dependencies
git clone https://github.com/elrashedy1992/APKnife.git
cd APKnife
pip install -r requirements.txt
📜 Usage
To enter interactive mode, run:
python3 apknife.py interactive
This will launch a command-line interface for executing APKnife commands.
🛠️ Available Commands
🟢 Extract APK Contents
python3 apknife.py extract -i target.apk -o extracted/
🟢 Modify & Rebuild APK
python3 apknife.py build -i
extracted/ -o modified.apk
🟢 Sign APK
python3 apknife.py sign -i modified.apk
🟢 Analyze APK for Vulnerabilities
python3 apknife.py scan_vulnerabilities -i target.apk
🟢 Detect Remote Access Trojans (RATs)
python3 apknife.py catch_rat -i malicious.apk
🟢 Extract Java Source Code
python3 apknife.py extract-java -i target.apk -o src_folder
🟢 Change APK Name
python3 apknife.py modify-apk --name -i app.apk
🟢 Change APK Icon
python3 apknife.py modify-apk --icon new_icon.png -i app.apk
🟢 Modify Package Name
python3 apknife.py modify-apk --package com.example.example -i app.apk
python3 apknife.py modify-apk --name new_name --package new.package.name --icon anysize.any -o modified_apk.apk
🟢 Scan APK Permissions
python3 apknife.py scan_permissions -i target.apk
👇help menu👇
python3 apknife.py -h usage: apknife.py [-h] [-i INPUT] [-o OUTPUT] [-c] [--name NAME] [--icon ICON] [--package PACKAGE] {extract,build,sign,analyze,edit-manifest,smali,decode-xml,find-oncreate,find-api,scan-vulnerabilities,scan-permissions,catch_rat,extract-java,interactive,extract-sensitive,modify-apk}
APKnife: Advanced APK analysis & modification tool
positional arguments: {extract,build,sign,analyze,edit-manifest,smali,decode-xml,find-oncreate,find-api,scan-vulnerabilities,scan-permissions,catch_rat,extract-java,interactive,extract-sensitive,modify-apk} Command to execute
options: -h, --help show this help message and exit -i, --input INPUT Input APK file -o, --output OUTPUT Output file/directory -c, --compress Compress extracted Java files into a ZIP archive --name NAME New app name --icon ICON New app icon (resized automatically) --package PACKAGE New package name
This tool is designed for educational and security research purposes only. Unauthorized use of APKnife on third-party applications without permission is illegal. The developers are not responsible for any misuse.
📜 License
APKnife is released under the MIT License – You are free to modify and distribute it for legal use.
💡 Contributions & Support
🚀 Contributions are welcome! Fork the repo, submit pull requests, and report issues. Let's make APKnife even better!