ShellcodeTemplate
适用于 Windows x64/x86 的易于修改的 shellcode 模板
它是如何工作的?
该模板很大程度上基于Austin Hudson(又名 SecIdiot)的 TitanLdr 它将项目编译为 PE 可执行文件并提取 .text 部分
例子
shellcode 的入口点如下所示。当然,这可以根据您的需要进行更改。首先,我们需要使用我们自定义编写的 GetModuleHandle 和 GetProcAddress 来初始化所需的库和函数:
SEC( text, B ) VOID Entry( VOID )
{
INSTANCE Instance = { };
Instance.Modules.Kernel32 = TGetModuleHandle( HASH_KERNEL32 );
Instance.Modules.Ntdll = TGetModuleHandle( HASH_NTDLL );
if ( Instance.Modules.Kernel32 != NULL )
{
// Load needed functions
Instance.Win32.LoadLibraryA = TGetProcAddr( Instance.Modules.Kernel32, 0xb7072fdb );
// Load needed Libraries
Instance.Modules.User32 = Instance.Win32.LoadLibraryA( GET_SYMBOL( "User32" ) );
if ( Instance.Modules.User32 != NULL )
{
Instance.Win32.MessageBoxA = TGetProcAddr( Instance.Modules.User32, 0xb303ebb4 );
}
}
// ------ Code ------
Instance.Win32.MessageBoxA( NULL, GET_SYMBOL( "Hello World" ), GET_SYMBOL( "MessageBox Title" ), MB_OK );
}
顺便说一句,你可以看到我们可以在我们的 shellcode 中使用普通字符串。这是因为我们在链接时将 .rdata 部分包含在我们的 shellcode 中。GET_SYMBOL 通过相对于 GetRIP() 的偏移量获取指向函数或字符串的指针:
开始使用
克隆这个项目,你就可以开始了:
git clone https://www.github.com/Cracked5pider/ShellcodeTemplate
接下来,您需要将makefile中的项目名称更改为ShellcodeTemplate您想要的任何名称然后您可以使用make编译项目
make // to compile x64 and x86 make x64 // to compile only x64 make x86 // to compile only x86
Credit
Austin Hudson(又名 SecIdiot)获得了巨大的荣誉!!!