How to push a 64bit int in NASM?
I'm trying to push a 64bit integer but when assembling NASM seems to want to see it as a DWORD not a QWORD.
I'm using ASM to create the shellcode I need to inject a 64bit DLL into a 64bit process. The first QWORD is the old instruction pointer, the second is the address containing the address of the DLL, the third is the address of LoadLibrary. The placeholders are filled in at runtime.
section .text
global _start
_start:
BITS 64
PUSH QWORD 0xACEACEACACEACEAC
PUSHFQ
push rax
PUSH QWORD 0xACEACEACACEACEAC
MOV RAX, 0xACEACEACACEACEAC
CALL RAX
pop RAX
POPFQ
RETN
There is no push imm64
instruction. As a workaround you can do one of the following:
mov rax, 0xACEACEACACEACEAC; push rax
mov rax, 0xACEACEACACEACEAC; push rax
push qword [rel foo]
push dword low32; mov dword [rsp+4], high32
push dword low32; mov dword [rsp+4], high32
or sub rsp,8; mov dword [rsp], low32; mov dword [rsp+4], high32
sub rsp,8; mov dword [rsp], low32; mov dword [rsp+4], high32
上一篇: 内存折叠汇编语言
下一篇: 如何在NASM中推送64位整数?