天津河东做网站哪家好,云南建设厅网站工程师,大连开发区招聘网站,丹东 网站开发我最近在做一个关于shellcode入门和开发的专题课#x1f469;#x1f3fb;#x1f4bb;#xff0c;主要面向对网络安全技术感兴趣的小伙伴。这是视频版内容对应的文字版材料#xff0c;内容里面的每一个环境我都亲自测试实操过的记录#xff0c;有需要的小伙伴可以参考… 我最近在做一个关于shellcode入门和开发的专题课主要面向对网络安全技术感兴趣的小伙伴。这是视频版内容对应的文字版材料内容里面的每一个环境我都亲自测试实操过的记录有需要的小伙伴可以参考。 我的个人主页https://imbyter.com 我们编写一个最简单的shellcode加载工具应用于将本地的shellcode文件执行起来。
shellcode加载器基本功能
通过传入的参数读取shellcode文件内容申请与shellcode文件大小相同的内存空间修改申请的内存使其具备可读可写可执行的属性将shellcode文件内容读取到该内存调用shellcode执行跳转到该内存首地址并执行。
#include stdio.h
#include windows.hint 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, dwHighSize);DWORD flOldProtect;DWORD dwAlreadyRead 0;DWORD dwReadSum 0;// 分配堆空间LPVOID g_pShellcode HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwFileSize);// 将分配的内存设置为可读可写可执行的属性VirtualProtect(g_pShellcode, dwFileSize, PAGE_EXECUTE_READWRITE, flOldProtect);// 读取shellcode文件内存到内存空间ReadFile(hSCFile, (char*)g_pShellcode, dwFileSize, dwAlreadyRead, NULL);CloseHandle(hSCFile);/* 以下方式调用shellcode用仅支持x86版本_asm{pushadcall g_pShellcodepopad}*//* 以下方式调用shellcode能够x86和x64通用 */typedef void (*FN_Shellcode)();FN_Shellcode fn_Shellcode (FN_Shellcode)g_pShellcode;// 执行shellcodefn_Shellcode();puts(the shellcode operation is successful!);system(pause);}else{puts(e.g: TestShellcode.exe shellcode file path);system(pause);}
}
两种运行方式 直接将目标shellcode文件拖到加载器exe中执行 通过cmd命令行方式 如果有任何问题可以在我们的知识社群中提问和沟通交流
一个人走得再快不如一群人走得更远