Apktool
Tool for reverse engineering third-party Android apps by decoding resources back to nearly original form.
External Tool
This open-source tool is maintained externally. View the source on GitHub to learn more or run it yourself.
Browse security tools →What's next with Apktool?
Choose how you want to get started.
Use it free
Open the official tool or demo — no account needed.
Self-host it
Run the open-source version on your own infrastructure.
What is Apktool?
Apktool is an open-source tool designed for reverse engineering Android application package files (APKs). Its primary purpose is to decode and rebuild closed-source Android apps, enabling developers and security researchers to inspect, modify, and analyze app components. By decompiling APKs into nearly original resource formats, it bridges the gap between binary code and human-readable structures. This tool is widely used by app developers for debugging, by security professionals for vulnerability analysis, and by reverse engineers to study third-party applications. It addresses the challenge of working with proprietary Android apps by providing a structured way to examine and alter their resources, manifest files, and smali bytecode, which is essential for tasks like permission modification or UI customization.
How it works
Apktool is a command-line utility that disassembles Android APK files into their original resource formats, such as XML layouts and drawable assets, while preserving the app's structure. It also allows users to rebuild modified APKs, making it a critical tool for developers and security analysts. The tool solves the problem of working with closed-source Android apps by enabling users to inspect and alter app components without requiring access to the source code. It simplifies tasks like debugging smali code, analyzing manifest files, and modifying app permissions. Apktool decodes APK resources into a project-like directory structure, allowing users to edit XML files, images, and other assets. It supports rebuilding APKs after modifications, with features like automatic resource recompilation. The tool also provides a '-m' flag for analyzing APKs without rebuilding, extracting manifest and resource details for inspection.
How to use it
- 1Install Java 8 or later, as Apktool requires it to run. 2. Download the Apktool JAR file and the Windows wrapper script (apktool.bat) for Windows users. 3. Place the files in a directory and add it to your system's PATH environment variable. 4. Use commands like 'apktool decode' to disassemble an APK or 'apktool build' to reassemble modified files. Practical tips include adjusting case sensitivity on Windows and using the '-p' flag to specify a custom resource directory.
What it can do
- Android reverse engineering
Use cases
Assumptions and limitations
Assumptions
- source: https://github.com/iBotPeaches/Apktool
- license: Apache-2.0 — free to use
- privacy: Self-hosted — you control your data
Limitations
- For authorized use only — use on systems you own or have explicit permission to test.
- Requires Java 8 or later, limiting compatibility with newer Java versions
- Windows users must handle case sensitivity issues due to the operating system's case-insensitive file system
- Complex for beginners due to the need to understand smali code and resource structures
- Primarily focused on Android APKs, with no support for other mobile platforms
Understanding the result
Tool for reverse engineering third-party Android apps by decoding resources back to nearly original form.
Tool details
- Clearly flagged when a network request is needed.
- No account, no sign-up, and no tracking of your content.
- Powered by (Apache-2.0).
- Built with
- (iBotPeaches/Apktool)
- License
- Apache-2.0
- Runs locally
- No — requires a network request
- Verification
- Not yet verified
- Input
- Query
- Output
- Text
Built with iBotPeaches/Apktool. OpenToolVault provides the discovery and browser interface while crediting the original project maintainers.
- Built with
- License
- Apache-2.0
Open-source project
OpenToolVault is an independent directory. We are not affiliated with or endorsed by this project.
References
- / — GitHub Repository
Upstream project · GitHub
- Apache-2.0 License
Upstream project
Frequently asked
What is Apktool and what does it do?
Apktool is an open-source tool for reverse engineering Android APK files. It decodes APK resources into their original formats, such as XML layouts and drawable assets, and allows users to rebuild modified APKs. It is used for debugging, analyzing, and modifying closed-source Android applications, enabling tasks like permission changes and UI customization.
How does Apktool work technically?
Apktool works by decompiling APK files into a structured directory containing decoded resources, manifest files, and smali bytecode. It uses the Android SDK's tools to extract and repackage resources, while the smali assembler/disassembler handles bytecode conversion. The '-m' flag enables resource analysis without rebuilding, allowing users to inspect manifests and resource trees for forensic or debugging purposes.
How do I modify an APK using Apktool?
To modify an APK, first use 'apktool decode <APK_FILE>' to extract resources. Edit files like the manifest.xml or drawable assets in the extracted directory. Then, rebuild the APK with 'apktool build <DIRECTORY>', ensuring all modified resources are included. Use the '-p' flag to specify a custom resource directory if needed, and verify the output with 'apktool pack' to create a new APK file.
How does Apktool compare to alternatives like Jadx or Frida?
Apktool focuses on resource decoding and APK rebuilding, making it ideal for modifying app assets and manifests. Jadx is a decompiler that converts APKs into Java code for easier analysis, while Frida is a dynamic instrumentation tool for runtime debugging. Unlike these tools, Apktool does not provide source code analysis or runtime hooking capabilities, but it excels in structural reverse engineering and recompilation.
How do I troubleshoot common Apktool errors?
Common errors include Java version mismatches (ensure Java 8 is installed), missing dependencies (verify the Android SDK is available), and case sensitivity issues on Windows. For 'file not found' errors, check the APK path and ensure the directory structure matches expected formats. Use 'apktool --version' to confirm compatibility, and consult the project's documentation or GitHub issues for specific error codes.