Updated Oct 19, 2026

Utilities

Inspect DEX instructions as smali files

baksmali-disassemble is an offline adapter for a selected google/smali operation.

Agent

overview

What baksmali-disassemble does

Supply a raw DEX file to obtain a native smali class tree. The adapter selects API level 28 and one native worker; it does not execute the code.

A FOLDER containing native .smali files. The adapter requires a nonempty native tree with smali entries and refuses native symlinks. This is bytecode disassembly, not reconstructed Java source.

Native execution has a 120-second timeout and JVM -Xmx256m. The adapter checks a 4 MiB artifact limit after execution; this is not peak process-memory or temporary-disk containment. The supplied file is limited to 20 MiB; symlink input is refused. The output tree is limited to 2000 files and 4 MiB after execution. An existing output directory must be empty.

Pinned native source 3.0.7 at 878d37fe960945e1b2eec430f1649d43910a4fd0. Final-image native positive and negative fixtures passed. The private platform fixture-tool-verifier run passed. The exact image and source/notices bundle are publicly downloadable; the exact public Library identity was verified. This is a source-built fatJAR; native version output has an upstream -dev suffix and the image uses tag 3.0.7-source1. It is not claimed to be an official release binary.

source github.com/google/smali/tree/878d37fe960945e1b2eec430f1649d43910a4fd0

use cases

Where baksmali-disassemble fits

Inspect DEX instructions as smali files

Supply a raw DEX file to obtain a native smali class tree. The adapter selects API level 28 and one native worker; it does not execute the code.

Retain the native artifact

A FOLDER containing native .smali files. The adapter requires a nonempty native tree with smali entries and refuses native symlinks. This is bytecode disassembly, not reconstructed Java source.

reference

baksmali-disassemble inputs and flags

1 inputs
NameTypeFlagDescription
dexFILE--dexRaw DEX bytecode file.

Showing key inputs. baksmali-disassemble exposes 1 inputs in total.

example

Run baksmali-disassemble

baksmali-disassemble · command
python3 /app/run.py --dex ./classes.dex ./smali-output
sample output
.class public Lorg/trickest/fixture/Fixture;
.super Ljava/lang/Object;


# direct methods
.method public static answer()I
    .registers 1

    const/16 v0, 0x2a

    return v0
.end method

.method public static endpoint()Ljava/lang/String;
    .registers 1

    const-string v0, "https://fixture.invalid/api/v1"

    return-object v0
.end method

guidance

Choosing baksmali-disassemble

Choose baksmali for bytecode-level instructions. JADX reconstructs Java, Apktool handles package resources and smali, and smali assembly produces DEX from source files. This node accepts a raw DEX, not every upstream input format.

faq

baksmali-disassemble questions

dex: Raw DEX bytecode file.

A FOLDER containing native .smali files. The adapter requires a nonempty native tree with smali entries and refuses native symlinks. This is bytecode disassembly, not reconstructed Java source.

Native execution has a 120-second timeout and JVM -Xmx256m. The adapter checks a 4 MiB artifact limit after execution; this is not peak process-memory or temporary-disk containment. The supplied file is limited to 20 MiB; symlink input is refused. The output tree is limited to 2000 files and 4 MiB after execution. An existing output directory must be empty. Raw DEX size, SHA1 signature and Adler32 checksum are checked by adapter preflight; this is not full DEX semantic validation.

Choose baksmali for bytecode-level instructions. JADX reconstructs Java, Apktool handles package resources and smali, and smali assembly produces DEX from source files. This node accepts a raw DEX, not every upstream input format.

Yes. This Library tool uses the tested image and supplied-file contract. Native fixtures and the private platform fixture-tool-verifier run passed; the exact image, adapter source and notices are publicly downloadable through the repository directions below.

The public repository overview provides immutable image and ORAS source/notices download commands, the exact bundle SHA256 and pinned native source directions. The bundle retains the adapter, build recipes, owned fixtures, portable native/verifier harnesses, installed and embedded notices, dependency source/POMs and matching Debian OpenJDK source payloads. First-party adapter licensing is separate from native/component licenses. Use its IMAGE override with the immutable public image to reproduce the native fixture without a GHCR account. Source provenance qualifications are retained; this is not a reproducible-build or exhaustive-SBOM claim. Image, source and license notice downloads.

Run baksmali-disassemble yourself

Complete native Fixture.smali file from disassembling a self-owned DEX fixture. The node returns a folder; this is one file within that tree. Truncated DEX fails adapter header/checksum preflight; a checksum-consistent bad-map fixture reaches native code and fails separately.

Facts on this page come from the live Trickest tool library.