48 lines
860 B
NASM
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'
|