Groups | Search | Server Info | Login | Register


Groups > de.comp.lang.assembler > #1238

MZ + PE + Code := Flat Image für Windows 10 64-Bit - NASM / YASM

From Jens Kallup <paule32.jk@gmail.com>
Newsgroups de.comp.lang.assembler
Subject MZ + PE + Code := Flat Image für Windows 10 64-Bit - NASM / YASM
Date 2023-10-29 09:37 +0100
Organization kallup non-profit
Message-ID <kq6ju5F6i5U1@mid.individual.net> (permalink)

Show all headers | View raw


Hallo,

kann auf Grundlage des unten aufgeführten Codes, mehr als eine Funktion
der win32api für Windows 64-Bit Systeme verwenden ?
Wenn ja, wie kann man den Code so erweitern ?

Bei dem vorliegenden Code handelt es sich um einen FLAT-Image Code, der
mittels:

nasm -f bin -o win.exe win.asm    # oder:
yasm -f bin -o win.exe win.asm

zu einer .EXE assembliert werden kann.
Das heißt, es werden kein Linker oder andere Import-Bibliotheken zur
Erstellung benötigt.

BITS 64

%define align(n,r) (((n+(r-1))/r)*r)

; DOS Header
     dw 'MZ'                 ; e_magic
     dw 0                    ; [UNUSED] e_cblp
     dw 0                    ; [UNUSED] c_cp
     dw 0                    ; [UNUSED] e_crlc
     dw 0                    ; [UNUSED] e_cparhdr
     dw 0                    ; [UNUSED] e_minalloc
     dw 0                    ; [UNUSED] e_maxalloc
     dw 0                    ; [UNUSED] e_ss
     dw 0                    ; [UNUSED] e_sp
     dw 0                    ; [UNUSED] e_csum
     dw 0                    ; [UNUSED] e_ip
     dw 0                    ; [UNUSED] e_cs
     dw 0                    ; [UNUSED] e_lfarlc
     dw 0                    ; [UNUSED] e_ovno
     times 4 dw 0            ; [UNUSED] e_res
     dw 0                    ; [UNUSED] e_oemid
     dw 0                    ; [UNUSED] e_oeminfo
     times 10 dw 0           ; [UNUSED] e_res2
     dd pe_hdr               ; e_lfanew

; PE Header
pe_hdr:
     dw 'PE', 0              ; Signature

; Image File Header
     dw 0x8664               ; Machine
     dw 0x01                 ; NumberOfSections
     dd 0                    ; [UNUSED] TimeDateStamp
     dd 0                    ; PointerToSymbolTable
     dd 0                    ; NumberOfSymbols
     dw opt_hdr_size         ; SizeOfOptionalHeader
     dw 0x22                 ; Characteristics

; Optional Header, COFF Standard Fields
opt_hdr:
     dw 0x020b               ; Magic (PE32+)
     db 0x0e                 ; MajorLinkerVersion
     db 0x16                 ; MinorLinkerVersion
     dd code_size            ; SizeOfCode
     dd 0                    ; SizeOfInitializedData
     dd 0                    ; SizeOfUninitializedData
     dd entry                ; AddressOfEntryPoint
     dd iatbl                ; BaseOfCode

; Optional Header, NT Additional Fields
     dq 0x000140000000       ; ImageBase
     dd 0x10                 ; SectionAlignment
     dd 0x10                 ; FileAlignment
     dw 0x06                 ; MajorOperatingSystemVersion
     dw 0                    ; MinorOperatingSystemVersion
     dw 0                    ; MajorImageVersion
     dw 0                    ; MinorImageVersion
     dw 0x06                 ; MajorSubsystemVersion
     dw 0                    ; MinorSubsystemVersion
     dd 0                    ; Reserved1
     dd file_size            ; SizeOfImage
     dd hdr_size             ; SizeOfHeaders
     dd 0                    ; CheckSum
     dw 0x02                 ; Subsystem (Windows GUI)
     dw 0x8160               ; DllCharacteristics
     dq 0x100000             ; SizeOfStackReserve
     dq 0x1000               ; SizeOfStackCommit
     dq 0x100000             ; SizeOfHeapReserve
     dq 0x1000               ; SizeOfHeapCommit
     dd 0                    ; LoaderFlags
     dd 0x02                 ; NumberOfRvaAndSizes

; Optional Header, Data Directories
     dd 0                    ; Export, RVA
     dd 0                    ; Export, Size
     dd itbl                 ; Import, RVA
     dd itbl_size            ; Import, Size

opt_hdr_size equ $-opt_hdr

; Section Table
     section_name db '.'     ; Name
     times 8-($-section_name) db 0
     dd sect_size            ; VirtualSize
     dd iatbl                ; VirtualAddress
     dd code_size            ; SizeOfRawData
     dd iatbl                ; PointerToRawData
     dd 0                    ; PointerToRelocations
     dd 0                    ; PointerToLinenumbers
     dw 0                    ; NumberOfRelocations
     dw 0                    ; NumberOfLinenumbers
     dd 0x60000020           ; Characteristics

hdr_size equ $-$$

code:
; Import Address Directory
iatbl:
     dq symbol
     dq 0

iatbl_size equ $-iatbl

; Strings
title:
     db "Hallo Welt !!!", 0
content:
     db "ABCDEFGHIJKL", 0

; Entry
entry:
     mov r9d, 0x00240040     ; uType
     lea r8, [rel title]     ; lpCaption
     lea rdx, [rel content]  ; lpText
     xor ecx, ecx            ; hWnd
     jmp [rel iatbl]         ; MessageBoxN

     times align($-$$,16)-($-$$) db 0xcc

; Import Directory
itbl:
     dq intbl                ; OriginalFirstThunk
     dd 0                    ; TimeDateStamp
     dd dll_name             ; ForwarderChain
     dd iatbl                ; Name
     dq 0                    ; FirstThunk

itbl_size equ $-itbl

; Import Name Table
intbl:
     dq symbol
     dq 0

; Symbol
symbol:
     dw 0x0294               ; [UNUSED] Function Order
     db 'MessageBoxA', 0     ; Function Name
dll_name:
     db 'USER32.dll', 0
     db 0

sect_size equ $-code

     times align($-$$,16)-($-$$) db 0

code_size equ $-code
file_size equ $-$$

-- 
Diese E-Mail wurde von Avast-Antivirussoftware auf Viren geprüft.
www.avast.com

Back to de.comp.lang.assembler | Previous | NextNext in thread | Find similar


Thread

MZ + PE + Code := Flat Image für Windows 10 64-Bit - NASM / YASM Jens Kallup <paule32.jk@gmail.com> - 2023-10-29 09:37 +0100
  Re: MZ + PE + Code := Flat Image für Windows 10 64-Bit - NASM / YASM Herbert Kleebauer <klee@unibwm.de> - 2023-10-29 13:44 +0100
    Re: MZ + PE + Code := Flat Image für Windows 10 64-Bit - NASM / YASM Jens Kallup <paule32.jk@gmail.com> - 2023-10-29 16:38 +0100
      kleiner Typo Jens Kallup <paule32.jk@gmail.com> - 2023-10-29 16:40 +0100
      Re: MZ + PE + Code := Flat Image für Windows 10 64-Bit - NASM / YASM Herbert Kleebauer <klee@unibwm.de> - 2023-10-29 17:29 +0100
        Re: MZ + PE + Code := Flat Image für Windows 10 64-Bit - NASM / YASM Blacky Cat <paule32.jk@gmail.com> - 2025-07-26 16:20 +0200

csiph-web