Für Windows · untersucht: PE (x86, x64, ARM, ARM64), DOS (MZ), ARM-Linux (ELF)
For Windows · examines: PE (x86, x64, ARM, ARM64), DOS (MZ), ARM Linux (ELF)

Dismonite – Disassembler und Debugger für fertige Programme

Dismonite – disassembler and debugger for finished programs

Öffnen. Verstehen. Beobachten. Zurückübersetzen.

Open. Understand. Watch. Turn back into source.

Dismonite liest ein Programm, verfolgt seinen Code, benennt Sprungziele, Importe und Texte und zeigt, was darin steht – und es führt das Programm im Debugger aus, ohne dass Quelltext nötig wäre. Der Export als .asm ergibt beim Übersetzen mit dem Assembler von Asmonite wieder dieselbe Datei, Byte für Byte. Ein kleines, portables Programm: entpacken, starten, fertig.

Dismonite reads a program, follows its code, names jump targets, imports and texts and shows what is in it – and it runs the program in the debugger, with no source needed. The export as .asm assembles with the Asmonite assembler into the same file again, byte for byte. A small, portable program: unpack, start, done.

Version 0.5.0 (Testversion) · Windows 10/11 · 2.0 MB · keine Installation · kostenlos · kein Tracking · Dismonite liegt im selben ZIP wie Asmonite

Version 0.5.0 (test version) · Windows 10/11 · 2.0 MB · no installation · free · no tracking · Dismonite is in the same ZIP as Asmonite

Dismonite: code at the entry point with labels
Nach der Analyse: der Code am Einsprungpunkt start, Sprungziele und Adressen als Labels. After the analysis: the code at the entry point start, jump targets and addresses as labels.

Was drin ist

What's inside

Von der fremden EXE bis zu einem Quelltext, der wieder übersetzt werden kann – und dazwischen ein Debugger.

From someone else's EXE to source that assembles again – with a debugger in between.

🔍

Analyse ab Einsprung

Analysis from the entry point

Verfolgt den Code ab Einsprungpunkt, Exporten und TLS-Callbacks (PE) bzw. CS:IP (MZ) und ab den Relokationszielen; was Code ist, wird als Code gezeigt, der Rest als Daten.

Follows the code from the entry point, exports and TLS callbacks (PE) or CS:IP (MZ) and from the relocation targets; what is code is shown as code, the rest as data.

🏷️

Labels statt Adressen

Labels instead of addresses

Sprungziele, Funktionen und Daten bekommen Namen, die man umbenennen kann. Strg+Klick springt zum Ziel, Alt+← zurück, Strg+R zeigt alle Verweise.

Jump targets, functions and data get names you can change. Ctrl+click jumps to the target, Alt+← goes back, Ctrl+R lists all references.

🧱

Dateistrukturen mit Feldnamen

File structures with field names

PE-Header, Sections, Importe, Exporte, Ressourcen, ELF-Program-Header und -Symbole werden Feld für Feld mit Größe und Namen als Kommentar gezeigt.

PE header, sections, imports, exports, resources, ELF program headers and symbols are shown field by field with size and name as a comment.

🗂️

Ressourcen und Meldungstexte

Resources and message texts

Zeichenketten-Tabellen (RT_STRING) werden Text für Text erkannt, mit Label str_<Nummer>. Eine Konstante vor einem Aufruf, der eine Meldung lädt, zeigt den Text als Hinweis.

String tables (RT_STRING) are recognized text by text, with the label str_<number>. A constant before a call that loads a message shows the text as a hint.

🔁

Export mit Rückweg

Export with a way back

Der Export als .asm trägt Labels, Kommentare und Markierungen und ergibt mit asmoc wieder dieselbe Datei – für x86, x64, ARM Thumb-2 und ARM64.

The export as .asm carries labels, comments and marks and assembles with asmoc into the same file again – for x86, x64, ARM Thumb-2 and ARM64.

✍️

Markieren und kommentieren

Mark and comment

Elemente als Code, Byte, Word, Dword, Qword, ASCII oder UTF-16 markieren, Kommentare und Kommentarzeilen setzen. Alles liegt in <programm>.dmon neben dem Programm.

Mark elements as code, byte, word, dword, qword, ASCII or UTF-16, add comments and comment lines. Everything is kept in <program>.dmon next to the program.

🐞

