bool IniParser::ReadFromFile(const string& filename) { string content; if(FileGetContent(filename,content)) return ReadFromString(content); return false; }
// // MAIN // int main(int argc, char **argv) { // Load the file into memory unsigned char * data; size_t s; data = FileGetContent(argv[1], &s); if(data == NULL) { fprintf(stderr, "file not found\n"); return 1; } // Check if this is a PE file if(*(short *)data != *(short *)"MZ") { puts("To nie jest plik PE\n"); return 2; } // HEADERS IMAGE_DOS_HEADER *DosHeader = (IMAGE_DOS_HEADER *)data; IMAGE_NT_HEADERS *NtHeaders = (IMAGE_NT_HEADERS *)(data + DosHeader->e_lfanew); IMAGE_SECTION_HEADER *SectionHeader = (IMAGE_SECTION_HEADER *)(data + DosHeader->e_lfanew + sizeof(IMAGE_NT_HEADERS)); // INFORMATION OUTPUT int i; printf("Adres naglowka PE: 0x%lx\n", DosHeader->e_lfanew); printf("Ilosc sekcji: %d\n", i = NtHeaders->FileHeader.NumberOfSections); while(i-- > 0) { printf("Nazwa sekcji: %s\n", SectionHeader++->Name); } printf("Adres wejscia (EP): 0x%x\n", NtHeaders->OptionalHeader.AddressOfEntryPoint); printf("ImageBase: 0x%x\n", NtHeaders->OptionalHeader.ImageBase); printf("Subsystem: %d\n", NtHeaders->OptionalHeader.Subsystem); return 0; }