asm_dip/toolchain/fasmw17332/EXAMPLES/WIN64/DLL/WRITEMSG.ASM
2024-11-24 23:13:28 -05:00

48 lines
860 B
NASM

format PE64 console DLL
entry DllEntryPoint
include 'win64a.inc'
section '.text' code readable executable
proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
mov eax,TRUE
ret
endp
proc WriteMessage uses rbx rsi rdi, message
mov rdi,rcx ; first parameter passed in RCX
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov rbx,rax
xor al,al
or rcx,-1
repne scasb
dec rdi
mov r8,-2
sub r8,rcx
sub rdi,r8
invoke WriteFile,rbx,rdi,r8,bytes_count,0
ret
endp
section '.bss' data readable writeable
bytes_count dd ?
section '.edata' export data readable
export 'WRITEMSG.DLL',\
WriteMessage,'WriteMessage'
section '.reloc' fixups data readable discardable
if $=$$
dd 0,8 ; if there are no fixups, generate dummy entry
end if
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL'
include 'api/kernel32.inc'