|
@@ -0,0 +1,47 @@
|
|
|
+# Shellc0der
|
|
|
+
|
|
|
+## Installation
|
|
|
+
|
|
|
+```
|
|
|
+$ git clone https://git.swrzm.de/msc/shellc0der
|
|
|
+$ cd shellc0der
|
|
|
+$ cargo run
|
|
|
+```
|
|
|
+
|
|
|
+## Usage
|
|
|
+
|
|
|
+```
|
|
|
+shellc0der -i <input.bin> -o <output.bin>
|
|
|
+```
|
|
|
+
|
|
|
+* The input/output files are raw (non-encoded) shellcode
|
|
|
+
|
|
|
+
|
|
|
+## Function
|
|
|
+
|
|
|
+The basic structure of the encoded shellcode looks like this:
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+1) The initial shellcode gets encoded via XOR, in the following way:
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+_Note:_ Every Block is a single byte
|
|
|
+
|
|
|
+2) A random decoder-stub is generated, that is setup in front of the encoded payload
|
|
|
+3) The registers used in the stub are randomly generated on each run
|
|
|
+4) Additionally, dead code snippets (random snippets & random # of snippets) are inserted into the stub
|
|
|
+5) Steps 1-4 can be repeated for arbitrary rounds, as seen below:
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+## Credits
|
|
|
+
|
|
|
+The inspiration came from:
|
|
|
+
|
|
|
+* ShikataGaNai by Metasploit-Framework
|
|
|
+* [https://github.com/EgeBalci/sgn](https://github.com/EgeBalci/sgn)
|
|
|
+
|