Quote:
Originally Posted by dj_al
Приведи код инжекта, что у тебя получился, после убирания try except.
|
static DWORD WINAPI SelectMonster(LPCVOID lpParam )
{
DWORD BaseAddress = 0x0098ADDC;
DWORD CallAddress = 0x005B7B70;
DWORD MonsterID = (DWORD)lpParam;
__asm
{
mov eax, BaseAddress
mov eax, dword ptr[eax]
mov edi, MonsterID
mov edi, [edi]
push edi
mov ecx, dword ptr[eax+0x20]
add ecx, 0xEC
mov edx, CallAddress
call edx
}
return 0;
}
bool CbotDlg::CallRemoteFunction(HANDLE hProcess, LPVOID lpParam)
{
HANDLE hThread = NULL;
LPVOID ThreadCodeAddr = NULL; //Inject Fuction Address after allocate
LPVOID ThreadDataAddr = NULL; //Inject Fuction Stack Address after allocate
LPVOID Func = SelectMonster; //Inject Function
DWORD ThreadID; //
DWORD dwWritten; //
ThreadCodeAddr=VirtualAllocEx(hProcess,NULL,256,ME M_COMMIT,PAGE_READWRITE);
ThreadDataAddr=VirtualAllocEx(hProcess,NULL,64,MEM _COMMIT,PAGE_READWRITE);
WriteProcessMemory(hProcess,ThreadCodeAddr,Func,25 6,&dwWritten);
WriteProcessMemory(hProcess,ThreadDataAddr,lpParam ,64,&dwWritten);
hThread = CreateRemoteThread(hProcess,NULL,NULL,(LPTHREAD_ST ART_ROUTINE)ThreadCodeAddr,ThreadDataAddr,NULL,&Th readID);
if (!hThread) return false;
else WaitForSingleObject(hThread,INFINITE);
CloseHandle(hThread);
VirtualFreeEx(hProcess,ThreadCodeAddr,256,MEM_RELE ASE);
VirtualFreeEx(hProcess,ThreadDataAddr, 64,MEM_RELEASE);
//CloseHandle(hProcess);
return true;
}
Вот последний вариант. все-равно клиент валится :mad: