ShellcodeTemplate

适用于 Windows x64/x86 的易于修改的 shellcode 模板

它是如何工作的?

该模板很大程度上基于Austin Hudson(又名 SecIdiot)的 TitanLdr 它将项目编译为 PE 可执行文件并提取 .text 部分

例子

shellcode 的入口点如下所示。当然,这可以根据您的需要进行更改。首先,我们需要使用我们自定义编写的 GetModuleHandle 和 GetProcAddress 来初始化所需的库和函数:

  1. SEC( text, B ) VOID Entry( VOID )
  2. {
  3. INSTANCE Instance = { };
  4. Instance.Modules.Kernel32 = TGetModuleHandle( HASH_KERNEL32 );
  5. Instance.Modules.Ntdll = TGetModuleHandle( HASH_NTDLL );
  6. if ( Instance.Modules.Kernel32 != NULL )
  7. {
  8. // Load needed functions
  9. Instance.Win32.LoadLibraryA = TGetProcAddr( Instance.Modules.Kernel32, 0xb7072fdb );
  10. // Load needed Libraries
  11. Instance.Modules.User32 = Instance.Win32.LoadLibraryA( GET_SYMBOL( "User32" ) );
  12. if ( Instance.Modules.User32 != NULL )
  13. {
  14. Instance.Win32.MessageBoxA = TGetProcAddr( Instance.Modules.User32, 0xb303ebb4 );
  15. }
  16. }
  17. // ------ Code ------
  18. Instance.Win32.MessageBoxA( NULL, GET_SYMBOL( "Hello World" ), GET_SYMBOL( "MessageBox Title" ), MB_OK );
  19. }

顺便说一句,你可以看到我们可以在我们的 shellcode 中使用普通字符串。这是因为我们在链接时将 .rdata 部分包含在我们的 shellcode 中。GET_SYMBOL 通过相对于 GetRIP() 的偏移量获取指向函数或字符串的指针:
ShellcodeTemplate:针对Windows x64x86的Shellcode模版工具 - 图1

开始使用

克隆这个项目,你就可以开始了:

  1. git clone https://www.github.com/Cracked5pider/ShellcodeTemplate

接下来,您需要将makefile中的项目名称更改为ShellcodeTemplate您想要的任何名称然后您可以使用make编译项目

  1. make // to compile x64 and x86 make x64 // to compile only x64 make x86 // to compile only x86

Credit

Austin Hudson(又名 SecIdiot)获得了巨大的荣誉!!!