Составители:
Рубрика:
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
- …
- следующая ›
- последняя »
