m1dw0rd

Untitled

Jul 3rd, 2022
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 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