Ö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
start, Sprungziele und Adressen als Labels.
After the analysis: the code at the entry point start, jump targets and addresses as labels.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
| Programm | Disassembler | Debugger |
|---|---|---|
| Program | Disassembler | Debugger |
| Windows x86 (PE) | ✓ mit Export | direkt auf diesem Rechner |
| Windows x86 (PE) | ✓ with export | directly on this computer |
| Windows x64 (PE32+) | ✓ mit Export | auf diesem Rechner, über den Hilfsserver asmodbgx64 als Kindprozess |
| Windows x64 (PE32+) | ✓ with export | on this computer, through the helper server asmodbgx64 as a child process |
| Windows on ARM (ARM32/Thumb-2) | ✓ mit Export | auf einem Windows-on-ARM-Rechner (Server asmodbg, ssh oder direkt im Netz) |
| Windows on ARM (ARM32/Thumb-2) | ✓ with export | on a Windows on ARM computer (server asmodbg, ssh or directly on the network) |
| Windows ARM64 (PE32+) | ✓ mit Export | auf einem Windows-on-ARM64-Rechner (Server asmodbg64, ssh, direkt oder lokal) |
| Windows ARM64 (PE32+) | ✓ with export | on a Windows on ARM64 computer (server asmodbg64, ssh, directly or locally) |
| DOS (MZ, COM) | ✓ 16 Bit, Segment:Offset | in QEMU mit FreeDOS, startet von selbst |
| DOS (MZ, COM) | ✓ 16-bit, segment:offset | in 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 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.
.asm.asmVom 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.
Dismonite.exe starten. Keine Installation; Datei > Öffnen beginnt im Programmordner.examples\demo.exe öffnen. Ein kleines Programm: zählt von 1 bis 5 und ruft printf auf..asm, das asmoc wieder zur selben Datei übersetzt.Dismonite.exe. No installation; File > Open starts in the program's folder.examples\demo.exe. A small program: counts from 1 to 5 and calls printf..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).
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.
align, Nullbytes zu einem Elementalign line, zero bytes one itemdb-Zeilen, jede Zeile wird zur Kontrolle zurückübersetztdb lines, every line is assembled back to check it
align.
The import table: every field with its size and name, RVAs as labels, padding as one align line.
Ein fertiges Programm beobachten – ohne Quelltext, auf Windows, DOS und ARM.
Watch a finished program – without source, on Windows, DOS and ARM.
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.
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.
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.
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.
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.
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.
.dmon gespeichert.dmon
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”.
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.
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.
| Taste | Debuggen und Hilfe | |
|---|---|---|
| Key | Debugging and help | |
| F1 | Befehlsinfo: Befehl, Funktion, Interrupt | Instruction info: instruction, function, interrupt |
| F5 | Haltepunkt umschalten | Toggle breakpoint |
| F9 | Starten / Fortsetzen | Start / continue |
| F8 / F7 | Step Over / Step Into | Step over / step into |
| F4 | Run to Cursor | Run to cursor |
| Strg+F2 | Debug-Sitzung beenden | End the debug session |
| Strg+F · F3 | Suchen · weitersuchen | Find · find next |
| Strg+G | Gehe zu Adresse | Go to address |
| Taste | Analyse | |
|---|---|---|
| Key | Analysis | |
| C | als Code markieren | mark as code |
| B W D Q | Byte, Word, Dword, Qword | byte, word, dword, qword |
| A / U | ASCII- / UTF-16-Text | ASCII / UTF-16 text |
| ; / Enter | Kommentar / Kommentarzeile davor | Comment / comment line before |
| N | Label umbenennen | Rename label |
| Strg+R | Verweise auf diese Stelle | References to this place |
| Strg+F3 | nächster Text | Next string |
| Alt+← / Alt+→ | zurück / vor | Back / forward |
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.
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).
<programm>.dmon neben dem untersuchten Programm.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.<program>.dmon next to the examined program.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.certutil -hashfile Asmonite-0.5.0.zip SHA256 – sie muss mit dem Wert oben übereinstimmen.certutil -hashfile Asmonite-0.5.0.zip SHA256 – it must match the value above.