资源简介
PE添加shellcode 添加区段 合并区段 扩大区段 获取信息
代码片段和文件信息
#include
#include
#include
DWORD _ReadFile(IN LPCSTR lpszFile OUT LPVOID* pFileBuffer)
{
FILE* pFile = NULL;
DWORD fileSize = 0;
LPVOID pTempFileBuffer = NULL;
//打开文件
pFile = fopen(lpszFile “rb“);
if (!pFile)
return NULL;
//读取文件大小
fseek(pFile 0 SEEK_END);
fileSize = ftell(pFile);
fseek(pFile 0 SEEK_SET);
//分配缓冲区
pTempFileBuffer = malloc(fileSize);
if (!pTempFileBuffer)
{
fclose(pFile);
return NULL;
}
//将文件数据读取到缓冲区
size_t n = fread(pTempFileBuffer fileSize 1 pFile);
if (!n)
{
free(pTempFileBuffer);
fclose(pFile);
return NULL;
}
//传出参数 关闭文件
*pFileBuffer = pTempFileBuffer;
fclose(pFile);
return fileSize;
}
BOOL NewFileBufferToFile(IN LPVOID pNewFileBuffer IN DWORD dwSize IN LPCSTR lpszFile)
{
//新文件指针是否为NULL
if (pNewFileBuffer == NULL)
return FALSE;
//保存EXE文件
FILE* pFile = fopen(lpszFile “wb“);
if (!pFile)
return FALSE;
DWORD dwFileSize = fwrite(pNewFileBuffer dwSize 1 pFile);
if (!dwFileSize)
{
fclose(pFile);
return FALSE;
}
fclose(pFile);
return TRUE;
}
//给文件加ShellCode
BOOL AddShellCodeByFileBuffer(IN LPVOID pFileBuffer IN DWORD dwFileSize IN DWORD dwSectionIndex OUT LPVOID* pNewFileBuffer)
{
//获取MessageBoxA的地址 每一台机器上都不一样
HMODULE hUser32 = LoadLibraryA(“user32.dll“);
if (!hUser32)
return FALSE;
DWORD MessageboxAAddress = (DWORD)GetProcAddress(hUser32 “MessageBoxA“);
//ShellCode
BYTE messageBuffer[] = “This Is a Test Message!“;
BYTE shellCodeBuffer[22] = { 0x6A0x00 //push 0
0x6A0x00 //push 0
0xB80x000x000x000x00 //mov eax[message]
0x50 //push eax
0x6A0x00 //push 0
0xE80x000x000x000x00
0xE90x000x000x000x00 };
//文件缓冲区指针是否为NULL
if (pFileBuffer == NULL)
return FALSE;
//是否含有MZ标志
if (*((PWORD)pFileBuffer) != IMAGE_DOS_SIGNATURE)
return FALSE;
//是否找到NT头
PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)pFileBuffer;
if (*((PDWORD)((BYTE*)pFileBuffer + pDosHeader->e_lfanew)) != IMAGE_NT_SIGNATURE)
return FALSE;
//申请内存并初始化为0
LPVOID pTempNewFileBuffer = calloc(1 dwFileSize);
if (!pTempNewFileBuffer)
return FALSE;
//Copy一份新的
memcpy(pTempNewFileBuffer pFileBuffer dwFileSize);
//初始化PE结构指针
PIMAGE_NT_HEADERS pNTHeader = (PIMAGE_NT_HEADERS)((BYTE*)pTempNewFileBuffer + pDosHeader->e_lfanew); //NT头指针
PIMAGE_FILE_HEADER pFileHeader = (PIMAGE_FILE_HEADER)((BYTE*)pNTHeader + sizeof(DWORD)); //标准PE头
PIMAGE_OPTIONAL_HEADER pOptionHeader = (PIMAGE_OPTIONAL_HEADER)((BYTE*)pFileHeader + IMAGE_SIZEOF_FILE_HEADER); //可选PE头
PIMAGE_SECTION_HEADER pSectionHeader = (PIMAGE_SECTION_HEADER)((BYTE*)pOptionHeader + pFileHeader->SizeOfOptionalHeader); //区段表头
//定位到指定区段
pSectionHeader += dwSectionIndex;
//计算该段空区大小
DWORD SpaceSize = pSectionHeader->SizeOfRawData - pSectionHeader->Misc.V
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4522 2020-08-31 09:15 PE_Demo.sln
文件 34756 2020-08-30 17:46 PE_AddSection\Debug\main.obj
文件 279 2020-08-30 17:46 PE_AddSection\Debug\PE_AddSection.exe.recipe
文件 621 2020-08-30 17:46 PE_AddSection\Debug\PE_AddSection.log
文件 798 2020-08-30 17:46 PE_AddSection\Debug\PE_AddSection.tlog\CL.command.1.tlog
文件 19928 2020-08-30 17:46 PE_AddSection\Debug\PE_AddSection.tlog\CL.read.1.tlog
文件 588 2020-08-30 17:46 PE_AddSection\Debug\PE_AddSection.tlog\CL.write.1.tlog
文件 1276 2020-08-30 17:46 PE_AddSection\Debug\PE_AddSection.tlog\li
文件 2580 2020-08-30 17:46 PE_AddSection\Debug\PE_AddSection.tlog\li
文件 566 2020-08-30 17:46 PE_AddSection\Debug\PE_AddSection.tlog\li
文件 175 2020-08-30 17:46 PE_AddSection\Debug\PE_AddSection.tlog\PE_AddSection.lastbuildstate
文件 240640 2020-08-30 17:46 PE_AddSection\Debug\vc142.idb
文件 151552 2020-08-30 17:46 PE_AddSection\Debug\vc142.pdb
文件 10259 2020-08-31 09:15 PE_AddSection\main.cpp
文件 7196 2020-08-30 09:04 PE_AddSection\PE_AddSection.vcxproj
文件 966 2020-08-30 09:04 PE_AddSection\PE_AddSection.vcxproj.filters
文件 168 2020-08-30 08:56 PE_AddSection\PE_AddSection.vcxproj.user
文件 32659 2020-08-30 11:25 PE_AddShellCode\Debug\main.obj
文件 281 2020-08-30 11:25 PE_AddShellCode\Debug\PE_AddShellCode.exe.recipe
文件 1697 2020-08-30 11:25 PE_AddShellCode\Debug\PE_AddShellCode.log
文件 798 2020-08-30 11:25 PE_AddShellCode\Debug\PE_AddShellCode.tlog\CL.command.1.tlog
文件 19928 2020-08-30 11:25 PE_AddShellCode\Debug\PE_AddShellCode.tlog\CL.read.1.tlog
文件 600 2020-08-30 11:25 PE_AddShellCode\Debug\PE_AddShellCode.tlog\CL.write.1.tlog
文件 1292 2020-08-30 11:25 PE_AddShellCode\Debug\PE_AddShellCode.tlog\li
文件 2826 2020-08-30 11:25 PE_AddShellCode\Debug\PE_AddShellCode.tlog\li
文件 582 2020-08-30 11:25 PE_AddShellCode\Debug\PE_AddShellCode.tlog\li
文件 175 2020-08-30 11:25 PE_AddShellCode\Debug\PE_AddShellCode.tlog\PE_AddShellCode.lastbuildstate
文件 240640 2020-08-30 11:25 PE_AddShellCode\Debug\vc142.idb
文件 102400 2020-08-30 11:25 PE_AddShellCode\Debug\vc142.pdb
文件 8887 2020-08-30 11:25 PE_AddShellCode\main.c
............此处省略84个文件信息
相关资源
- 数据结构 图的遍历源代码
- 数据结构实验源代码集
- 高性能服务器代码(50_06th_server_thre
- olsr协议代码
- TCP/IP客户端和服务器端源代码,好用
- 代码雨.cpp
- 基于opencv的模板匹配代码
- 交互式计算机图形学 第六版 OpenGL源代
- VC++基于OpenGL模拟的一个3维空间模型
- 数据结构教程李春葆第五版书中例题
- 三次样条插值类源代码!
- 高精度加法(c++代码)
- diy写字机grbl v1.1源代码
- opencv图片扫描以及校正
- opencv手部轮廓识别以及轨迹识别
- ftp工具代码
- opencv2 3D标定.cpp
- C语言常用代码(分章节)
- C语言常用算法源代码
- 吕鑫:VS2015之博大精深的0基础C语言视
- stm32 实现Fatfs对U盘文件操作(main.c)
- c++ 文件操作(读取、写入)
- c++ 刷屏软件代码
- 关于LED制作的源代码合集(38套)
- 基于opencv漫水填充算法综合
- OBD_CAN读取代码(stm32f103)
-
STM32-ba
se64加密源代码 - 谭浩强第五版课件及代码
- 俄罗斯方块(c++控制台代码)
- C++贪吃蛇控制台小游戏代码
评论
共有 条评论