正确的用户输入 - x86 Linux 汇编
所以我正在使用 NASM 为 Linux 开发一个 x86 汇编程序。该程序主要询问用户的姓名和最喜欢的颜色。执行此操作并将两个字符串存储在 .bss 部分中声明的…
为什么数据段和堆栈段是可执行的?
我刚刚注意到我的简单程序的数据和堆栈段是可执行的。 我在 /proc/[pid]/maps 中看到它,并且简单的代码证实了这一点。 例如: ; prog.asm section .d…
通过 x86 程序集从 argv 读取文件名
我正在尝试读取传递给我的可执行文件的文件名并使用程序集写入该文件。编译没有错误,但执行时失败。我的代码到底有什么问题? BITS 32 segment .data…
将 2 字节变量截断为 1 字节
这似乎是一个微不足道的问题,但我迷路了。 在此示例中,character 是一个 2 字节变量,而寄存器 bx 是一个单字节。我正在尝试执行 cmp bx, [characte…
Linux x86 ASM - 获取用户输入
希望这是一个简单的问题: 首先,我想知道是否有人知道如何在 Linux 上使用 x86 NASM 语法汇编来获取用户输入。现在,我有: section .data greet: db…
x86 ASM Linux - 创建循环
我正在使用 NASM 和 x86 Intel Assembly Syntax 在 Linux 操作系统上开发一个程序 - 它应该很简单。 我遇到的问题是我无法为我的程序创建工作循环: s…
通过用执行相同工作的另一条指令替换一条指令而导致分段错误。为什么?
我有这个工作 shellcode 生成一个 shell 我必须修改它,以便在编译后隐藏二进制文件中任何位置的“/bin/sh”或“sh”。因此,我想到采用 /bin/sh(2f 6…
nasm 文件缓冲区的第二个和第三个元素始终为 0
我有一个 NASM 代码,它读取文件(文件名存储在地址变量中)并计算 CRC5。它获取文件的每个字节并通过计算例程运行它。我观察到一个奇怪的行为: 如果…
寻址 nasm 中的数组元素
我对汇编和 NASM 非常陌生,有一个代码: SECTION .data array db 89, 10, 67, 1, 4, 27, 12, 34, 86, 3 wordvar dw 123 SECTION .text global main m…
在 Red hat 中编译时出现分段错误,但在 ubuntu 中工作正常
这是我正在执行的代码。它在带有 NASM 2.08 的 ubuntu 上给出了所需的输出,但在使用运行 NASM 0.98.22 的 Red Hat 7.3 编译时给出了分段错误 有人可…
如何在EBX寄存器中存储连续字节
我试图将斐波那契序列的数组存储在 EBX 寄存器的连续字节中,从最低字节到最高字节。到目前为止,我的代码按预期工作: fib0=0 fib1=1 fib2= fib0 + f…
Linux(64 位)、nasm 和 gdb
我正在搜索其他线程但没有运气。 我的问题也许很简单但令人沮丧。 我正在 64 位 Ubuntu 11.04 上编译两个文件: nasm -f elf64 -g file64.asm gcc -g …
从数据段指向文本段的指针
是否可以在 x86-64 中使用此相对寻址执行以下操作? section .text two dq 0 section .data one: dq two 当我在 OS X 上使用 nasm 执行此操作时,我收…