Debugger ohne Quelltext

Debugger without source

Haltepunkte, Step Over/Into, Run to Cursor, Pause. Register, Stack und Speicher sind immer sichtbar; geänderte Werte werden rot. Wo das Programm anhält, wird Code – die Analyse wächst mit.

Breakpoints, step over/into, run to cursor, pause. Registers, stack and memory are always visible; changed values turn red. Where the program stops becomes code – the analysis grows along.

➡️

Sprunghinweis

Jump note

Steht das Programm vor einem Sprung, den es gleich nimmt (bei einem bedingten nur, wenn die Bedingung erfüllt ist), sagt die Zeile, ob es nach oben oder nach unten geht, und wohin.

Where the program stands before a jump it is about to take (a conditional one only if the condition holds), the row says whether it goes up or down, and where to.

💡

Befehlsinfo auf F1

Instruction info on F1

Im Reiter Info erklärt ein Tastendruck den Befehl, die importierte Windows-Funktion mit ihren Parametern oder den DOS-Interrupt. Deutsch und Englisch; die Info folgt dem Cursor.

In the Info tab one key press explains the instruction, the imported Windows function with its parameters or the DOS interrupt. German and English; the info follows the cursor.

Was Dismonite öffnet und wie es debuggt

What Dismonite opens and how it debugs

ProgrammDisassemblerDebugger
ProgramDisassemblerDebugger
Windows x86 (PE)✓ mit Exportdirekt auf diesem Rechner
Windows x86 (PE)✓ with exportdirectly on this computer
Windows x64 (PE32+)✓ mit Exportauf diesem Rechner, über den Hilfsserver asmodbgx64 als Kindprozess
Windows x64 (PE32+)✓ with exporton this computer, through the helper server asmodbgx64 as a child process
Windows on ARM (ARM32/Thumb-2)✓ mit Exportauf einem Windows-on-ARM-Rechner (Server asmodbg, ssh oder direkt im Netz)
Windows on ARM (ARM32/Thumb-2)✓ with exporton a Windows on ARM computer (server asmodbg, ssh or directly on the network)
Windows ARM64 (PE32+)✓ mit Exportauf einem Windows-on-ARM64-Rechner (Server asmodbg64, ssh, direkt oder lokal)
Windows ARM64 (PE32+)✓ with exporton a Windows on ARM64 computer (server asmodbg64, ssh, directly or locally)
DOS (MZ, COM)✓ 16 Bit, Segment:Offsetin QEMU mit FreeDOS, startet von selbst
DOS (MZ, COM)✓ 16-bit, segment:offsetin QEMU with FreeDOS, starts by itself
ARM-Linux (ELF, 32 Bit)✓über gdbserver in Raspberry Pi OS unter QEMU
ARM Linux (ELF, 32-bit)✓through gdbserver in Raspberry Pi OS under QEMU

Für wen ist Dismonite?

Who is Dismonite for?

Für alle, die ein Programm verstehen wollen, dessen Quelltext sie nicht haben.

For everyone who wants to understand a program whose source they do not have.

🔬

Programme untersuchen

Examining programs

  • Was importiert die Datei, was exportiert sie?
  • Welche Texte liegen in den Ressourcen?
  • Code verfolgen, markieren, kommentieren
  • Alles in einem Fenster
  • What does the file import, what does it export?
  • Which texts are in the resources?
  • Follow, mark and comment code
  • All in one window
🎓

Lernen

Learning

  • Was macht der Compiler aus meinem Code?
  • Schritt für Schritt, Register und Flags sichtbar
  • Sprunghinweis: vor jedem Sprung steht, wohin es geht
  • F1 erklärt jeden Befehl
  • What does the compiler make of my code?
  • Step by step, registers and flags in view
  • Jump note: before every jump it says where it goes
  • F1 explains every instruction
🔁

Nachbauen und ändern

Rebuilding and changing

  • Export als übersetzbares .asm
  • Ohne Änderung: dieselbe Datei, Byte für Byte
  • Mit Änderung: ein angepasstes Programm
  • Weiter im Editor Asmonite
  • Export as assemblable .asm
  • Unchanged: the same file, byte for byte
  • Changed: an adjusted program
  • Carry on in the editor Asmonite
🕹️

Retro und Embedded

