我们编写一个最简单的shellcode加载工具,应用于将本地的shellcode文件执行起来。
shellcode加载器基本功能:
- 通过传入的参数,读取shellcode文件内容;
- 申请与shellcode文件大小相同的内存空间;
- 修改申请的内存,使其具备可读可写可执行的属性;
- 将shellcode文件内容读取到该内存;
- 调用shellcode执行(跳转到该内存首地址并执行)。
#include <stdio.h>
#include <windows.h>
int main(int argc, char* argv[])
{
// 程序运行时必须传入一个目标shellcode文件路径的参数
if (argc == 2)
{
// 读取传入的shellcode文件路径
HANDLE hSCFile = CreateFileA(argv[1], GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if (hSCFile == INVALID_HANDLE_VALUE)
{
return 0;
}
DWORD dwHighSize = 0;
// 获取shellcode文件大小
DWORD dwFileSize = GetFileSize(hSCFile, &