Shellcode with restrictions

拈花ヽ惹草 提交于 2019-12-23 02:54:08

问题


For a task I need to create simple shellcode, but it is not allowed that it contains \x80.

Notice: To make a system call on linux, like write or exit, you need among others this line: int 0x80, which in the end will produce shellcode including \x80.

Nevertheless I need to make system calls, so my idea now is to use a variable for the interrupt vector number. For example 0x40 and then multiply it with 2, so in the end there will be a \x40 but not a \x80 in the shellcode.

The problem is that the int is not taking a variable as an argument, I tried this for a test:

section .data

nr db 0x80

section .text

global _start

_start:

xor eax, eax
inc eax

xor ebx, ebx
mov ebx, 0x1

int [nr]

And get

error: invalid combination of opcode and operands

How could I get my idea working? Or do you have a different solution for the problem?

PS. sysenter and syscall are not working -> Illegal instruction

I am using nasm on a x86-32bit machine.


回答1:


maybe something like this, but never use it in serious code!

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

(this is fasm-code)



来源:https://stackoverflow.com/questions/34110045/shellcode-with-restrictions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!