Retro and embedded

  • DOS-Programme in FreeDOS debuggen
  • ARM-Linux-Programme im Raspberry-Pi-Gast
  • Windows on ARM und ARM64 auf echter Hardware
  • DOS und ARM lokal in QEMU
  • Debug DOS programs in FreeDOS
  • ARM Linux programs in the Raspberry Pi guest
  • Windows on ARM and ARM64 on real hardware
  • DOS and ARM locally in QEMU

In 60 Sekunden

In 60 seconds

Vom ZIP zum ersten Haltepunkt in einem fertigen Programm – mit dem mitgelieferten Beispiel.

From the ZIP to the first breakpoint in a finished program – with the example that comes with it.

  1. Entpacken und Dismonite.exe starten. Keine Installation; Datei > Öffnen beginnt im Programmordner.
  2. examples\demo.exe öffnen. Ein kleines Programm: zählt von 1 bis 5 und ruft printf auf.
  3. Menü Analyze > Follow code from the entry point and the exports. Der Code ab dem Einsprungpunkt steht mit Labels da; Strg+Klick auf einen Sprung oder Aufruf geht zum Ziel, Alt+← zurück.
  4. F1 auf einer Zeile erklärt sie im Reiter Info – den Befehl oder die importierte Funktion mit ihren Parametern.
  5. F7 drücken. Dismonite startet das Programm und hält am Einsprungpunkt; Register und Stack stehen rechts.
  6. Mit F8 weiter; vor einem Sprung sagt die Zeile, wohin es geht. Geänderte Werte werden rot.
  7. Menü File > Export as .asm: erzeugt ein .asm, das asmoc wieder zur selben Datei übersetzt.
  1. Unpack and start Dismonite.exe. No installation; File > Open starts in the program's folder.
  2. Open examples\demo.exe. A small program: counts from 1 to 5 and calls printf.
  3. Menu Analyze > Follow code from the entry point and the exports. The code from the entry point is there with labels; Ctrl+click on a jump or call goes to the target, Alt+← back.
  4. F1 on a line explains it in the Info tab – the instruction or the imported function with its parameters.
  5. Press F7. Dismonite starts the program and stops at the entry point; registers and stack are on the right.
  6. Continue with F8; before a jump the row says where it goes. Changed values turn red.
  7. File > Export as .asm: makes an .asm that asmoc assembles into the same file again.

Weitere Beispiele im ZIP: examples\dos\HELLO.EXE (DOS, QEMU), examples\winarm\pe_arm32_hello_world.exe (Windows on ARM) und examples\arm64\a64asm_hello.exe (ARM64).

More examples in the ZIP: examples\dos\HELLO.EXE (DOS, QEMU), examples\winarm\pe_arm32_hello_world.exe (Windows on ARM) and examples\arm64\a64asm_hello.exe (ARM64).

Von der EXE zurück zum Quelltext

From the EXE back to source

Der Export ist kein Anhaltspunkt, den man von Hand nacharbeiten muss: er lässt sich übersetzen.

The export is not a rough guide that needs rework by hand: it assembles.

EXEfertiges Programmfinished program
→
Dismoniteanalysieren, kommentierenanalyze, comment
→
.asmmit Labelswith labels
→
asmocAssemblerassembler
→
EXEByte für Byte gleichidentical, byte for byte
  • Zeigt Adressen, Bytes, Befehl und Kommentar – auch bei großen Dateien (getestet bis 64 MB)
  • Shows addresses, bytes, instruction and comment – even for large files (tested up to 64 MB)
  • Füllbytes werden zu einer Zeile align, Nullbytes zu einem Element
  • Padding becomes one align line, zero bytes one item
  • Texte als ASCII und UTF-16 werden erkannt; Strg+F3 springt zum nächsten
  • Texts as ASCII and UTF-16 are recognized; Ctrl+F3 jumps to the next
  • Bei x64 und ARM64 enthält der Export Befehle statt db-Zeilen, jede Zeile wird zur Kontrolle zurückübersetzt
  • For x64 and ARM64 the export contains instructions instead of db lines, every line is assembled back to check it
Dismonite: the import table with field names
Die Importtabelle: jedes Feld mit Größe und Namen, RVAs als Labels, Füllbytes als eine Zeile align. The import table: every field with its size and name, RVAs as labels, padding as one align line.

Der Debugger

The debugger

Ein fertiges Programm beobachten – ohne Quelltext, auf Windows, DOS und ARM.

