Advertisement
Guest User

Untitled

a guest
Sep 25th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.46 KB | None | 0 0
  1. DWORD ResolveAPI(DWORD dwModuleBase, DWORD dwFunctionHash)
  2. {
  3.     PIMAGE_DOS_HEADER pImageDosHeader = (PIMAGE_DOS_HEADER)dwModuleBase;
  4.     PIMAGE_FILE_HEADER pImageFileHeader = (PIMAGE_FILE_HEADER)(dwModuleBase + pImageDosHeader->e_lfanew + 4);
  5.     PIMAGE_OPTIONAL_HEADER pImageOptionalHeader = (PIMAGE_OPTIONAL_HEADER)((PBYTE)pImageFileHeader + sizeof(IMAGE_FILE_HEADER));
  6.     PIMAGE_EXPORT_DIRECTORY pImageExportDirectory = (PIMAGE_EXPORT_DIRECTORY)(dwModuleBase + pImageOptionalHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress);
  7.     PDWORD pdwAddressOfNames, pdwAddressOfFunctions;
  8.     PWORD pwAddressOfNameOrdinals;
  9.     DWORD dwX = 0, dwY = 0;
  10.     int mark = 0;
  11.  
  12.     pdwAddressOfNames=(PDWORD)(dwModuleBase + pImageExportDirectory->AddressOfNames);
  13.     pwAddressOfNameOrdinals=(PWORD)(dwModuleBase + pImageExportDirectory->AddressOfNameOrdinals);
  14.     pdwAddressOfFunctions=(PDWORD)(dwModuleBase + pImageExportDirectory->AddressOfFunctions);
  15.  
  16.     for (dwX=0; dwX < pImageExportDirectory->NumberOfNames; dwX++)
  17.     {
  18.         PBYTE pFunctionName=(PBYTE)(dwModuleBase + pdwAddressOfNames[dwX]);
  19.  
  20.         for (dwY=0; *pFunctionName; *pFunctionName++)
  21.         {
  22.             dwY=(dwY + (*(PBYTE)pFunctionName|0x60));
  23.  
  24.             dwY <<= 1;
  25.         }
  26.  
  27.         if(dwY == dwFunctionHash)
  28.         {
  29.             return (dwModuleBase + pdwAddressOfFunctions[pwAddressOfNameOrdinals[dwX]]);
  30.         }
  31.     }
  32.  
  33.     return NULL;
  34. }
  35.  
  36. DWORD hash(LPBYTE str)
  37. {
  38.     DWORD ret;
  39.  
  40.     for (ret = 0; *str; *str++)
  41.     {
  42.         ret = (ret + (*(LPBYTE)str | 0x60));
  43.  
  44.         ret <<= 1;
  45.     }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement