我正在尝试推送一个 64 位整数,但在组装 NASM 时似乎希望将其视为 DWORD 而不是 QWORD。
我正在使用 ASM 创建将 64 位 DLL 注入(inject) 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
push qword [rel foo]
push dword low32; mov dword [rsp+4], high32
或 sub rsp,8; mov dword [rsp], low32; mov dword [rsp+4], high32
关于assembly - 如何在 NASM 中推送 64 位整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16917643/