Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void AssFunc() {
- __asm (
- "SOME ASSMBLER SHIT"
- );
- }
- void InjectF() {
- void* params = NULL; // сюда нужно запилить указатель на мою асм функцию, пока нулл поставил
- //при касте void* params = (void*)AssFunc ошибка
- void* func = NULL; // сюда на параметры для функции, благо указатель на параметры успешно передается
- HANDLE hProcThread; // дескриптор потока выполнения инъектируемой функции
- HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, PID); //открытие процесса PID - его номер вроде, находится сторонними функциями.
- void *funAddr = (void*)VirtualAllocEx(hProcess, NULL, 255, MEM_COMMIT, PAGE_READWRITE);
- // p.s.выделить память под указатель на функцию не получается, т.к. не приводится.
- WriteProcessMemory(hProcess, funAddr, func, 250, NULL); //выделяем память под функцию
- void *parAddr = (void*)VirtualAllocEx(hProcess, NULL, 255, MEM_COMMIT, PAGE_READWRITE);
- WriteProcessMemory(hProcess, parAddr, params, 250, NULL); //под параметры
- hProcThread = CreateRemoteThread(hProcess, NULL, NULL, (LPTHREAD_START_ROUTINE)funAddr, parAddr, NULL, NULL);
- //запускаем поток выполения, тип void* funAddr приводится к LPTHREAD_START_ROUTINE.
- WaitForSingleObject(hProcThread, INFINITE); //ожидание завершения выполнения потока, закрытие дескрипторов
- CloseHandle(hProcThread);
- CloseHandle(hProcess);
- return ;
- }
Advertisement
Add Comment
Please, Sign In to add comment