【发布时间】:2017-08-15 18:14:57
【问题描述】:
我已经按照教科书的规定用 intel 64 位语法编写了以下汇编代码
Section .text
global _short
_start:
jmp short Gotocall
shellcode:
pop rcx
xor eax,eax
mov byte [rcx+8], al
lea rdi, [rax]
mov long [rcx+8], rdi
mov long [rcx+12], eax
mov byte al, 0x3b
mov rsi, rax
lea rdi, [esi+8]
lea edx, [esi+12]
int 0x80
Gotocall:
call shellcode
db '/bin/shJAAAAKKKK'
但我在第 10 行收到一个 nasm 错误,如下所示 asmshell.asm:10:错误:操作数大小不匹配 谁能告诉我他们在我的代码中有什么错误。
谁能告诉我一些关于 64 位英特尔汇编指令的好的参考资料。
【问题讨论】:
-
你如何调用
nasm,你如何尝试构建你的程序? -
@Someprogrammerdude 我使用这个命令 nasm -f elf64 asmshell.asm
-
如果您的教科书建议
mov byte al, 0x3b有什么好处吗?al还可以是什么尺寸? -
是你的错字还是书上的错字?
-
@WeatherVane 是的,这是不必要的。我复制了书中的代码。
标签: linux assembly x86-64 shellcode