m1dw0rd

Untitled

Jul 3rd, 2022
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.07 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<windows.h>
  3.  
  4. int main(int argc, char* argv[]) {
  5.  
  6.     DWORD bytesRead = NULL;
  7.  
  8.     HANDLE hFile = CreateFileA(argv[1], GENERIC_ALL, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
  9.     DWORD fileSize = GetFileSize(hFile, NULL);
  10.     LPVOID lpFile = HeapAlloc(GetProcessHeap(), 0, fileSize);
  11.  
  12.  
  13.     ReadFile(hFile, lpFile, fileSize, &bytesRead, NULL);
  14.     printf("\n\n[*] PE PATH : \"%s\" \n",argv[1]);
  15.     printf("\n ----------------------------------------------------------\n");
  16.     printf("|                  DOS HEADER                              |\n");
  17.     printf(" ----------------------------------------------------------\n");
  18.     IMAGE_DOS_HEADER* dosHeader = (IMAGE_DOS_HEADER*)lpFile;
  19.     printf("e_magic:\t%x\t\tSIZE : WORD\n", dosHeader->e_magic);
  20.     printf("e_cblp:\t\t%x\t\tSIZE : WORD\n", dosHeader->e_cblp);
  21.     printf("e_cp:\t\t%x\t\tSIZE : WORD\n", dosHeader->e_cp);
  22.     printf("e_crlc:\t\t%x\t\tSIZE : WORD\n", dosHeader->e_crlc);
  23.     printf("e_minalloc:\t%x\t\tSIZE : WORD\n", dosHeader->e_minalloc);
  24.     printf("e_maxalloc:\t%x\t\tSIZE : WORD\n", dosHeader->e_maxalloc);
  25.     printf("e_ss:\t\t%x\t\tSIZE : WORD\n", dosHeader->e_ss);
  26.     printf("e_sp:\t\t%x\t\tSIZE : WORD\n", dosHeader->e_sp);
  27.     printf("e_csum:\t\t%x\t\tSIZE : WORD\n", dosHeader->e_csum);
  28.     printf("e_ip:\t\t%x\t\tSIZE : WORD\n", dosHeader->e_ip);
  29.     printf("e_cs:\t\t%x\t\tSIZE : WORD\n", dosHeader->e_cs);
  30.     printf("e_lfarlc:\t%x\t\tSIZE : WORD\n", dosHeader->e_lfarlc);
  31.     printf("e_ovno:\t\t%x\t\tSIZE : WORD\n", dosHeader->e_ovno);
  32.     printf("e_res1: \t%x\t\tSIZE : WORD\n", dosHeader->e_res[0]);
  33.     printf("    \t%x\t\tSIZE : WORD\n", dosHeader->e_res[1]);
  34.     printf("        \t%x\t\tSIZE : WORD\n", dosHeader->e_res[2]);
  35.     printf("        \t%x\t\tSIZE : WORD\n", dosHeader->e_res[3]);
  36.     printf("e_oemid:\t%x\t\tSIZE : WORD\n", dosHeader->e_oemid);
  37.     printf("e_oeminfo:\t%x\t\tSIZE : WORD\n", dosHeader->e_oeminfo);
  38.     printf("e_res2:\t\t%x\t\tSIZE : WORD\n", dosHeader->e_res2[0]);
  39.     printf("       \t\t%x\t\tSIZE : WORD\n", dosHeader->e_res2[1]);
  40.     printf("       \t\t%x\t\tSIZE : WORD\n", dosHeader->e_res2[2]);
  41.     printf("       \t\t%x\t\tSIZE : WORD\n", dosHeader->e_res2[3]);
  42.     printf("       \t\t%x\t\tSIZE : WORD\n", dosHeader->e_res2[4]);
  43.     printf("       \t\t%x\t\tSIZE : WORD\n", dosHeader->e_res2[5]);
  44.     printf("       \t\t%x\t\tSIZE : WORD\n", dosHeader->e_res2[6]);
  45.     printf("       \t\t%x\t\tSIZE : WORD\n", dosHeader->e_res2[7]);
  46.     printf("       \t\t%x\t\tSIZE : WORD\n", dosHeader->e_res2[8]);
  47.     printf("       \t\t%x\t\tSIZE : WORD\n", dosHeader->e_res2[9]);
  48.     printf("e_lfanew:\t%x\t\tSIZE : LONG\n", dosHeader->e_lfanew);
  49.  
  50.  
  51.     IMAGE_NT_HEADERS* ntHeaders = (IMAGE_NT_HEADERS*)((DWORD_PTR)lpFile + (DWORD)dosHeader->e_lfanew);
  52.     printf("\n ----------------------------------------------------------\n");
  53.     printf("|                  NT HEADER                              |\n");
  54.     printf(" ----------------------------------------------------------\n");
  55.     printf("Signature:\t%x\t\t\tSIZE : DWORD\n", ntHeaders->Signature);
  56.    
  57.     printf("FileHeader:\n");
  58.     printf("\tMachine:\t\t%x\t\tSIZE: WORD\n", ntHeaders->FileHeader.Machine);
  59.     printf("\tNumberOfSections:\t%d\t\tSIZE: WORD\n", ntHeaders->FileHeader.NumberOfSections);
  60.     printf("\tTimeDateStamp:\t\t%x\tSIZE: DWORD\n", ntHeaders->FileHeader.TimeDateStamp);
  61.     printf("\tPointerToSymbolTable:\t%x\t\tSIZE: DWORD\n", ntHeaders->FileHeader.PointerToSymbolTable);
  62.     printf("\tNumberOfSymbols:\t%x\t\tSIZE: DWORD\n", ntHeaders->FileHeader.NumberOfSymbols);
  63.     printf("\tSizeOfOptionalHeader:\t%x\t\tSIZE: WORD\n", ntHeaders->FileHeader.SizeOfOptionalHeader);
  64.     printf("\tCharacteristics:\t%x\t\tSIZE: WORD\n", ntHeaders->FileHeader.Characteristics);
  65.  
  66.     IMAGE_OPTIONAL_HEADER* imgOptHeader = &ntHeaders->OptionalHeader;
  67.     printf("OptionalHeader:\n");
  68.     printf("\tMagic:\t\t\t%x\t\tSIZE: WORD\n", imgOptHeader->Magic);
  69.     printf("\tMajorLinkerVersion:\t%x\t\tSIZE: BYTE\n", imgOptHeader->MajorLinkerVersion);
  70.     printf("\tMinorLinkerVersion:\t%x\t\tSIZE: BYTE\n", imgOptHeader->MinorLinkerVersion);
  71.     printf("\tSizeOfCode:\t\t%x\t\tSIZE: DWORD\n", imgOptHeader->SizeOfCode);
  72.     printf("\tSizeOfInitializedData:\t%x\t\tSIZE: DWORD\n", imgOptHeader->SizeOfInitializedData);
  73.     printf("\tSizeOfUninitializedData:%x\t\tSIZE: DWORD\n", imgOptHeader->SizeOfUninitializedData);
  74.     printf("\tAddressOfEntryPoint:\t%x\t\tSIZE: DWORD\n", imgOptHeader->AddressOfEntryPoint);
  75.     printf("\tBaseOfCode:\t\t%x\t\tSIZE: DWORD\n", imgOptHeader->BaseOfCode);
  76.     printf("\tImageBase:\t\t%x\tSIZE: DWORD\n", imgOptHeader->ImageBase);
  77.     printf("\tSectionAlignment:\t%x\t\tSIZE: DWORD\n", imgOptHeader->SectionAlignment);
  78.     printf("\tFileAlignment:\t\t%x\t\tSIZE: DWORD\n", imgOptHeader->FileAlignment);
  79.     printf("\tMajorOperatingSystemVersion:\t%x\tSIZE: WORD\n", imgOptHeader->MajorOperatingSystemVersion);
  80.     printf("\tMinorOperatingSystemVersion:\t%x\tSIZE: WORD\n", imgOptHeader->MinorOperatingSystemVersion);
  81.     printf("\tMajorImageVersion:\t%x\t\tSIZE: WORD\n", imgOptHeader->MajorImageVersion);
  82.     printf("\tMinorImageVersion:\t%x\t\tSIZE: WORD\n", imgOptHeader->MinorImageVersion);
  83.     printf("\tMajorSubsystemVersion:\t%x\t\tSIZE: WORD\n", imgOptHeader->MajorSubsystemVersion);
  84.     printf("\tMinorSubsystemVersion:\t%x\t\tSIZE: WORD\n", imgOptHeader->MinorSubsystemVersion);
  85.     printf("\tWin32VersionValue:\t%x\t\tSIZE: DWORD\n", imgOptHeader->Win32VersionValue);
  86.     printf("\tSizeOfImage:\t\t%x\t\tSIZE: DWORD\n", imgOptHeader->SizeOfImage);
  87.     printf("\tSizeOfHeaders:\t\t%x\t\tSIZE: DWORD\n", imgOptHeader->SizeOfHeaders);
  88.     printf("\tCheckSum:\t\t%x\t\tSIZE: DWORD\n", imgOptHeader->CheckSum);
  89.     printf("\tSubsystem:\t\t%x\t\tSIZE: WORD\n", imgOptHeader->Subsystem);
  90.     printf("\tDllCharacteristics:\t%x\t\tSIZE: WORD\n", imgOptHeader->DllCharacteristics);
  91.     printf("\tSizeOfStackReserve:\t%x\t\tSIZE: DWORD\n", imgOptHeader->SizeOfStackReserve);
  92.     printf("\tSizeOfStackCommit:\t%x\t\tSIZE: DWORD\n", imgOptHeader->SizeOfStackCommit);
  93.     printf("\tSizeOfHeapReserve:\t%x\t\tSIZE: DWORD\n", imgOptHeader->SizeOfHeapReserve);
  94.     printf("\tSizeOfHeapCommit:\t%x\t\tSIZE: DWORD\n", imgOptHeader->SizeOfHeapCommit);
  95.     printf("\tLoaderFlags:\t\t%x\t\tSIZE: DWORD\n", imgOptHeader->LoaderFlags);
  96.     printf("\tNumberOfRvaAndSizes:\t%x\t\tSIZE: DWORD\n", imgOptHeader->NumberOfRvaAndSizes);
  97.  
  98.     IMAGE_SECTION_HEADER* sectionHeader = IMAGE_FIRST_SECTION(ntHeaders);
  99.     printf("\n --------------------------------------------------------------\n");
  100.     printf("|                  SECTION HEADER                              |\n");
  101.     printf(" --------------------------------------------------------------\n\n");
  102.     printf("Name\t\tVirtualAddress\tRawSize\t\tRawAddress\tRelocAddress\tLinenumbers\tRelocationsNumbers\tLinenumbersNumbers\tCharacteristics\n\n");
  103.     for (int i = 0; i < ntHeaders->FileHeader.NumberOfSections; i++) {
  104.         printf("%s\t\t%x\t\t%x\t\t%x\t\t%x\t\t%x\t\t%x\t\t\t%x\t\t\t%x\n", sectionHeader->Name, sectionHeader->VirtualAddress,sectionHeader->SizeOfRawData,sectionHeader->PointerToRawData,sectionHeader->PointerToRelocations,sectionHeader->PointerToLinenumbers,sectionHeader->NumberOfRelocations,sectionHeader->NumberOfLinenumbers,sectionHeader->Characteristics);
  105.         sectionHeader++;
  106.     }
  107.    
  108.  
  109. }
Advertisement
Add Comment
Please, Sign In to add comment