Guest User

Untitled

a guest
Mar 12th, 2015
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. void AssFunc() {
  2.     __asm (
  3.     "SOME ASSMBLER SHIT"
  4.     );
  5. }
  6. void InjectF() {
  7.  
  8.     void* params = NULL;  // сюда нужно запилить указатель на мою асм функцию, пока нулл поставил
  9. //при касте void* params = (void*)AssFunc ошибка
  10.     void* func   = NULL;  // сюда на параметры для функции, благо указатель на параметры успешно передается
  11.  
  12.     HANDLE hProcThread; // дескриптор потока выполнения инъектируемой функции
  13.     HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, PID); //открытие процесса PID - его номер вроде, находится сторонними функциями.
  14.  
  15.     void *funAddr = (void*)VirtualAllocEx(hProcess, NULL, 255, MEM_COMMIT, PAGE_READWRITE);
  16. // p.s.выделить память под указатель на функцию не получается, т.к. не приводится.
  17.     WriteProcessMemory(hProcess, funAddr,   func, 250, NULL); //выделяем память под функцию
  18.  
  19.     void *parAddr = (void*)VirtualAllocEx(hProcess, NULL, 255, MEM_COMMIT, PAGE_READWRITE);
  20.     WriteProcessMemory(hProcess, parAddr, params, 250, NULL); //под параметры
  21.  
  22.     hProcThread = CreateRemoteThread(hProcess, NULL, NULL, (LPTHREAD_START_ROUTINE)funAddr, parAddr, NULL, NULL);
  23. //запускаем поток выполения, тип void* funAddr приводится к LPTHREAD_START_ROUTINE.
  24.  
  25.     WaitForSingleObject(hProcThread, INFINITE); //ожидание завершения выполнения потока, закрытие дескрипторов
  26.     CloseHandle(hProcThread);
  27.     CloseHandle(hProcess);
  28.     return ;
  29. }
Advertisement
Add Comment
Please, Sign In to add comment