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