Составители:
Рубрика:
Hdr->OptHdr.NumberOfDataDirectories = 16;
// TEXT section
Hdr->TEXT_SECTION.PointerToRelocations = 0;
Hdr->TEXT_SECTION.PointerToLinenumbers = 0;
Hdr->TEXT_SECTION.NumberOfRelocations = 0;
Hdr->TEXT_SECTION.NumberOfLinenumbers = 0;
Hdr->TEXT_SECTION.Characteristics = 0x60000020;
// CLI section
Hdr->CLI_SECTION.PointerToRelocations = 0;
Hdr->CLI_SECTION.PointerToLinenumbers = 0;
Hdr->CLI_SECTION.NumberOfRelocations = 0;
Hdr->CLI_SECTION.NumberOfLinenumbers = 0;
Hdr->CLI_SECTION.Characteristics = 0x60000020;
// .RELOC section
Hdr->RELOC_SECTION.PointerToRelocations = 0;
Hdr->RELOC_SECTION.PointerToLinenumbers = 0;
Hdr->RELOC_SECTION.NumberOfRelocations = 0;
Hdr->RELOC_SECTION.NumberOfLinenumbers = 0;
Hdr->RELOC_SECTION.Characteristics = 0x42000040;
// initialize to 0
memset(&Hdr->STUB1.RVA, 0, SIZEOF_DATA_DIRECTORY);
memset(Hdr->STUB2, 0, 3 * SIZEOF_DATA_DIRECTORY);
memset(Hdr->STUB3, 0, 6 * SIZEOF_DATA_DIRECTORY);
memset(&Hdr->STUB4.RVA, 0, SIZEOF_DATA_DIRECTORY);
memset(&Hdr->STUB5.RVA, 0, SIZEOF_DATA_DIRECTORY);
};
// initialize HEADERS structure
void make_headers(FILE* file ,PINPUT_PARAMETERS inP){
struct HEADERS Hdr;
char * image;
make_headers_const(&Hdr);
Hdr.PeHdr.NumberOfSections = 3;
Hdr.PeHdr.TimeDateStamp = (long)time(NULL);
Исходный код программы pegen
283
0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0x0E, 0x1F, 0xBA, 0x0E, 0x00, 0xB4, 0x09, 0xCD,
0x21, 0xB8, 0x01, 0x4C, 0xCD, 0x21, 0x54, 0x68,
0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72,
0x61, 0x6D, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F,
0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x75, 0x6E,
0x20, 0x69, 0x6E, 0x20, 0x44, 0x4F, 0x53, 0x20,
0x6D, 0x6F, 0x64, 0x65, 0x2E, 0x0D, 0x0D, 0x0A,
0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// initialize constant fields in HEADERS structure
void make_headers_const(PHEADERS Hdr){
memcpy(Hdr->ms_dos_header, msdos_header, 128);
Hdr->signature = 0x00004550;
Hdr->PeHdr.Machine = IMAGE_FILE_MACHINE_I386;
Hdr->PeHdr.PointerToSymbolTable = 0;
Hdr->PeHdr.NumberOfSymbols = 0;
Hdr->PeHdr.OptionalHeaderSize = 0xe0;
// Optional Header
Hdr->OptHdr.Magic = 0x010B;
Hdr->OptHdr.LMajor = 6;
Hdr->OptHdr.LMinor = 0;
Hdr->OptHdr.SizeOfUninitializedData = 0;
Hdr->OptHdr.SectionAlignment = SECTION_ALIGNMENT;
Hdr->OptHdr.OSMajor = 4;
Hdr->OptHdr.OSMinor = 0;
Hdr->OptHdr.UserMajor = 0;
Hdr->OptHdr.UserMinor = 0;
Hdr->OptHdr.SubsysMajor = 4;
Hdr->OptHdr.SubsysMinor = 0;
Hdr->OptHdr.Reserved = 0;
Hdr->OptHdr.FileCheckSum = 0;
Hdr->OptHdr.DllFlags = 0x400;
Hdr->OptHdr.StackReserveSize = 0x100000;
Hdr->OptHdr.StackCommitSize = 0x1000;
Hdr->OptHdr.HeapReserveSize = 0x100000;
Hdr->OptHdr.HeapCommitSize = 0x1000;
Hdr->OptHdr.LoaderFlags = 0;
282
CIL и системное программирование в Microsoft .NET
282 CIL и системное программирование в Microsoft .NET Исходный код программы pegen 283 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, Hdr->OptHdr.NumberOfDataDirectories = 16; 0x0E, 0x1F, 0xBA, 0x0E, 0x00, 0xB4, 0x09, 0xCD, 0x21, 0xB8, 0x01, 0x4C, 0xCD, 0x21, 0x54, 0x68, // TEXT section 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, Hdr->TEXT_SECTION.PointerToRelocations = 0; 0x61, 0x6D, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, Hdr->TEXT_SECTION.PointerToLinenumbers = 0; 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x75, 0x6E, Hdr->TEXT_SECTION.NumberOfRelocations = 0; 0x20, 0x69, 0x6E, 0x20, 0x44, 0x4F, 0x53, 0x20, Hdr->TEXT_SECTION.NumberOfLinenumbers = 0; 0x6D, 0x6F, 0x64, 0x65, 0x2E, 0x0D, 0x0D, 0x0A, Hdr->TEXT_SECTION.Characteristics = 0x60000020; 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; // CLI section Hdr->CLI_SECTION.PointerToRelocations = 0; // initialize constant fields in HEADERS structure Hdr->CLI_SECTION.PointerToLinenumbers = 0; void make_headers_const(PHEADERS Hdr){ Hdr->CLI_SECTION.NumberOfRelocations = 0; memcpy(Hdr->ms_dos_header, msdos_header, 128); Hdr->CLI_SECTION.NumberOfLinenumbers = 0; Hdr->CLI_SECTION.Characteristics = 0x60000020; Hdr->signature = 0x00004550; // .RELOC section Hdr->PeHdr.Machine = IMAGE_FILE_MACHINE_I386; Hdr->RELOC_SECTION.PointerToRelocations = 0; Hdr->PeHdr.PointerToSymbolTable = 0; Hdr->RELOC_SECTION.PointerToLinenumbers = 0; Hdr->PeHdr.NumberOfSymbols = 0; Hdr->RELOC_SECTION.NumberOfRelocations = 0; Hdr->PeHdr.OptionalHeaderSize = 0xe0; Hdr->RELOC_SECTION.NumberOfLinenumbers = 0; Hdr->RELOC_SECTION.Characteristics = 0x42000040; // Optional Header Hdr->OptHdr.Magic = 0x010B; // initialize to 0 Hdr->OptHdr.LMajor = 6; memset(&Hdr->STUB1.RVA, 0, SIZEOF_DATA_DIRECTORY); Hdr->OptHdr.LMinor = 0; memset(Hdr->STUB2, 0, 3 * SIZEOF_DATA_DIRECTORY); Hdr->OptHdr.SizeOfUninitializedData = 0; memset(Hdr->STUB3, 0, 6 * SIZEOF_DATA_DIRECTORY); Hdr->OptHdr.SectionAlignment = SECTION_ALIGNMENT; memset(&Hdr->STUB4.RVA, 0, SIZEOF_DATA_DIRECTORY); Hdr->OptHdr.OSMajor = 4; memset(&Hdr->STUB5.RVA, 0, SIZEOF_DATA_DIRECTORY); Hdr->OptHdr.OSMinor = 0; Hdr->OptHdr.UserMajor = 0; }; Hdr->OptHdr.UserMinor = 0; Hdr->OptHdr.SubsysMajor = 4; // initialize HEADERS structure Hdr->OptHdr.SubsysMinor = 0; void make_headers(FILE* file ,PINPUT_PARAMETERS inP){ Hdr->OptHdr.Reserved = 0; Hdr->OptHdr.FileCheckSum = 0; struct HEADERS Hdr; Hdr->OptHdr.DllFlags = 0x400; char * image; Hdr->OptHdr.StackReserveSize = 0x100000; Hdr->OptHdr.StackCommitSize = 0x1000; make_headers_const(&Hdr); Hdr->OptHdr.HeapReserveSize = 0x100000; Hdr.PeHdr.NumberOfSections = 3; Hdr->OptHdr.HeapCommitSize = 0x1000; Hdr.PeHdr.TimeDateStamp = (long)time(NULL); Hdr->OptHdr.LoaderFlags = 0;
Страницы
- « первая
- ‹ предыдущая
- …
- 146
- 147
- 148
- 149
- 150
- …
- следующая ›
- последняя »