Watch a finished program – without source, on Windows, DOS and ARM.

Windows (PE)

Startet das Programm direkt unter Windows. Haltepunkte, Step Over/Into, Run to Cursor, Pause; die Konsole des Programms erscheint in der Ausgabe.

Starts the program directly on Windows. Breakpoints, step over/into, run to cursor, pause; the program's console appears in the output view.

DOS (MZ)

Startet QEMU mit FreeDOS von selbst; 16-Bit-Register, Adressen als Segment:Offset. Ein zweiter Lauf startet im laufenden QEMU.

Starts QEMU with FreeDOS by itself; 16-bit registers, addresses as segment:offset. A second run starts in the running QEMU.

ARM-Linux (ELF)

Lädt das Programm per ssh in den Raspberry-Pi-Gast und debuggt es über gdbserver. Läuft kein Gast, startet Dismonite ihn nach Rückfrage.

Copies the program into the Raspberry Pi guest over ssh and debugs it through gdbserver. If no guest runs, Dismonite asks and starts it.

Windows on ARM (PE)

Kopiert das 32-Bit-ARM-Programm auf einen echten Windows-on-ARM-Rechner und debuggt es dort über den kleinen Server asmodbg – entweder über ssh oder direkt im Netz mit einem Kopplungscode. „Search LAN“ findet laufende Server im lokalen Netz.

Copies the 32-bit ARM program to a real Windows on ARM computer and debugs it there through the small server asmodbg – either over ssh or directly on the network with a pairing code. “Search LAN” finds running servers on the local network.

x64 (PE32+)

Startet das 64-Bit-Programm auf diesem Rechner; das kleine Hilfsprogramm asmodbgx64 läuft als Kindprozess. Register rax…r15, Stack und Speicher mit 64-Bit-Adressen.

Starts the 64-bit program on this computer; the small helper asmodbgx64 runs as a child process. Registers rax…r15, stack and memory with 64-bit addresses.

ARM64 (PE)

Debuggt auf einem Windows-on-ARM-Rechner über den Server asmodbg64 – ssh, direkt im Netz oder lokal, wenn Dismonite selbst dort läuft. Register x0…x30, sp, pc, Flags.

Debugs on a Windows on ARM computer through the server asmodbg64 – ssh, directly on the network or locally if Dismonite itself runs there. Registers x0…x30, sp, pc, flags.

Dismonite: debugging demo.exe with registers, stack, memory and output
Windows: demo.exe ohne Quelltext im Debugger – angehalten nach dem ersten printf: rechts Register und Stack, unten der Speicher der Daten-Section und die Ausgabe „Number 1“. Windows: demo.exe in the debugger without source – stopped after the first printf: registers and stack on the right, below the memory of the data section and the output “Number 1”.
Dismonite: a DOS program stopped at a breakpoint, QEMU window with its output
DOS: ein Turbo-Pascal-Programm am Haltepunkt in seiner Schleife; QEMU mit FreeDOS, die Zahlen auch in der Ausgabe. DOS: a Turbo Pascal program at a breakpoint in its loop; QEMU with FreeDOS, the numbers also in the output view.
Dismonite: an ARM Linux program after a step over printf, ARM registers and stack
ARM-Linux: hello-arm im Raspberry-Pi-Gast, nach Step Over über printf – ARM-Register, Stack ab sp und der Speicher dort. ARM Linux: hello-arm in the Raspberry Pi guest, after a step over printf – ARM registers, the stack from sp and the memory there.

Was Dismonite (noch) nicht kann

What Dismonite does not do (yet)

Tastenkürzel

Keyboard shortcuts

Die wichtigsten Befehle auf einen Blick. Die Debug-Tasten sind in Dismonite und Asmonite gleich.

The most important commands at a glance. The debug keys are the same in Dismonite and Asmonite.

TasteDebuggen und Hilfe
KeyDebugging and help
F1Befehlsinfo: Befehl, Funktion, InterruptInstruction info: instruction, function, interrupt
F5Haltepunkt umschaltenToggle breakpoint
F9Starten / FortsetzenStart / continue
F8 / F7Step Over / Step IntoStep over / step into
F4Run to CursorRun to cursor
Strg+F2Debug-Sitzung beendenEnd the debug session
Strg+F · F3Suchen · weitersuchenFind · find next
Strg+GGehe zu AdresseGo to address
TasteAnalyse
KeyAnalysis
Cals Code markierenmark as code
B W D QByte, Word, Dword, Qwordbyte, word, dword, qword
A / UASCII- / UTF-16-TextASCII / UTF-16 text
; / EnterKommentar / Kommentarzeile davorComment / comment line before
NLabel umbenennenRename label
Strg+RVerweise auf diese StelleReferences to this place
Strg+F3nächster TextNext string
Alt+← / Alt+→zurück / vorBack / forward

Download

Download

Dismonite liegt zusammen mit Asmonite in einem ZIP-Archiv – entpacken und starten, ohne Installation. Das ZIP liegt auf asmonite.com.

Dismonite is in one ZIP archive together with Asmonite – unpack and start, no installation. The ZIP is on asmonite.com.

Testversion – Rückmeldungen willkommen
Test version – feedback welcome

Asmonite 0.5.0

Dismonite (Disassembler und Debugger) und Asmonite (Editor, Assembler, Debugger), asmoc (Assembler auf der Kommandozeile), die QEMU-Skripte für FreeDOS und Raspberry Pi OS, die Debug-Server asmodbg, asmodbg64 und asmodbgx64 (Windows on ARM, ARM64, x64), die Befehlsinfo (Deutsch und Englisch) und Beispiele für Windows (x86, x64), DOS und ARM (Thumb-2, ARM64).

Dismonite (disassembler and debugger) and Asmonite (editor, assembler, debugger), asmoc (assembler on the command line), the QEMU scripts for FreeDOS and Raspberry Pi OS, the debug servers asmodbg, asmodbg64 and asmodbgx64 (Windows on ARM, ARM64, x64), the instruction info (German and English) and examples for Windows (x86, x64), DOS and ARM (Thumb-2, ARM64).

Windows 10 (ab 1809) / 11 Windows 10 (1809 or later) / 11 Programm: Englisch · Dokumentation: Deutsch / Englisch Program: English · documentation: German / English 2.0 MB Stand: 2026-10-14 Date: 2026-10-14
SHA-256: bda76827994d5d897c1c670ff2e5e7d4df230d724d27d6001fd8ceceba262ec6
⬇ HerunterladenDownload

Was die Programme tun – und was nicht

What the programs do – and what not

  • Keine Installation, keine Einträge in der Registry: Dismonite merkt sich seine Markierungen in <programm>.dmon neben dem untersuchten Programm.
  • Keine Telemetrie, keine Werbung, kein Kontakt nach Hause.
  • Ins Netz gehen nur die QEMU-Skripte – und nur nach Rückfrage: QEMU (winget), die FreeDOS-Diskette, Raspberry Pi OS. Dismonite spricht per ssh nur mit dem eigenen Gast auf 127.0.0.1. Zum Debuggen auf Windows on ARM verbindet es sich nur mit dem Rechner, den du angibst; „Search LAN“ fragt dafür einmalig per UDP im lokalen Netz.
  • Zum Löschen genügt es, den Ordner zu löschen.
  • No installation, no registry entries: Dismonite keeps its marks in <program>.dmon next to the examined program.
  • No telemetry, no ads, no phoning home.
  • Only the QEMU scripts go online – and only after asking: QEMU (winget), the FreeDOS floppy, Raspberry Pi OS. Dismonite talks over ssh only to its own guest at 127.0.0.1. To debug on Windows on ARM it connects only to the computer you name; “Search LAN” asks the local network once by UDP for that.
  • To remove it, delete the folder.

Den Download prüfen

Check the download

  • Die Prüfsumme in der Eingabeaufforderung: certutil -hashfile Asmonite-0.5.0.zip SHA256 – sie muss mit dem Wert oben übereinstimmen.
  • Die Programme sind nicht signiert. Windows fragt deshalb beim ersten Start evtl. nach („Der Computer wurde durch Windows geschützt“ → „Weitere Informationen“ → „Trotzdem ausführen“).
  • Fragen, Fehler, Wünsche: mail@asmonite.com
  • The checksum in a command prompt: certutil -hashfile Asmonite-0.5.0.zip SHA256 – it must match the value above.
  • The programs are not signed. Windows may therefore ask on the first start (“Windows protected your PC” → “More info” → “Run anyway”).
  • Questions, bugs, wishes: mail@asmonite.com