Note: Please do not clone this repository separately. Use the following command to clone the entire Akiba project:
git clone https://github.com/IoTS-P/Akiba.git
cd Akiba
git submodule update --init --recursiveThe Akiba Runtime Framework is the runtime entry point for the Akiba tool.
- Download Ghidra 11.3.2 from here: Link
- Extract Ghidra.zip
- (Optional but may be required by some modules) Extract some Ghidra official extensions (zip files) to
/Ghidra/Features, so that Ghidra can package these extensions intoghidra.jarwhen building the JAR (by default, theMachineLearningextension is packaged) - Go to the
/supportdirectory and run thebuildGhidraJarscript file (runbuildGhidraJar.baton Windows) - If everything goes well, you can find the
ghidra.jarfile in/support. This is one of the dependencies Akiba needs. Copy it to/path/to/Akiba/lib
Build the Akiba Database Daemon, Akiba Framework, and Akiba Modules with a single command:
# Run from the Akiba root directory
./gradlew assemble # On Windows, use gradlew.batcd build/distributions
unzip Akiba-<version>.zip
cd Akiba-<version>
# Copy the modules you need to use into the modules directory and write configuration files (Important!)
./bin/Akiba # In Windows, use .\bin\Akiba.bat-c/--main-config <path>: Set the main configuration file path. Format is<file path>@<JSON path>, e.g.,configs/config.json@/main. Default value isconfigs/config.yaml@main--venv <dir>: Set the global Python virtual environment root directory, default isakiba-venv-h/--help: Show help message and exit-V/--version: Output version number and exit
Akiba supports three runtime modes, which are mutually exclusive. Only one mode can be selected per run:
When no mode option is specified, Akiba will analyze the binary files in the database according to the task configuration in the main configuration file.
-i/--import <config path>: Import task mode. When this option is specified, Akiba will only perform file import tasks without any analysis work. An import configuration file path must be provided.
-r/--restore <'latest'/timestamp>: Restore mode. When a task is interrupted due to bugs or other reasons, this mode can be used to continue the unfinished task.- The parameter can be
latest(continue the latest task) or a timestamp (e.g.,20250201140000) - Note: After specifying
-r, the-coption will be ignored. Akiba will use the original configuration of the interrupted task (this configuration is copied to thelogdirectory when the task first runs) - Warning: Unless you know exactly what you're doing, do not modify the configuration files in the
logdirectory
- The parameter can be
Restore mode also supports the following additional options (used with -r, mutually exclusive):
-f/--fail-only: Only reprocess programs marked as failed-e/--error-only: Only reprocess programs marked with errors
Akiba also provides the following subcommands for managing database instances:
./bin/Akiba instance-create -n <name> -u <user> [other options]Required Parameters:
-n/--name <name>: Instance name-u/--user <username>: Akiba database username
Optional Parameters:
-P/--password: Akiba user password. If not specified, will be prompted interactively-H/--host <host>: Database daemon host address, default is127.0.0.1-p/--port <port>: Database daemon port, default is31777-h/--help: Show help message and exit
Examples:
# Create an instance named test_instance with user admin, using default host and port
./bin/Akiba instance-create -n test_instance -u admin
# Specify host and port
./bin/Akiba instance-create -n my_instance -u admin -H 192.168.1.100 -p 31777./bin/Akiba instance-backup -i <instance> -t <type> -u <user> [other options]Required Parameters:
-i/--instance <instance>: Name of the instance to backup-t/--type <type>: Backup type, must befull(full backup) orincr(incremental backup)-u/--user <username>: Akiba database username
Optional Parameters:
-a/--alias <alias>: Alias of the backup (for referencing in configuration files)-d/--description <description>: Description of the backup-P/--password: Akiba user password. If not specified, will be prompted interactively-H/--host <host>: Database daemon host address, default is127.0.0.1-p/--port <port>: Database daemon port, default is31777-h/--help: Show help message and exit
Examples:
# Perform a full backup on test_instance with alias backup_2025
./bin/Akiba instance-backup -i test_instance -t full -u admin -a backup_2025
# Perform an incremental backup on my_instance with description
./bin/Akiba instance-backup -i my_instance -t incr -u admin-d "Daily incremental backup"./bin/Akiba instance-restore -n <name> -l <label> -u <user> [other options]Required Parameters:
-n/--name <name>: Name of the restoration target instance to create-l/--label <label>: Label or alias of the backup (from instance-backup's-aparameter)-u/--user <username>: Akiba database username
Optional Parameters:
-P/--password: Akiba user password. If not specified, will be prompted interactively-H/--host <host>: Database daemon host address, default is127.0.0.1-p/--port <port>: Database daemon port, default is31777-h/--help: Show help message and exit
Examples:
# Restore from backup_2025 to a new instance restored_instance
./bin/Akiba instance-restore -n restored_instance -l backup_2025 -u admin
# Restore from a specific host
./bin/Akiba instance-restore -n new_instance -l daily_backup -u admin -H 192.168.1.100./bin/Akiba instance-start -i <instance> -u <user> [other options]Required Parameters:
-i/--instance <instance>: Name of the instance to start-u/--user <username>: Akiba database username
Optional Parameters:
-P/--password: Akiba user password. If not specified, will be prompted interactively-H/--host <host>: Database daemon host address, default is127.0.0.1-p/--port <port>: Database daemon port, default is31777-h/--help: Show help message and exit
Examples:
# Start an instance named test_instance with user admin
./bin/Akiba instance-start -i test_instance -u admin
# Start an instance with specified host and port
./bin/Akiba instance-start -i my_instance -u admin -H 192.168.1.100 -p 31777./bin/Akiba instance-shutdown -i <instance> -u <user> [other options]Required Parameters:
-i/--instance <instance>: Name of the instance to shut down-u/--user <username>: Akiba database username
Optional Parameters:
-P/--password: Akiba user password. If not specified, will be prompted interactively-H/--host <host>: Database daemon host address, default is127.0.0.1-p/--port <port>: Database daemon port, default is31777-h/--help: Show help message and exit
Examples:
# Shut down an instance named test_instance
./bin/Akiba instance-shutdown -i test_instance -u admin
# Shut down an instance on a specific host
./bin/Akiba instance-shutdown -i my_instance -u admin -H 192.168.1.100./bin/Akiba instance-delete -i <instance> -u <user> [other options]Required Parameters:
-i/--instance <instance>: Name of the instance to delete-u/--user <username>: Akiba database username
Optional Parameters:
-P/--password: Akiba user password. If not specified, will be prompted interactively-H/--host <host>: Database daemon host address, default is127.0.0.1-p/--port <port>: Database daemon port, default is31777-h/--help: Show help message and exit
Examples:
# Delete an instance named test_instance
./bin/Akiba instance-delete -i test_instance -u admin
# Delete an instance on a specific host and port
./bin/Akiba instance-delete -i my_instance -u admin -H 192.168.1.100 -p 31777Other configuration files need to be saved in src/main/resources/configs. For details, see Usage_guide_en.md