gpt4 book ai didi

assembly - 如何在 NASM 中推送 64 位整数?

转载 作者:行者123 更新时间:2023-12-04 21:58:18 28 4
gpt4 key购买 nike

我正在尝试推送一个 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], high32sub rsp,8; mov dword [rsp], low32; mov dword [rsp+4], high32
  • 如果您的直接允许,请使用符号扩展
  • 关于assembly - 如何在 NASM 中推送 64 位整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16917643/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com