Kurz über FASM, Assembler, WinAPI
Was ist FASM? - Dies ist ein Assembler-Compiler (Flat Assembler).
Was ist ein Assembler? - Dies sind Maschinenanweisungen, dh Befehle, was mit dem Prozessor zu tun ist.
Was ist Windows API / WinAPI? - Dies sind Windows-Funktionen, ohne die Sie nicht mit Windows arbeiten können.
Was machen WinAPI-Funktionen? - Viele Dinge:
Arbeiten mit Dateien.
Arbeiten mit Fenstern, Zeichnen von Bildern, OpenGL, DirectX, GDI usw.
Interaktion mit anderen Prozessen.
Arbeiten mit Ports.
Arbeiten mit der Windows-Konsole
Und viele weitere interessante Funktionen.
Warum brauchen Sie einen Assembler?
Sie können alles daran tun, vom Betriebssystem bis zu 3D-Spielen.
Hier sind die Vorteile des Assemblers:
Er ist sehr schnell.
.
:
. ()
.
(FASM)?
FASM - https://flatassembler.net/
FASM Editor 2.0 - IDE FASM, fasmworld.ru (asmworld), : https://fasmworld.ru/content/files/tools/FEditor-v2.0.rar
OlyDbg - ollydbg.de: https://www.ollydbg.de/odbg201.zip
8.5MB.
( )
FASM- C:\\FASM\ , FASMEditor.
FASMEdit-a -, C:\\FASM Editor 2.0\
OlyDbg -, C:\\Users\****\Documents\FasmEditorProjects\
FASM Editor-a
.
FASM Editor .
"" ( ) -> "..."
"..." .
. .
"Hello world!" FASM
Fasm Editor "" -> "". , "Console"
, .
format PE Console ; FASM
entry start ; windows- .
include 'win32a.inc' ; FASM-
; .
section '.data' data readable writeable ;
hello db 'hello world!',0 ;
section '.code' code readable writeable executable ;
start: ;
invoke printf, hello ; printf
invoke getch ;
; .
invoke ExitProcess, 0 ; windows-
; ()
section '.idata' data import readable ;
library kernel, 'kernel32.dll',\ ; ,
msvcrt, 'msvcrt.dll'
import kernel,\
ExitProcess, 'ExitProcess'
import msvcrt,\
printf, 'printf',\
getch, '_getch'
, 3: 16, 18, 21 . ( , . )
.
:
2. ( 1, )
: ?
1 : "format PE Console" - FASM- , 1 , ( ).
PE - EXE , .
Console - , .
:
format MZ - EXE- MS-DOS
format PE - EXE- Windows, format PE GUI 4.0
format PE64 - EXE- Windows, 64 .
format PE GUI 4.0 - EXE- Windows, .
format PE Console - EXE- Windows, . ( )
format PE Native -
format PE DLL - DLL- Windows, .
format COFF - OBJ- Linux
format MS COFF -
format ELF - OBJ- gcc (Linux)
format ELF64 - OBJ- gcc (Linux), 64-bit
( ) format PE Console
;
. .
3 : entry start
windows- \ . "start" , .
5 : include 'win32a.inc'
, "win32a.inc" INCLUDE ( FASM). .
8 : section '.data' data readable writeable
, (), , .
"data" ( \\ - ) .
"readable writeable" - -.
'.data' -
10 : hello db 'hello world!',0
hello - , (, ), , , , , FASM , .
db - 1 . 1 .
'hello world!' - ASCII
",0" ? - 0 ( ), 0, . . .
12 : section '.code' code readable writeable executable
"code" - .
"executable" - , .
.
14 : start:
. . 3 start , . , entry
15 : invoke printf, hello
printf - \ . "hello"
, , .
- , - .
, invoke : ( 15 )
push hello
call [printf]
.
17 : invoke getch
getch - , .
20 : invoke ExitProcess, 0
ExitProcess - WinAPI , . , , , .
23 : section '.idata' data import readable
"import" - .
24-25 :
library kernel, 'kernel32.dll',\
msvcrt, 'msvcrt.dll'
"library" DLL ( , ).
DLL .
kernel - , .
: 'kernel32.dll'
- DLL .
\
.
:
library kernel, 'kernel32.dll',\
msvcrt, 'msvcrt.dll'
:
library kernel, 'kernel32.dll', msvcrt, 'msvcrt.dll'
1 1 .
27-28 :
import kernel,\
ExitProcess, 'ExitProcess'
import
- , DLL.
kernel
- DLL, .
ExitProcess
- , , . (WinAPI )
'ExitProcess'
- Dies ist der Name der Funktion, die aus der DLL geladen wird, dh der Name der Funktion, die in die DLL geschrieben wird.
Außerdem denke ich, dass es nicht wert ist, erklärt zu werden, alles scheint klar zu sein.
Was ist eine DLL-Bibliothek?
Es ist eine Datei mit einer DLL-Erweiterung. Diese Datei enthält Funktionen (was auch immer). Dies ist ein gewöhnliches Programm, das jedoch nicht durch einen Doppelklick gestartet wird, sondern in das Programm in den virtuellen Speicher geladen wird. Anschließend werden die in dieser DLL befindlichen Funktionen aufgerufen.
Zusammenfassen
Sie können in Assembler schreiben, ohne die Sprache selbst zu kennen, aber nur Makrobefehle des Compilers verwenden. Für den gesamten Artikel habe ich nur 2 Assembler-Befehle erwähnt, die dies push hello
und call [printf]
. Ich werde Ihnen im nächsten Artikel sagen, was dies bedeutet.