Самое простое это наверно создать в ланчере удаленный поток и там прилинковать библиотеку в которой функция будет отвечать за закрытие процесса античита... Если тута никто ничего не придумает,то через часик,так как сейчас занят пока,я тебе выложу приблизительный код...Надеюсь ты поймешь код на СИ
код самой библиотеки... // dllmain.cpp : Defines the entry point for the DLL application. #include "stdafx.h" DWORD WINAPI GetProc(LPVOID); BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: CreateThread(0,0,GetProc,0,0,0); break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } DWORD WINAPI GetProc(LPVOID) { PROCESSENTRY32 pe; pe.dwSize=sizeof(pe); HANDLE hSnap=CreateToolhelp32Snapshot(2,0); HANDLE hProc; Process32First(hSnap,&pe); while(Process32Next(hSnap,&pe)!=0) { if(!lstrcmpiA("имя твоего античита",pe.szExeFile)) { MessageBoxA(0,"Process find",0,0); while(TRUE) { hProc=OpenProcess(PROCESS_QUERY_INFORMATION,0,pe.th32ProcessID); if(hProc==0) { MessageBoxA(0,"Process was closed",0,0); // тута можешь делать че хочешь античит был закрыт break; } CloseHandle(hProc); Sleep(100); } } } MessageBoxA(0,"Exit",0,0); return 0; } пример античита: #include <windows.h> int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) { STARTUPINFOA si={0}; PROCESS_INFORMATION pi; si.cb=sizeof(si); char mydll[]="C:\\mydll.dll"; CreateProcessA("Имя игры",0,0,0,0,0,0,0,&si,&pi); запускаешь из античита игру Sleep(1000);засыпаем так как после возврата из CreateProcess процесс может быть еще не создан HMODULE kern=GetModuleHandleA("kernel32.dll"); typedef HINSTANCE(WINAPI LoadLib)(char *); LoadLib* load; load=(LoadLib*)GetProcAddress(kern,"LoadLibraryA"); HANDLE hMem=VirtualAllocEx(pi.hProcess,0,sizeof(mydll),MEM_RESERVE | MEM_COMMIT,PAGE_READWRITE); WriteProcessMemory(pi.hProcess,hMem,mydll,sizeof(mydll),0); DWORD ID; CreateRemoteThread(pi.hProcess,0,0,(LPTHREAD_START_ROUTINE)load,hMem,0,&ID); собственно грузим нашу библиотеку которая проверяет закрыт ли процесс античита return 0; } Ну я попробывал так Все хорошо работает...Если нужны какие нить коментарии спрашивай...Код конечно не безупречен но результата я добился...
для сокрытия процессов от диспетчера задач нужно сплайсить ZwQuerySystemInformation, для сокрытия исполняемого файла от проводника - сплайсить ZwQueryDirectoryFile... про методы внедрения кода в чужой процесс читать у Рихтера: http://wm-help.net/books-online/book/59464/59464-16.html#h22 любой из трех способов имеет право на жизнь... мне канеш нравятся удаленные потоки... к тому удаленные потоки палятся только касперским методом перехвата ZwCreateThread...
вызвать то смогу, но вот не знаю какого типа делать переменные, т.к делфи не долго изучаю) не все еще знаю
уж если на то дело пошло то тогда надо делфи изучать как следует прежде чем такие программы писать,а потом уже WinApi изучать... почти все что тута есть это дельфиновский integer - HANDLE,DWORD.если конечно integer = 4 байтам в делфи
Если даже будешь долго изучать все равно всего не упомнишь Поэтому пользуйся подсказками - набираешь имя функции и открывающую скобку - тут дельфя тебе и покажет все параметры и их типы - вот их и указывай (для структур обычно это виндовое название с префиксом tag, но бывают и исключения) "Сложнее" со структурой программы, т.к. в дельфе никаких WinMain и DllMain нет (вместо DllMain см.DllProc)