Shellcode有限制

时间:2015-12-05 19:47:30

标签: linux assembly nasm system-calls shellcode

对于任务我需要创建简单的shellcode,但不允许它包含\ x80。

注意:要在linux上进行系统调用,比如写入或退出,你需要这一行:int 0x80,它最终会生成shellcode,包括\ x80。 < / p>

然而我需要进行系统调用,所以我现在的想法是使用一个变量作为中断向量号。例如0x40然后将它乘以2,所以最后在shellcode中将有一个\ x40而不是\ x80。

问题是int没有将变量作为参数,我尝试将其作为测试:

section .data

nr db 0x80

section .text

global _start

_start:

xor eax, eax
inc eax

xor ebx, ebx
mov ebx, 0x1

int [nr]

得到

  

错误:操作码和操作数的组合无效

我怎么能让我的想法奏效?或者您对此问题有不同的解决方案吗?

PS。 sysenter和syscall不工作 - &gt;非法指令

我在x86-32bit机器上使用nasm。

1 个答案:

答案 0 :(得分:2)

也许是这样的,但绝不会在严肃的代码中使用它!

format ELF executable
use32
entry start

segment executable  writeable
  start:
  ;<some code>
  inc byte [ here + 1 ] ;<or some other math>
  jmp here
  here:
  int 0x7f
segment readable  writeable

(这是法典代码)