Составители:
Рубрика:
unsigned char *metadata;
unsigned char *cilcode;
unsigned long SizeOfMetadata;
unsigned long SizeOfCilCode;
unsigned long ImageBase;
unsigned long FileAlignment;
unsigned long EntryPointToken;
unsigned short Subsystem;
};
typedef struct INPUT_PARAMETERS *PINPUT_PARAMETERS;
void make_file (FILE *file, PINPUT_PARAMETERS inP);
// Struct IMAGE_DATA_DIRECTORY
struct IMAGE_DATA_DIRECTORY {
unsigned long RVA;
unsigned long Size;
};
typedef struct IMAGE_DATA_DIRECTORY *PIMAGE_DATA_DIRECTORY;
struct IMAGE_SECTION_HEADER {
unsigned char Name[8];
unsigned long VirtualSize;
unsigned long VirtualAddress;
unsigned long SizeOfRawData;
unsigned long PointerToRawData;
unsigned long PointerToRelocations;
unsigned long PointerToLinenumbers;
unsigned short NumberOfRelocations;
unsigned short NumberOfLinenumbers;
unsigned long Characteristics;
};
struct HEADERS {
char ms_dos_header[128]; // MS-DOS header
unsigned long signature; // PE signature
struct _IMAGE_FILE_HEADER { // PE header
Исходный код программы pegen
277
params->SizeOfMetadata + params->SizeOfCilCode
#define SIZEOF_CLI_HEADER \
sizeof(struct IMAGE_COR20_HEADER)
#define SIZEOF_RELOC_NOTALIGNED \
sizeof(struct RELOC_SECTION)
#define SIZEOF_DATA_DIRECTORY \
sizeof(struct IMAGE_DATA_DIRECTORY)
// RVA of section
#define RVA_OF_TEXT \
align(sizeof(struct HEADERS), SECTION_ALIGNMENT)
#define RVA_OF_CLI(params) \
RVA_OF_TEXT + \
align(params->SizeOfMetadata + params->SizeOfCilCode,
SECTION_ALIGNMENT)
#define RVA_OF_RELOC(params) \
RVA_OF_CLI(params) + SIZEOF_CLI_M
#define TYPE_OFFSET(a,b) \
(a*0x1000 | b)
#define OFFSETOF(s,m) \
(size_t)&(((s *)0)->m)
#endif
A.2. pe.h
#ifndef PE_H
#include <stdio.h>
// Block of input parameters
struct INPUT_PARAMETERS {
unsigned long Type;
276
CIL и системное программирование в Microsoft .NET
276 CIL и системное программирование в Microsoft .NET Исходный код программы pegen 277
params->SizeOfMetadata + params->SizeOfCilCode unsigned char *metadata;
unsigned char *cilcode;
#define SIZEOF_CLI_HEADER \
sizeof(struct IMAGE_COR20_HEADER) unsigned long SizeOfMetadata;
unsigned long SizeOfCilCode;
#define SIZEOF_RELOC_NOTALIGNED \
sizeof(struct RELOC_SECTION) unsigned long ImageBase;
unsigned long FileAlignment;
#define SIZEOF_DATA_DIRECTORY \ unsigned long EntryPointToken;
sizeof(struct IMAGE_DATA_DIRECTORY) unsigned short Subsystem;
};
// RVA of section typedef struct INPUT_PARAMETERS *PINPUT_PARAMETERS;
#define RVA_OF_TEXT \
align(sizeof(struct HEADERS), SECTION_ALIGNMENT) void make_file (FILE *file, PINPUT_PARAMETERS inP);
#define RVA_OF_CLI(params) \ // Struct IMAGE_DATA_DIRECTORY
RVA_OF_TEXT + \ struct IMAGE_DATA_DIRECTORY {
align(params->SizeOfMetadata + params->SizeOfCilCode, unsigned long RVA;
SECTION_ALIGNMENT) unsigned long Size;
};
#define RVA_OF_RELOC(params) \
RVA_OF_CLI(params) + SIZEOF_CLI_M typedef struct IMAGE_DATA_DIRECTORY *PIMAGE_DATA_DIRECTORY;
#define TYPE_OFFSET(a,b) \ struct IMAGE_SECTION_HEADER {
(a*0x1000 | b) unsigned char Name[8];
unsigned long VirtualSize;
#define OFFSETOF(s,m) \ unsigned long VirtualAddress;
(size_t)&(((s *)0)->m) unsigned long SizeOfRawData;
unsigned long PointerToRawData;
#endif unsigned long PointerToRelocations;
unsigned long PointerToLinenumbers;
unsigned short NumberOfRelocations;
A.2. pe.h unsigned short NumberOfLinenumbers;
unsigned long Characteristics;
};
#ifndef PE_H
struct HEADERS {
#include
char ms_dos_header[128]; // MS-DOS header
// Block of input parameters unsigned long signature; // PE signature
struct INPUT_PARAMETERS {
unsigned long Type; struct _IMAGE_FILE_HEADER { // PE header
Страницы
- « первая
- ‹ предыдущая
- …
- 143
- 144
- 145
- 146
- 147
- …
- следующая ›
- последняя »
