Здравствуйте, на жуке zhyk.ru/forum/showthread.php?t=274071 взял код для вставки своего кода в чужой процесс, но он у меня почему то не работает, после CreateRemoteThread процесс(куда я вставил код) сразу зависает, брекпойнт который я ставлю на начало функции(которую я вставил), не срабатывает, да и выглядит вставленная функция странно. Да и вообще я не как не смог с помощью CreateRemoteThread создать поток в чужом процессе... в чем может быть проблема? код в оригинале был для c++ builder, но я пишу в visual studio, вот код: //---------------------------------------------------------------------------#include <Windows.h>#include <TlHelp32.h>//---------------------------------------------------------------------------//---------------------------------------------------------------------------//---------------------------------------------------------------------------#define INJECT_OK 0x00#define INJECT_NO_PROCESS 0x01#define INJECT_NO_ACCESS 0x02#define INJECT_BAD_VERSION 0x03#define INJECT_THREAD_FAIL 0x04//--------------------------------------------------------------------------- DWORD GetprocessbyName(char* process_name){HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);PROCESSENTRY32 process;DWORD proc_id = 0;if (Process32First(snapshot, &process)){while (Process32Next(snapshot, &process)){if (_stricmp(process.szExeFile, process_name) == 0){proc_id = process.th32ProcessID;break;}}}CloseHandle(snapshot);return proc_id;}BYTE InjectAndExecute(void* Func, void* Params){DWORD pId = GetprocessbyName("elementclient.exe");if (!pId)return INJECT_NO_PROCESS; // нет такого процесса HANDLE hProc;HANDLE hProcThread;void* pFunction;void* pParams; hProc = OpenProcess(PROCESS_ALL_ACCESS, false, pId);if (hProc == INVALID_HANDLE_VALUE) // не удалось открыть процессreturn INJECT_NO_ACCESS; //if (!IsGameVersionValid(hProc))// return INJECT_BAD_VERSION; // не та версия игры pFunction = VirtualAllocEx(hProc, NULL, 4096, MEM_COMMIT, PAGE_READWRITE);pParams = VirtualAllocEx(hProc, NULL, 256, MEM_COMMIT, PAGE_READWRITE);WriteProcessMemory(hProc, pFunction, Func, 4096, NULL);WriteProcessMemory(hProc, pParams, Params, 256, NULL); hProcThread = CreateRemoteThread(hProc, NULL, NULL, (LPTHREAD_START_ROUTINE)pFunction, pParams, NULL, NULL);if (hProcThread == INVALID_HANDLE_VALUE) // не удалось создать поток{VirtualFreeEx(hProc, pFunction, 4096, MEM_RELEASE);VirtualFreeEx(hProc, pParams, 256, MEM_RELEASE);CloseHandle(hProc);return INJECT_THREAD_FAIL;} WaitForSingleObject(hProcThread, INFINITE); // ожидаем завершения работы потокаCloseHandle(hProcThread); // освобождаем память VirtualFreeEx(hProc, pFunction, 4096, MEM_RELEASE);VirtualFreeEx(hProc, pParams, 256, MEM_RELEASE);CloseHandle(hProc);return INJECT_OK;}//---------------------------------------------------------------------------//---------------------------------------------------------------------------void __stdcall Attack_THREAD(){__asm{pushadmov edx, 0x0044FE60//mov ecx, dword ptr ds : [BA]//mov ecx, dword ptr ds : [ecx + 0x1C]//mov ecx, dword ptr ds : [ecx + 0x20]//push - 1//push 0//push 0//push 0//call edxpopad}}//---------------------------------------------------------------------------class CHostPlayer{public:bool SelectSomething(DWORD GlobalId){//return (InjectAndExecute(&Target_THREAD, &GlobalId) == INJECT_OK);}bool AttackSelectedTarget(){return (InjectAndExecute(&Attack_THREAD, NULL) == INJECT_OK);}} *HostPlayer; int main(){HostPlayer->AttackSelectedTarget(); return 0;}