如何在NASM中推送64位整数?
我试图推送一个64位整数,但是在组装时,NASM似乎希望将其视为DWORD而不是QWORD。
我正在使用ASM创建我需要将64位DLL注入64位进程的shellcode。 第一个QWORD是旧的指令指针,第二个是包含DLL地址的地址,第三个是LoadLibrary的地址。 占位符在运行时填入。
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
没有push imm64
指令。 作为解决方法,您可以执行以下任一操作:
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
或sub rsp,8; mov dword [rsp], low32; mov dword [rsp+4], high32
push dword low32; mov dword [rsp+4], high32
sub rsp,8; mov dword [rsp], low32; mov dword [rsp+4], high32
sub rsp,8; mov dword [rsp], low32; mov dword [rsp+4], high32