[l] Ein anderes Buch, das ich gerade lese: Shellcoder's Handbook. Große Namen bei den Autoren, und das Inhaltsverzeichnis sieht auch richtig gut aus. Ich bin erst bei Kapitel eins, und keines der drei C-nach-Assembler-Beispiele stimmt! Äh, hallo? Hab ich hier den Verstehen-Sie-Spaß-Fehldruck bekommen? Das ist bloß die Einleitung, aber für sowas habe ich ja überhaupt gar kein Verständnis. Dann wechseln sie da unangekündigt zwischen Intel- und AT&T-Syntax hin- und her, ohne das mal zu erläutern. Lauter wichtige Details sind da falsch. Da wird "int number;" mit "number dw 0" übersetzt (int ist 32-bit und landet nur dann 0-initialisiert im Datensegment, wenn es nicht lokal deklariert ist, was aus der C-Variante nicht ersichtlich ist). Dann wird da "int array[4]; array[2]=9;" mit "array dw 0,0,0,0; mov ebx,2; mov array[ebx],9" übersetzt (das schreibt an das Byte-Offset 2 eine 9, nicht in das 2. Word! Außerdem ist das so ungültig, weil man dem mov sagen muss, ob man ein byte, word oder dword schreiben will). Schließlich wird ein gdb-Dump gezeigt, der mit der vorher gezeigten Funktion nur periphär zu tun hat, und erst mal zu einem Segfault führen würde so. Mal ganz abgesehen davon, daß sie in der C-Funktion "int" als "in" vertippt haben. Ich guck mal, wie sich der Rest entwickelt, aber bisher kann ich nur abraten. Übrigens ist mir beim Rumspielen mit einem kaputten Beispiel aufgefallen, daß gcc da merkwürdigen Code generiert. Wer sich für Assembler-Hacken und gcc interessiert, möchte das vielleicht verfolgen (oder kann mir kurz erklären, was ich da gerade übersehen habe). Übrigens generiert icc den selben Code wie gcc, und tcc erzeugt ähnlichen Code wie gcc -Os, allerdings ohne den überflüssigen Register-Reload.