Skip to content

thEpisode/Linux-Shellcode-Generator

Repository files navigation

Linux Shellcode Generator

This is a shellcode generator in ASM to fast development and test it in a C snippet template, I prefer Intel syntax but if you found any AT&T syntax in experiments code don't worry, only read documentation inside source code.

All source codes run on Parrot OS (Debian), I will try to test in some many Linux distros.

Table of contents

Where to start

Some useful links:

Manual compilation and test

If you want to compile and create a trace of all your code use the traditional steps. I know this is hard to remember, use the next snippets.

x86 support

Disclaimer: This section is under x86 support, all code above is only for x86 architectures. In next versions support x64 and x84_64.

Compiling .asm source codes

nasm -f elf sourceCode.asm

ld -o executableName sourceCode.o

Dissasembly compiled to read hexadecimal code

objdump -d executableName

Compiling .c source codes

Normal purposes

gcc -o cExecutableName sourceCode.c

Testing shellcodes

gcc cExecutableName.c -o cExecutableName -fno-stack-protector -z execstack -no-pie

Binary to Shellcode string tool

To easy extracting shellcodes use shellcode.sh script contained in root project folder to generate shellcode strings and test it. You can extract a shellcode and print in console, save in a text file, inject into test project, build to check errors and run injected shellcode. Documentation is exposed below.

shellcode.sh Usage:

> bash shellcode.sh [<options>] [<asm_filename>]

    -e, --extract             Extract shellcode from binary file and print in console
    -s, --save                Save shellcode string into a .txt file
    -t, --test                Inject shellcode string into shellcode.c source code, ready to compile
    -tb, --testbuild          Inject shellcode string and build shellcode.c
    -tbr, --testbuildrun      Inject shellcode string, build shellcode.c and run program

Example:
  > bash shellcode.sh -tbr ~/ASM/HelloWorld/Helloworld.asm

ASM Fast Development Projects

I know that start a new project and contain all generated files is hard, for that reason I developed another tool for fast development in asm, you could create new projects with folder structure and using the shellcode script to compile and test use following tool:

Disclaimer: This section is under x86 support, all code above is only for x86 architectures. In next versions support x64 and x84_64.

ASM Fast Development Usage

> bash ASMFastDevelopment.sh [<options>] [<folder name>]

    -h, --help                Show helps'
    -n, --new                 Create new project with folder name given
    -c, --compile             Compile .asm file inside folder
                              Disclaimer: This script works in current folder, do not try to compile outside this folder

Example:
  > bash ASMFastDevelopment.sh -c HelloWorld

Creating new ASM Fast Development Projects

bash ASMFastDevelopment.sh --new HelloWorld

The previous command create a new .asm file inside a folder with name provided, open it and develop!

Folder tree generated:

| ~/Linux-Shellcode-Generator/
	|- src/
		|- projects/
			|- HelloWorld/
				|- HelloWorld.asm

Warning: Do not change the .asm file name!. If you need change it, you need to change folder name

Compiling ASM Fast Development Projects

bash ASMFastDevelopment.sh --compile HelloWorld

The previous command generate:

| ~/Linux-Shellcode-Generator/
	|- src/
		|- projects/
			|- HelloWorld/
				|- HelloWorld.asm
				|- HelloWorld.o
				|- HelloWorld [your executable file]

Small help

Registers