Advertisement
Guest User

Untitled

a guest
Sep 30th, 2016
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. #include <iphlpapi.h>
  2. #pragma comment(lib, "IPHLPAPI.lib")
  3.  
  4. BYTE GetAdaptersInfodefaultPatch[10];
  5.  
  6. DWORD MY_GetAdaptersInfoAddr = 0;
  7. typedef NTSTATUS(NTAPI *pGetAdaptersInfo)(
  8. _Out_ PIP_ADAPTER_INFO pAdapterInfo,
  9. _Inout_ PULONG pOutBufLen);
  10. pGetAdaptersInfo GetAdaptersInfoReal = (pGetAdaptersInfo)GetProcAddress(GetModuleHandleA("IPHLPAPI.dll"), "GetAdaptersInfo");
  11.  
  12. void HookGetAdapters(int value)
  13. {
  14. int hooksize = 5;
  15. KO_Handle = OpenProcess(CREATE_THREAD_ACCESS, false, GetCurrentProcessId());
  16. if (value == 0)
  17. for (int i = 0; i < hooksize; i++)
  18. GetAdaptersInfodefaultPatch[i] = GetMemBYTE((DWORD)GetAdaptersInfoReal + i);
  19. else if (value == 1) {
  20. SetMemArray((DWORD)GetAdaptersInfoReal, 0x90, hooksize);
  21. JMPHOOK((DWORD)GetAdaptersInfoReal, MY_GetAdaptersInfoAddr); //HOOK GetModuleFileNameA
  22. }
  23. else if (value == 2)
  24. for (int i = 0; i < hooksize; i++)
  25. SetMemBYTE((DWORD)GetAdaptersInfoReal + i, GetAdaptersInfodefaultPatch[i]);
  26. CloseHandle(KO_Handle);
  27.  
  28. }
  29. DWORD WINAPI MY_GetAdaptersInfo(
  30. _Out_ PIP_ADAPTER_INFO pAdapterInfo,
  31. _Inout_ PULONG pOutBufLen
  32. )
  33. {
  34. HookGetAdapters(2);
  35. DWORD dwRetVal = GetAdaptersInfoReal(pAdapterInfo, pOutBufLen);
  36. HookGetAdapters(1);
  37. // printf("pAdapterInfo->AdapterName %s\n", pAdapterInfo->AdapterName);
  38. return dwRetVal;
  39. }
  40.  
  41. void HookGetAdaptersAPI()
  42. {
  43. PIP_ADAPTER_INFO pAdapterInfo = NULL;
  44.  
  45. ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);
  46. pAdapterInfo = (IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO));
  47. if (pAdapterInfo == NULL) {
  48. printf("Error allocating memory needed to call GetAdaptersinfo\n");
  49. return ;
  50. }
  51. // Make an initial call to GetAdaptersInfo to get
  52. // the necessary size into the ulOutBufLen variable
  53. if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
  54. free(pAdapterInfo);
  55. pAdapterInfo = (IP_ADAPTER_INFO *)malloc(ulOutBufLen);
  56. if (pAdapterInfo == NULL) {
  57. printf("Error allocating memory needed to call GetAdaptersinfo\n");
  58. return ;
  59. }
  60. }
  61.  
  62. HookGetAdapters(0);
  63. MY_GetAdaptersInfoAddr = reinterpret_cast<unsigned int>(MY_GetAdaptersInfo);
  64. HookGetAdapters(1);
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement