-
大小: 37KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-06-07
- 語言: 其他
- 標(biāo)簽:
資源簡介
PE文件自動添加節(jié)區(qū),并彈出一個簡單的對話框(可以自己修改成其它的東西)

代碼片段和文件信息
#include?
#include?
#include?
#include?
IMAGE_NT_HEADERS Nt_Header;
int?main(int?argc?char?*argv[])
{
printf(“ **********************************************************\n“);
printf(“ *******請先將原來的文件拷貝幾份,以免丟失。***************\n“);
printf(“ **********************************************************\n\n\n“);
if(argc<=1)
{
printf(“ 錯誤提示:要輸入文件路徑(一次輸一個)\n\n“);
exit(0);
}
????FILE?*fp?=?fopen(argv[1]“rb+“);
????if(!fp)
????{
????????perror(“unable?to?open?file“);
????????return?-1;
????}
//long?fileSize?=?(fseek(fp0SEEK_END)ftell(fp));
IMAGE_DOS_HEADER Dos_Header;
IMAGE_FILE_HEADER File_Header;
IMAGE_OPTIONAL_HEADER32 Option_Header;
IMAGE_SECTION_HEADER Section_Header;
//***************************************************
//?讀取DOS?Header
fread(&Dos_Headersizeof(Dos_Header)1fp);
DWORD?p_Nt=Dos_Header.e_lfanew; //保存Nt頭偏移
//讀取?file_headr
fseek(fpp_Nt+4L0);
fread(&File_Headersizeof(File_Header)1fp);
WORD?NumberOfSections=File_Header.NumberOfSections;??//保存節(jié)表的個數(shù)
//讀取?option_header
fseek(fpp_Nt+4+sizeof(File_Header)0);
fread(&Option_Headersizeof(Option_Header)1fp);
DWORD?Imagebase=Option_Header.Imagebase;
DWORD?AddressOfEntryPoint=Option_Header.AddressOfEntryPoint;
//節(jié)表所在的偏移??內(nèi)存對齊??文件對齊??文件大?。▋?nèi)存中)
DWORD?SectionAlignment=Option_Header.SectionAlignment; //內(nèi)存對齊
DWORD?FileAlignment=Option_Header.FileAlignment; //文件對齊
DWORD?SizeOfImage=Option_Header.SizeOfImage; //文件大小
DWORD?p_SectionTable=Dos_Header.e_lfanew+sizeof(Nt_Header); //節(jié)表偏移
DWORD?P_NewSectionTable=p_SectionTable+NumberOfSections*sizeof(Section_Header);??//新增的節(jié)表的偏移
//讀取最后一個節(jié)表
fseek(fpp_SectionTable+(NumberOfSections-1)*sizeof(Section_Header)0);??
fread(&Section_Headersizeof(Section_Header)1fp);??
//定義新的變量
//定義新的變量
WORD?New_NumberOfSections=NumberOfSections+1;
DWORD?New_SizeOfImage=Option_Header.SizeOfImage+0x1000;??//擴大0x1000
//新的節(jié)表
char?Name[8]=“.MySect“;
DWORD?New_VirtualSize=0x1000;
DWORD?New_VirtualAddress=Section_Header.VirtualAddress+0x1000;
DWORD?New_SizeOfRawData=0x1000;
DWORD?New_PointerToRawData=Section_Header.PointerToRawData+0x1000;
DWORD?New_PointerToRelocations=0;
DWORD?New_PointerToLineNumbers=0;
WORD??New_NumberOfRelocations=0;
WORD??New_NumberOfLineNumbers=0;
DWORD?New_Characteristics=0xE0000000;
//開始寫入數(shù)據(jù)
//寫節(jié)表個數(shù)
fseek(fpp_Nt+6L0);
fwrite(&New_NumberOfSections21fp);
//寫文件大小
fseek(fpp_Nt+0x50L0);
fwrite(&New_SizeOfImage41fp);
//寫節(jié)表
fseek(fpP_NewSectionTable0);
fwrite(Name81fp);
fwrite(&New_VirtualSize41fp);
fwrite(&New_VirtualAddress41fp);
fwrite(&New_SizeOfRawData41fp);
fwrite(&New_PointerToRawData41fp);
fwrite(&New_PointerToRelocations41fp);
fwrite(&New_PointerToLineNumbers41fp);
fwrite(&New_NumberOfRelocations21fp);
fwrite(&New_NumberOfLineNumbers21fp);
fwrite(&New_Characteristics41fp);
//找Imagebase和AddressOfEntryPoint
DWORD?New_Address
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????5732??2017-11-28?16:52??PE節(jié)區(qū)添加\Section_Write.cpp
?????文件??????180316??2017-11-28?16:52??PE節(jié)區(qū)添加\Section_Write.exe
?????目錄???????????0??2017-12-03?00:27??PE節(jié)區(qū)添加\
評論
共有 條評論