# EasyShellCode **Repository Path**: netkid0011/EasyShellCode ## Basic Information - **Project Name**: EasyShellCode - **Description**: 提供简单的C++编写ShellCode的解决方案 - **Primary Language**: C++ - **License**: MPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 9 - **Created**: 2020-06-24 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EasyShellCode #### 介绍 提供简单的C++编写ShellCode的解决方案 需要使用VS 2017及以上编译 #### 安装教程 直接打开项目工程编译即可。 #### 使用说明 - 通过使用C++11的decltype和C++14的constexpr使编写ShellCode像编写普通代码一样简单成为了可能 - 入口函数为:EasyShellCodeMain,简单代码直接写到这个函数里面就可以 - 支持多文件,直接添加文件,注意文件名以【26个大写字母开头】 - 编译出来直接引用Code.h(.\Output32\EasyShellCode\Release\Code.h)即可。 #### 注意事项 1. 所有字符串依然需要使用:`char out[] = { 'a', 'b' , 'c', '\0' };` 形式。 2. 所有的API使用 API(KERNEL32, LoadLibraryA) 这样的形式 其中KERNEL32是导出dll的名字(不用加.dll) LoadLibraryA是要调用的函数 ``` #include "Code.h" typedef DWORD (WINAPI* TStartFun)(LPVOID lpParam); int main() { PBYTE lpBuffer = (PBYTE)VirtualAlloc(0, sizeof(g_ShellCode), MEM_COMMIT,PAGE_EXECUTE_READWRITE); CopyMemory(lpBuffer, g_ShellCode, sizeof(g_ShellCode)); return ((TStartFun)lpBuffer)(0); } ```