Schreiben. Assemblieren. Debuggen. Disassemblieren.
Zwei kleine, portable Programme statt einer Werkzeugkette: Asmonite zum Schreiben, Übersetzen und Debuggen von Assembler (x86, x64, ARM32/Thumb-2 und ARM64/AArch64), Dismonite zum Untersuchen und Debuggen ausführbarer Dateien – Windows (PE für x86, x64, ARM32 und ARM64/AArch64), DOS (MZ) und ARM-Linux (ELF). Mit eingebauter Befehlsinfo auf F1. Entpacken, starten, fertig.
Version 0.7.6 (Testversion) · Windows 10/11 · 2.1 MB · keine Installation · kostenlos · kein Tracking
Alles, was man zum Schreiben, Übersetzen, Debuggen und Zurückübersetzen von Assembler-Programmen braucht.
Syntax-Hervorhebung für x86-Assembler, C und Pascal. Strg+F9 erzeugt die EXE neben der Quelldatei; Fehler stehen im Ausgabefenster.
AsmoniteJede erzeugte EXE wird vor dem Start geprüft: Header, Sections, Einsprungpunkt, Importe – gibt es die DLLs und Funktionen wirklich?
AsmoniteHaltepunkte, Step Over/Into, Run to Cursor, Pause – direkt im Quelltext. Register, Stack und Speicher; die Ausgabe des Programms live.
AsmoniteDOS-Programme laufen in QEMU mit FreeDOS – mit denselben Debug-Befehlen. QEMU startet automatisch; ein zweiter Lauf braucht kein neues Booten.
Asmonite · DismonitePE-, MZ- und ELF-Dateien analysieren, kommentieren und als .asm exportieren, das wieder Byte für Byte dieselbe Datei ergibt.
32-Bit-ARM-Programme laufen über gdbserver in Raspberry Pi OS unter QEMU. Ein Skript lädt und richtet den Gast ein; Dismonite startet ihn auf Wunsch.
DismoniteEin Tastendruck erklärt den Befehl, die importierte Windows-Funktion (mit Parametern), den DOS-Interrupt, die Direktive – und auch Fehlermeldungen. Deutsch und Englisch.
Asmonite · DismoniteAb .arch thumb schreibt Asmonite ARM-Thumb-2-Code; der Editor färbt ihn als ARM. Dismonite exportiert Windows-on-ARM-Programme als .asm, das wieder dieselbe Datei ergibt.
Dismonite startet 32-Bit-ARM-Programme auf einem echten Windows-on-ARM-Rechner und debuggt sie dort: Haltepunkte, Schritte, Register. Der kleine Server asmodbg läuft auf dem ARM-Rechner.
Ab .arch x64 oder .arch arm64 schreibt Asmonite 64-Bit-Code; .format pe erzeugt eine PE32+-Datei, die Windows (x64) oder Windows on ARM64 ausführt. Jedes Ergebnis wird zur Kontrolle wieder zurückgelesen.
x64-Programme laufen auf diesem Rechner, ARM64-Programme auf einem Windows-on-ARM-Rechner (ssh, direkt im Netz oder lokal): Haltepunkte, Schritte, 64-Bit-Register, Stack und Speicher – in Asmonite auf Quellzeilen. Vor einem Sprung steht, ob er genommen wird und wohin.
Asmonite · DismoniteDismonite liest das Ressourcenverzeichnis von PE-Dateien: Zeichenketten-Tabellen werden Text für Text erkannt, mit Label und Nummer; eine Konstante vor einem Aufruf, der eine Meldung lädt, zeigt den Text als Hinweis.
Dismonite| Läuft auf (Host) | Programme, die man damit baut oder untersucht (Ziel) | |
|---|---|---|
| Asmonite | Windows 10/11, 32 oder 64 Bit | Windows (PE, PE32+) aus i386-, x64- und ARM64-Assembler; DOS-Programme in QEMU; ARM-Thumb-2-Code schreiben |
| Dismonite | Windows 10/11, 32 oder 64 Bit | Windows PE (x86, x64, ARM, ARM64), DOS MZ (16 Bit), ARM-Linux ELF (32 Bit) |
| asmodbg | Windows 10 auf ARM (läuft dort, wo das ARM-Programm läuft) | 32-Bit-ARM-Programme (PE), vom Dismonite im Netz oder über ssh gesteuert |
| asmodbg64 | Windows on ARM64 (läuft dort, wo das ARM64-Programm läuft) | ARM64-Programme (PE), von Asmonite und Dismonite über ssh oder im Netz gesteuert |
| asmodbgx64 | 64-Bit-Windows (Hilfsprogramm im Ordner debugserver, startet von selbst) | x64-Programme (PE32+) auf diesem Rechner oder, mit --listen, auf einem anderen 64-Bit-Windows-Rechner im Netz |
| QEMU | 64-Bit-Windows (nur für DOS und ARM nötig; die Skripte bieten die Installation an) | FreeDOS (720-KB-Diskette), Raspberry Pi OS Buster (ARM) |
Für alle, die verstehen wollen, was der Prozessor wirklich tut – vom ersten mov bis zur fremden EXE.
asmoc für die Kommandozeile.asmVom ZIP zum ersten Haltepunkt – mit dem mitgelieferten Beispiel.
Asmonite.exe starten. Keine Installation; Datei > Öffnen beginnt im Programmordner.examples\windows_intel\demo.asm öffnen. Ein kleines Programm: zählt von 1 bis 5 und ruft printf auf.call [printf] setzen.printf mit seinen Parametern – rechts in der Hilfe.Es geht auch ohne Vorbereitung: In einer neuen Datei genügt die eine Zeile mov eax, 1 – Strg+F9 macht daraus ein Windows-Programm (ohne .arch und .format nimmt Asmonite 32-Bit-Windows an).
Danach: examples\windows_intel\demo.exe in Dismonite öffnen und mit F7 dieselbe Datei ohne Quelltext debuggen.
Asmonite – der EditorÜbersichtlich, schnell und auf Assembler zugeschnitten.
.arch thumb färbt der Editor die Zeilen als ARM.format pe erzeugt Header und Importtabelle, oder jedes Byte selbst im Quelltext
printf über die Importtabelle.
Schritt für Schritt durch das eigene Programm – mit Register, Stack und Speicher im Blick.
esp/ebp/eiphello.com.asm und hello_exe.asm – Hello World als .COM und als .EXE, mit Erklärung des Unterschieds.arch x64 startet mit F9 auf diesem Rechner, mit .arch arm64 auf einem Windows-on-ARM-Rechnerrax…r15 bzw. x0…x30 mit Flags, Stack als 64-Bit-Werte, Speicher mit 64-Bit-AdressenEin Tastendruck erklärt, was die Zeile unter dem Cursor tut – ohne Handbuch, ohne Suchmaschine.
call [ExitProcess] die DLL, die Aufrufkonvention, jeden Parameter mit Typ und Bedeutung und das Ergebnis – über 230 Funktionen (kernel32, user32, msvcrt …)int 21h die Funktion, deren Nummer die Info in den Zeilen davor findet, mit Ein- und Ausgaberegistern.arch, .format, .import, section und die anderen Besonderheiten des Assemblers
call [printf]: rechts der Befehl call und die Funktion printf – DLL, Aufrufkonvention, Parameter, Ergebnis.
Dismonite – Disassembler und DebuggerAusführbare Dateien verstehen, im Debugger beobachten und wieder in Quelltext verwandeln – für Windows (PE: x86, x64, ARM, ARM64), DOS (MZ) und ARM-Linux (ELF).
Dismonite hat eine eigene Seite: dismonite.com
str_<Nummer>; im Code zeigt eine Konstante vor einem Aufruf, der eine Meldung lädt, den Text als Hinweis<programm>.dmon neben dem Programm gespeichert.asm mit Labels, den der Asmonite-Assembler wieder zur selben Datei übersetzt
start, Sprungziele und Adressen als Labels.
align.
Startet das Programm direkt unter Windows. Haltepunkte, Step Over/Into, Run to Cursor, Pause; die Konsole des Programms erscheint in der Ausgabe.
Startet QEMU mit FreeDOS von selbst; 16-Bit-Register, Adressen als Segment:Offset. Ein zweiter Lauf startet im laufenden 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.
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.
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.
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.
.dmon gespeichert
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“.
hello-arm im Raspberry-Pi-Gast, nach Step Over über printf – ARM-Register, Stack ab sp und der Speicher dort.
Für jede einzelne Aufgabe gibt es gute Werkzeuge. Asmonite bringt sie für den Alltag mit Assembler zusammen – mit einer Bedienung und ohne Installation.
| Aufgabe | Asmonite + Dismonite | Übliche Werkzeugkette |
|---|---|---|
| Quelltext schreiben | ✓ Editor mit Hervorhebung | Texteditor |
| Übersetzen | ✓ eingebaut, dazu asmoc | eigenes Programm (z. B. NASM) und Linker |
| Windows-Programme debuggen | ✓ auf Quellzeilen und ohne Quelltext | eigener Debugger (z. B. x64dbg) |
| DOS-Programme debuggen | ✓ QEMU + FreeDOS, startet von selbst | Emulator mit eigenem Debugger, von Hand eingerichtet |
| ARM-Linux-Programme debuggen | ✓ Gast wird per Skript eingerichtet | QEMU, gdbserver und gdb von Hand |
| Windows-on-ARM-Programme debuggen | ✓ Server asmodbg auf dem ARM-Rechner, Steuerung aus Dismonite | Remote-Debugger und Entwicklungsumgebung auf dem ARM-Rechner einrichten |
| x64- und ARM64-Programme | ✓ Assembler, Disassembler mit Export und Debugger | getrennte Werkzeuge je Architektur |
| Befehle nachschlagen | ✓ F1 auf der Zeile: Befehl, Windows-Funktion, Interrupt, Fehlermeldung | Handbuch oder Suchmaschine in einem anderen Fenster |
| Disassemblieren | ✓ Export, der wieder dieselbe Datei ergibt | Disassembler; der Export muss meist nachbearbeitet werden |
| Installation | ✓ keine – ein ZIP, unter 2 MB | mehrere Programme |
Die wichtigsten Befehle auf einen Blick. Die Debug-Tasten sind in beiden Programmen gleich.
| Taste | Asmonite und Dismonite |
|---|---|
| F1 | Befehlsinfo: Befehl, Funktion, Interrupt, Direktive, Fehlermeldung |
| F5 | Haltepunkt umschalten |
| F9 | Starten / Fortsetzen |
| F8 / F7 | Step Over / Step Into |
| F4 | Run to Cursor |
| Strg+F2 | Debug-Sitzung beenden |
| Strg+F9 | Assemblieren (nur Asmonite) |
| Strg+F · F3 | Suchen · weitersuchen |
| Strg+H | Ersetzen (Asmonite) |
| Strg+G | Gehe zu Zeile (Asmonite) / Adresse (Dismonite) |
| Strg+Z / Strg+Y | Rückgängig / Wiederholen (Asmonite) |
| Taste | Dismonite |
|---|---|
| C | als Code markieren |
| B W D Q | Byte, Word, Dword, Qword |
| A / U | ASCII- / UTF-16-Text |
| ; / Enter | Kommentar / Kommentarzeile davor |
| N | Label umbenennen |
| Strg+R | Verweise auf diese Stelle |
| Strg+F3 | nächster Text |
| Alt+← / Alt+→ | zurück / vor |
Ein ZIP-Archiv – entpacken und starten, ohne Installation.
Asmonite (Editor, Assembler, Debugger), Dismonite (Disassembler und 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).
Asmonite.ini neben der EXE, Dismonite seine Markierungen in <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.certutil -hashfile Asmonite-0.7.6.zip SHA256 – sie muss mit dem Wert oben übereinstimmen.