具有限制的Shellcode

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

注意:要在linux上进行系统调用,比如写或者退出,你需要包括这行: int 0x80 ,最后会产生包含\ x80的shellcode。

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

问题是int不是把一个variables作为参数,我试过这个testing:

 section .data nr db 0x80 section .text global _start _start: xor eax, eax inc eax xor ebx, ebx mov ebx, 0x1 int [nr] 

得到

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

我怎么能让我的想法工作? 或者你有不同的解决scheme?

PS。 sysenter和系统调用不起作用 – >非法指令

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

Solutions Collecting From Web of "具有限制的Shellcode"

也许这样的东西,但从来没有用它在严肃的代码!

 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 

(这是fasm-code)