Discussion:
NASM-kompatibel und 64 Bit?
(zu alt für eine Antwort)
shylock
2006-02-19 15:43:08 UTC
Permalink
Hi,

ich habe folgendes Problem: Ich muss in einem Assembler-Kurs den Bogen
von DOS über Windows bis zu Linux spannen. Dabei will ich nach
Möglichkeit nur einen Assembler oder zumindest zu einander kompatible
Assembler verwenden, um bei den Grundlagen einen roten Faden aufbauen
zu können.

Wichtiges Thema ist natürlich auch 64-Bit-Programmierung unter Windows
und Linux.

Ich bin ziemlich MASM/TASM- und AT&T-lastig. NASM hat mir gute Dienste
im 32-Bit-Umfeld beim Ausarbeiten von Exploits geleistet. Im
64-Bit-Umfeld habe ich bislang nur "Spezialanfertigungen" von
Prozessorherstellern oder andere Exoten verwendet.

Da ich einen ziemlichen Bogen spannen muss, wäre NASM mit seiner
Plattformvielfalt natürlich genial.

Aber, um endlich auf den Punkt zu kommen... ;-)

Es wird viel über 64 Bit und NASM im Internet gesprochen: Mal kann er
es, mal kann er es nicht. Jetzt meine Frage: Ist NASM 64-Bit-fähig
oder nicht? (Die Doku sagt ja nichts zu... heißt ja aber bekanntlich
nicht immer etwas. Papier - auch wenn's elektronisch ist - ist ja
bekanntlich geduldig.)

Eine Alternative wäre YASM. Er unterstützt AMD64. Doch wie sieht es
hier in Richtung Intels IA64 aus? Kann er damit auch umgehen? Hat hier
jemand Erfahrung?

Kurz gesagt: Ich bräuchte eine Empfehlung. :-) Hat jemand in diesem
Punkt Erfahrung? Kann mir jemand einen Rat geben?

Vielen Dank im Voraus.

cu,
shylock
Sebastian Biallas
2006-02-19 16:25:02 UTC
Permalink
Post by shylock
Es wird viel über 64 Bit und NASM im Internet gesprochen: Mal kann er
es, mal kann er es nicht.
nasm wird nicht mehr gepflegt und hat unter Windows komische Bugs. yasm
ist der Nachfolger.
Post by shylock
Jetzt meine Frage: Ist NASM 64-Bit-fähig
oder nicht?
Nein.
Post by shylock
Eine Alternative wäre YASM. Er unterstützt AMD64.
Ja, allerdings kannst Du die gnu-Toolchain unter 64 bit Windows nicht
benutzen, brauchst also sowieso irgendso ein Visual-Dingsbums.
Post by shylock
Doch wie sieht es
hier in Richtung Intels IA64 aus? Kann er damit auch umgehen?
Nein.
Post by shylock
Hat hier
jemand Erfahrung?
Kurz gesagt: Ich bräuchte eine Empfehlung. :-) Hat jemand in diesem
Punkt Erfahrung? Kann mir jemand einen Rat geben?
Kommt drauf an, was Du genau machen willst.
Post by shylock
Vielen Dank im Voraus.
cu,
shylock
--
Gruß,
Sebastian
shylock
2006-02-20 20:41:00 UTC
Permalink
Post by Sebastian Biallas
Post by shylock
Es wird viel über 64 Bit und NASM im Internet gesprochen: Mal kann er
es, mal kann er es nicht.
nasm wird nicht mehr gepflegt und hat unter Windows komische Bugs. yasm
ist der Nachfolger.
Hat YASM unter Windows immer noch seltsame Bugs?
Hast Du bereits mit YASM unter Windows Erfahrungen?
Post by Sebastian Biallas
Post by shylock
Eine Alternative wäre YASM. Er unterstützt AMD64.
Ja, allerdings kannst Du die gnu-Toolchain unter 64 bit Windows nicht
benutzen, brauchst also sowieso irgendso ein Visual-Dingsbums.
Genau das will ich vermeiden. :-)
Post by Sebastian Biallas
Post by shylock
Hat hier
jemand Erfahrung?
Kurz gesagt: Ich bräuchte eine Empfehlung. :-) Hat jemand in diesem
Punkt Erfahrung? Kann mir jemand einen Rat geben?
Kommt drauf an, was Du genau machen willst.
Es geht darum, Leuten Assembler-Programmierung zu vermitteln.
Der Kurs splittet sich auf meinere Plattformen (DOS, Windows, Linux)
auf.
Bei Windows und Linux je 32 und 64 Bit.

Nach Möglichkeit soll der gleiche Assembler oder zumindest kompatible
Assembler für alle Plattformen verwendet werden.

Zum Glück scheint jetzt DOS rauszufallen. :-) DOS fand ich bei dem
Kurs
etwas daneben:

Es ist ein mehrstufiger Kurs. Themenspektrum: Einführung in die
Assembler-Programmierung. Danach darauf aufbauen Assembler unter Linux
und Windows. Wenn die Grundlagen stehen, geht es in Richtung Security,
also Ausarbeiten von Exploits (Overflows, Shellcode etc.).

Es geht um die Ausbildung von Security-Fachleuten.

Um möglichst in den auf einander aufbauenden Einzelkursen einen
roten Faden hin zu bekommen, habe ich jetzt folgende Anforderungen
an den Assembler:

- Er muss 32 und 64 Bit (AMD64 und EM64T) unterstützen.
- Er muss auf Windows und Linux laufen und dort brauchbaren
Object-Code produzieren.
- Er muss frei sein.

Sollte DOS doch noch gewünscht sein, sollte der Assembler auch
16-Bit-Code
produzieren können und unter DOS laufen... %)

Hast Du eine Empfehlung?

Ich spiele derzeit mit dem Gedanken flat assembler zu verwenden.
Bin da allerdings noch skeptisch. Hast Du mit dem schon mal gearbeitet?

cu,
shylock
chaoscode
2006-05-18 14:54:47 UTC
Permalink
ich nehme den fasm schon seit langer zeit.
der läuft unter windows,linux und dos und compiliert auch für die.
der kann
-16 bit code
-32 bit code
-64 bit code(amd + intel +sse (1-3))
-coff dateien rausgeben
-.exe
-.obj
-das linux elf format..
-auch binäre dataeine rausgeben. (ohne header von windows oder linux.)
-ist immer noch in entwicklung.
Post by shylock
- Er muss 32 und 64 Bit (AMD64 und EM64T) unterstützen.
- Er muss auf Windows und Linux laufen und dort brauchbaren
Object-Code produzieren.
- Er muss frei sein.
Sollte DOS doch noch gewünscht sein, sollte der Assembler auch
16-Bit-Code
produzieren können und unter DOS laufen... %)
Hast Du eine Empfehlung?
Ich spiele derzeit mit dem Gedanken flat assembler zu verwenden.
Bin da allerdings noch skeptisch. Hast Du mit dem schon mal gearbeitet?
Loading...