APK Injector
Pluginable tool to automate injection of libraries in apks, with support for unpack, repack, and bundles.
Features
- Insert libraries and load them when an activity starts.
- Frida support with support to load frida scripts either from disc or codeshare.
- Bundle support. Apks exported from SAI or XApks downloaded from apkpure.
- Plugins support. Check plugins/plugins.json and plugin_example.py
Installation
pip3 install apkinjector
Usage
apkinjector [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
apk Apk utils
frida Inject a frida gadget in a target apk.
inject Inject a shared library (*.so) in a target apk.
plugins Manage plugins
Frida
Usage: python -m apkinjector frida [OPTIONS] APK
Inject a frida gadget in a target apk.
Options:
--gadget TEXT Path to custom gadget.
--script TEXT Inject a javascript to be loaded when the gadget starts.
--codeshare TEXT Same as --script but uses Frida Codeshare as the source
javascript.
--arch TEXT Architecture to inject for. If empty --adb or --gadget
must be specified.
--adb Use adb (if installed) to detect device architecture.
--activity TEXT Name of the activity to inject into. If unspecified, the
main activity will be injected.
--output Custom path where the patched apk should be saved.
--force Force delete destination directory.
--help Show this message and exit.
Inject
Usage: python -m apkinjector inject [OPTIONS] APK
Inject a shared library (*.so) in a target apk.
Options:
--library TEXT Shared library (*.so) to inject. [required]
--include TEXT Extra files to include in the lib folder. Can be used
multiple times to include more files.
--arch TEXT Architecture to inject for. If empty --adb or --library
must be specified.
--adb Use adb (if installed) to detect device architecture.
--activity TEXT Name of the activity to inject into. If unspecified, the
main activity will be injected.
--output Custom path where the patched apk should be saved.
--force Force delete destination directory.
--help Show this message and exit.
Apk utils
Usage: python -m apkinjector apk [OPTIONS] APK
Apk utils
Options:
--activities Gets all activities
--permissions Gets all permissions
--libraries Gets all libraries
--recievers Gets all receivers
--help Show this message and exit.
Plugins
Usage: python -m apkinjector plugins [OPTIONS]
Manage plugins
Options:
--list List all installed and available plugins.
--install TEXT Installs a plugin by name.
--remove TEXT Removes an installed plugin.
--help Show this message and exit.
Using as a module
from apkinjector import LOG
LOG.info("This has been printed using apkinjector logging")
# Also comes with runners for apktool, uber-apk-signer, etc/
from apkinjector.apktool import ApkTool
from apkinjector.uber_apk_signer import UberApkSigner
# Automatically download and setup apktool.
ApkTool.install()
# Decompile apk
ApkTool.decode(...)
# Automatically download and setup uber-apk-signer
UberApkSigner.install()
# Sign apk
UberApkSigner.sign(...)
# Check if a dependency is in path
from apkinjector import DEPENDENCIES_MANAGER
# Add a new dependency
java = DEPENDENCIES_MANAGER.add_dependency('java', required=True) # Return Depedency(name, path, required)
# Check if a dependency is path
# Returns the path to the binary if found, if not returns None
# See apkpatcher/apkpatcher to see how dependencies are automatically handled
in_path = DEPENDENCIES_MANAGER.java
Usage as a plugin
# Can use the same methods as a it would been included in a separate module.
from apkinjector import LOG
# Adding a new command to the `apkinjector` application:
from apkinjector.plugins import main
# Define a new command. It uses click under the hood. See more at https://click.palletsprojects.com/en/8.1.x/
# Check plugins/plugin_example.py for a full example.
@main.command(help='Prints hello world to the console.')
def hello_world():
LOG.info('Hello World') # prints info
LOG.warning("Hello World") # prints warning
LOG.error('Hello World') # prints error and calls sys.exit(1)
# This will be usable with `apkinjector hello_world`
#
# apkinjector hello-world --help
# Usage: python -m apkinjector hello-world [OPTIONS]
# Prints hello world to the console.
# Options:
# --help Show this message and exit.
Metadata
Release files for apkinjector 1.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| apkinjector-1.1.6.tar.gz | 31.2 kB | Without provenance | Details for apkinjector-1.1.6.tar.gz |
Release files / apkinjector-1.1.6.tar.gz
| Download URL | apkinjector-1.1.6.tar.gz |
|---|---|
| Size | 31.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0067892bac939200eae69faccbb2fe09d96e30737c90f2d404bb079de7892584
|
|
BLAKE2b-256 checksum How to use checksums |
ce8bc67367d7b6ce890ae08ded5361b505eaf83eb5a23249edd06bec266a97f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.6
|
Security for apkinjector 1.1.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.