Skip to content

Latest commit

 

History

History
39 lines (33 loc) · 2.05 KB

README.md

File metadata and controls

39 lines (33 loc) · 2.05 KB

sc2elf

Simple dotnet Native AOT app that uses [LibObjectFile] to convert shellcode to ELF.
Both 32-bit and 64-bit (x86, x64) shellcode is supported -> resulting in 32-bit or 64-bit ELF.
[Releases] are compiled for both linux-x64 and win-x64.

Description

It is compiled to Native AOT format to demonstrate how awesome it is (still, it was a pain as some dependency uses reflection that gets trimmed if we won't trick it :D). The [release] binaries available to download are native binaries without any dotnet dependency! (so just run and enjoy)

Native AOT compiled, using dotnet SDK 8.0.100-preview.3.23178.7
Dotnet SDK 8+ was chosen because of producing much smaller binaries.

Native AOT compilation is supported from the dotnet 7 version. If you want to use dotnet 7 for building, modify the project file to target net7.0 -> building is much easier for dotnet 7.

Building on Windows using dotnet SDK 8+:

Pretty easy:

  • Install or update to the latest Visual Studio (preview).
  • Install dotnet 8+ SDK.
  • Open .sln and restore nugets (LibObjectFile, CommandLineParser) -> should be automatic if you configured the nuget URL.
  • VS Terminale - "dotnet publish -r win-x64 -c Release"

Building on Linux using dotnet SDK 8+:

  • I don't wanna talk about it; just use the release binaries :) (as dotnet SDK 8+ is not available via the package manager, it is a pain in the ass)

Usage

-p, --path [Required. Path to shellcode file]

-a, --architecture [Required. Architecture: 32 or 64 (depending on the shellcode)]

-o, --offset [Optional. Start offset of the shellcode (default 0)]

--help [Display this help screen]

--version [Display version information]

Example

Convert shellcode to 32-bit ELF (shellcode Start Offset set to 66th byte):
sc2elf -a 32 -o 66 -p C:\shellcode.bin