BootMod is an open-source tool for viewing, editing, and repacking Android boot logo and splash screen images. It ships with both a modern Qt6 GUI and a command-line interface, and supports all three common Android bootlogo formats:
| Format | Chipset | File |
|---|---|---|
| MTK logo.bin | MediaTek | logo.bin |
| Snapdragon splash.img | Qualcomm (OPPO/OnePlus/Realme) | splash.img |
| Samsung up_param | Samsung (Exynos/Snapdragon) | up_param.bin / up_param.img |
- Dark-themed modern UI
- Open logo files directly or via drag & drop
- Thumbnail grid — view all boot logos at a glance
- Project workflow — unpack a file to an editable folder, edit individual images, export back to the original format
- Per-image Export and Edit/Replace buttons
- Live thumbnail refresh after every edit
- Built-in bitmap editor integration
- Open existing projects without needing the original binary
unpack— extract all logos from any supported filerepack— rebuild a binary from modified imagesinfo— display file metadata without extractionextract/replace— single-image operations (Snapdragon)- Auto-detects file format from binary magic bytes
- Detects MTK magic
0x88168858at offset 0 - Stores images as zlib-compressed raw pixel data (BGRA8888 / RGB565)
- Round-trip lossless: unpack → edit PNGs → repack
- Detects
SPLASH LOGO!magic at offset0x4000 - Images stored as gzip-compressed BMP data
- Supports OPPO, OnePlus, Realme, and other Snapdragon devices
extract/replacecommands for single-image operations- GUI project mode: view-only if original splash.img is unavailable
- Detects POSIX
ustartar magic at offset 257 - Images are standard JPEG files packed in a tar archive
- Full read/write support: unpack, replace individual JPEGs, repack
- CMake 3.16+
- C++17-capable compiler (GCC/Clang on Linux, MSVC on Windows)
- Qt 6.x (
Core,Gui,Quick,Qml,Widgets) - zlib
- libpng
Install dependencies on Debian/Ubuntu:
sudo apt install build-essential cmake qt6-base-dev qt6-declarative-dev \
libqt6quick6 libz-dev libpng-dev./build.sh./build.sh --cli-only
# Binary: bin/bootmod./build.sh --gui-only
# Binary: gui/build/bootmod-gui./build.sh --releasemake -j$(nproc)
# Binary: bin/bootmodmkdir -p gui/build && cd gui/build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
# Binary: gui/build/bootmod-gui- Visual Studio 2022 (with C++ Desktop workload)
- vcpkg — install
zlibandlibpngforx64-windows:vcpkg install zlib:x64-windows libpng:x64-windows
- Qt 6.x for Windows — set the
Qt6_DIRenvironment variable to your Qt install, e.g.:set Qt6_DIR=C:\Qt\6.x.x\msvc2022_64\lib\cmake\Qt6
Run from a Developer Command Prompt for VS 2022:
build-windows.batOutput binaries are staged in dist-win\:
dist-win\bootmod.exe— CLIdist-win\bootmod-gui.exe— GUI (with all Qt runtime DLLs deployed viawindeployqt)
The script will also copy the required vcpkg runtime DLLs (zlib1.dll, libpng16.dll) from C:\vcpkg\installed\x64-windows\bin\. If vcpkg is installed elsewhere, edit the VCPKG_TOOLCHAIN and VCPKG_TRIPLET variables at the top of build-windows.bat.
bootmod <command> [options]
Commands:
unpack <file> <output_dir> Extract all logos/images
repack <output> <file1> ... Repack images into binary
info <file> Display file information
extract <splash.img> <index> <out.png>
replace <splash.img> <index> <in.png> <out.img>
Supported input files:
logo.bin MediaTek boot logo archive
splash.img Qualcomm/OPPO splash image
up_param.bin Samsung up_param tar archive
MTK unpack options:
--mode <mode> Color mode: bgrale (default), bgrabe, rgb565le, rgb565be
--slots 0,1,2 Extract only specific slots
--raw Extract raw compressed .z files
Repack options:
--strip-alpha Remove alpha channel when repacking
# MediaTek
bootmod unpack logo.bin extracted/
bootmod repack new_logo.bin extracted/logo_*.png
# Qualcomm
bootmod unpack splash.img extracted/
bootmod extract splash.img 0 logo0.png
bootmod replace splash.img 0 new_logo.png output.img
# Samsung
bootmod unpack up_param.bin extracted/
bootmod repack up_param_new.tar extracted/*.jpg
# Get info on any file
bootmod info logo.bin
bootmod info splash.img
bootmod info up_param.bin- Launch
bootmod-gui - Click Open File or drag a
logo.bin/splash.img/up_param.binonto the window - All boot logos appear as thumbnails in the grid
- Click Unpack to Project to extract to an editable folder
- Click Edit on any thumbnail to open the built-in image editor, or Export to save as a file
- Click Edit/Replace to replace a logo with an image from disk
- Thumbnails update live after every save
- Click Export File to repack and save the modified binary
- Click Open Project and choose a previously unpacked project folder
- BootMod detects the format automatically (no original binary required for viewing)
bootmod/
├── bin/ CLI binary output (Linux)
├── build/ CLI build artifacts (Linux)
├── build-cli-win/ CLI build artifacts (Windows)
├── build-gui-win/ GUI build artifacts (Windows)
├── dist-win/ Windows distribution output
├── build-windows.bat Windows build script
├── build.sh Linux build script
├── docs/ Documentation
├── external/
│ └── lodepng/ PNG codec (header-only)
├── gui/
│ ├── bitmapeditor/ Embedded bitmap editor library
│ ├── build/ GUI build artifacts
│ ├── qml/ Qt Quick UI source
│ ├── res/ Icons and SVG assets
│ └── src/ GUI C++ sources
├── include/
│ ├── bootmod.h Format types and MTK image API
│ ├── splash.h Snapdragon SplashImage API
│ ├── upparam.h Samsung UpParam API
│ └── version.h Version definitions
└── src/
├── bootmod.cpp Format detection + MTK implementation
├── bootmod_png.cpp PNG conversion utilities
├── main.cpp CLI entry point
├── splash.cpp Snapdragon implementation
└── upparam.cpp Samsung implementation
The built-in image editor is based on QtBitmapEditor by Martin Krčma (@0xMartin).
Qt Bitmap Editor is a multi-platform raster image editor written in C++ and utilizing the Qt framework.
Licensed under the MIT License. Source included in gui/bitmapeditor/.
MIT — see LICENSE.