资源简介

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\link.command.1.tlog

     文件       2580  2020-08-30 17:46  PE_AddSection\Debug\PE_AddSection.tlog\link.read.1.tlog

     文件        566  2020-08-30 17:46  PE_AddSection\Debug\PE_AddSection.tlog\link.write.1.tlog

     文件        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\link.command.1.tlog

     文件       2826  2020-08-30 11:25  PE_AddShellCode\Debug\PE_AddShellCode.tlog\link.read.1.tlog

     文件        582  2020-08-30 11:25  PE_AddShellCode\Debug\PE_AddShellCode.tlog\link.write.1.tlog

     文件        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个文件信息

评论

共有 条评论