如何在不存储在变量程序集中的情况下打印 ascii 字符串?
how to print a ascii string without storing in a variable assembly?
基本上,我想打印 I.e. “0x41414141”或 "AAAA" 在汇编中直接存储到 ecx
,我在下面尝试过但它不起作用:
SECTION .data
buf: db "Hello", 5
SECTION .text
global _start
_start:
mov eax, 0x41414141
push eax
pop ecx
mov eax, 4
mov ebx, 1
mov edx, 4
int 0x80
mov eax, 1
int 0x80
也尝试过 mov ecx, 0x41414141
但没有成功。
在弧形中用nasm -g -f elf -F dwarf ./shell.asm && ld -m elf_i386 -o shell shell.o
编译代码:Linux kali 5.2.0-kali2-amd64 #1 SMP Debian 5.2.9-2kali1 (2019-08-22) x86_64 GNU/Linux
使用 write
系统调用是不可能的。 ecx
中的值应该是指向要写入的字节缓冲区的 指针 ,而不是实际字节本身。
在另一个注释中,您告诉 write
系统调用写入 五个 字节,但 0x41414141
将只有四个。
如果您想将十六进制数打印为实际的字符串 "0x41414141"
您需要先将数字转换为字符串,这样就更不可能了,因为它是一个包含 10 个字符的字符串(不包括可能的空终止符)字节(字符),不能放入 32 位(四字节)寄存器中。
基本上,我想打印 I.e. “0x41414141”或 "AAAA" 在汇编中直接存储到 ecx
,我在下面尝试过但它不起作用:
SECTION .data
buf: db "Hello", 5
SECTION .text
global _start
_start:
mov eax, 0x41414141
push eax
pop ecx
mov eax, 4
mov ebx, 1
mov edx, 4
int 0x80
mov eax, 1
int 0x80
也尝试过 mov ecx, 0x41414141
但没有成功。
在弧形中用nasm -g -f elf -F dwarf ./shell.asm && ld -m elf_i386 -o shell shell.o
编译代码:Linux kali 5.2.0-kali2-amd64 #1 SMP Debian 5.2.9-2kali1 (2019-08-22) x86_64 GNU/Linux
使用 write
系统调用是不可能的。 ecx
中的值应该是指向要写入的字节缓冲区的 指针 ,而不是实际字节本身。
在另一个注释中,您告诉 write
系统调用写入 五个 字节,但 0x41414141
将只有四个。
如果您想将十六进制数打印为实际的字符串 "0x41414141"
您需要先将数字转换为字符串,这样就更不可能了,因为它是一个包含 10 个字符的字符串(不包括可能的空终止符)字节(字符),不能放入 32 位(四字节)寄存器中。