Я прочитал несколько уроков по основам шеллкодинга и у меня есть вопрос. Я написал небольшую функцию в C
#include <stdio.h>
#include<string.h>
int main() {
char cmd[] = "net user /add jango Jango01$";
system(cmd);
}
и создайте из него объектный файл, используя
gcc -c exec.c -o exec.o
Теперь я хочу превратить его в шелл-код с помощью objdump.
c:\>objdump -d -M intel exec.o
: file format pe-i386
Disassembly of section .text:
00000000 <_main>:
0: 55 push ebp
1: 89 e5 mov ebp,esp
3: 83 e4 f0 and esp,0xfffffff0
6: 83 ec 30 sub esp,0x30
9: e8 00 00 00 00 call e <_main+0xe>
============= SNIP =============
5c: c9 leave
5d: c3 ret
5e: 90 nop
5f: 90 nop
Когда я связываю байты с чем-то вроде
char code[] = "\x55\x89\xe5\x83\xe4\xf0\x83\xec\x30\xe8\x00\x00\x00\x00 == SNIPPET == \xc9\xc3\x90\x90";
это правильный путь? Я не уверен, является ли hexdump окончательным шелл-кодом. Мой английский не очень хорош, и я не уверен, правильно ли я понял.
Спасибо