Assembler " compiler "
-
Hmmmmmm schrieb:
... weil ich Visual studios 2008 und 2010 schon installed habe)...
also bei meiner VC++ Express Version war das ganze Masm Gedöns schon mit drauf und es ist auch irgendwo in der Hilfe beschrieben, wie man es benutzt.
Hmmmmmm schrieb:
Lange Rede, kurzer Sinn : Ich war nicht imstande einen Assembler "Compiler" ( Kann man das eig. so nennen ? ) zu downloaded. Habt ihr vllt Links ?
Das hört sich aber schon mal gar nicht gut an, gar nicht gut...;)
Wenn du ein 32bit Windows hast, dann ist standardmäßig das Programm Debug.exe drauf.
-
Naja, lag jetzt nicht daran, dass ich die nötigen Links nicht finde. Eher daran, dass a) Mir gesagt wurde, dass die Virus-Warnungen nicht normal sind und b) dass MASM auch kein Visual Stdudios 2005 braucht, was ja die 2. gedownloadete Datei verlangte.
Habe gerade mal nachgeschaut und kann kein MASM im VC++ Verzeichnis finden. Könnte natürlich die inline-Asm Funktion verwenden, aber mir wurde gesagt, dass Inline-Asm scheisse ist.
Habe 64bit Windows und kann kein Debug.exe o.ä finden
Wie gesagt, MASM will meine Datein nicht builden, weil er sie nicht öffnen kann. Warum auch immer.
-
K, fehler gefunden. Ich hab die Datei immer als Save As -> "Name" -> Done gespeichert, anstatt explizit .asm anzugeben, also Save As -> "Name.asm" -> Done. Dachte, dass das automatisch als .asm file gesaved wird. Danke nochmal an alle Beteiligten.
-
Hmmmmmm schrieb:
Habe gerade mal nachgeschaut und kann kein MASM im VC++ Verzeichnis finden.
Auf der 2008 Version die ich drauf habe, heißt das Ding ml.exe
Richtige 64bit-System- Assembler (und aktuell) sind, soweit ich weiß im Momemt nur der Microsoft Assembler
( http://msdn.microsoft.com/de-de/library/hb5z4sxd.aspx ) und Gas ( http://sourceware.org/binutils/docs-2.21/as/index.html bzw. http://sourceware.org/binutils/docs-2.21/as/index.html ).
-
wurde zwar nicht danach gefragt, aber 64Bit Code erstellen könne u. A. masm,fasm,jwasm,goasm,poasm,gas,nasm,yasm
-
Okay Leute, eine Feage bleibt noch ( ich denke es werden im Laufe der Zeit mehrere ) :
Schaut euch das Video bitte mal kurz an : http://securitytube.net/Assembly-Primer-for-Hackers-(Part-4)-Hello-World-video.aspx
Ab der 13. Minute. Dort with int 0x80 verwendet um die in die Register geladenen Daten zu verwenden, um letzendlich ein systemcall für die Funktion write() durchzuführen. Gerade wurde mir aber gesagt, dass int 0x80 eig. was ganz anderes bewirkt. Hmmm.
-
INT 0x80 ist der Interupt, über den Linux seine API zur verfügung stellt - dafür brauchst du also Linux
-
Ah okay, dann liegts wirklich am OS.
Wie ist das bei Windows ? Lässt sich das auch auf ähnliche Weise machen ? Also die Parameter einer funktion und deren ID in die Register laden und dann irgendeinen anderen Befehl aufrufen ?
Oder muss man das mit diesem print machen ? Ich nehme mal an, dass das "print" ein Macro ist ? Wenns ein Macro ist, muss es ja auch einen anderen Weg geben ?
-
hier sind einige der etwas älteren Assembler befehle recht gut erklärt:
auch was intterrupts (int 21) angeht
grüße
Calandrias
-
Unter Windows muss man sich der WinAPI bedienen - der print-macro basiert letztlich auch drauf. Interrupts sind grundsätzlich nicht erlaubt (API intern gibt es durchaus Interrupts).
Wenn dir die CRT Funktionen Vertraut sind, kannst du auch diese benutzen. Wenn du masm32 verwendest, musst du jegliche das Präfix 'crt_' vor den Namen der Funktion Hängen:
.data sz db "Hallo Welt",13,10,0 .code invoke crt_printf,ADDR sz
-
.386 .model flat, stdcall option casemap :none include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib include \masm32\include\masm32.inc includelib \masm32\lib\masm32.lib .data var db "hallo",0 .code start: invoke StdOut , addr var invoke Sleep , 2000 ; damit man die meldung länger aufm bildschirm ; bleibt oder du startest das programm ; über die eingabeaufforderung invoke ExitProcess, 0 end start
-
Statt Sleep kann an den inkey-macro verwenden, oder direkt die Funktion wait_key ....
-
Okay, vielen Dank leute
Ich experentier mal bisschen damit rum !
Btw : diese ,0 hinter den Variablen, dient das der Nullterminierung ? ( msg db "Whatever", 0 )
-
Für Windows Programmierung sind die Winapi, z.B. Petzold Bücher und die
Iczelion-Tuts ( http://win32assembly.online.fr/tutorials.html ) recht hilfreich.
-
Ahh, der Link ist sehr nice Nachtfeuer, danke.
An dieser Stelle nochmal danke an alle, die geantwortet haben