Добрый день! 2 вопросика к вам знающие люди) 1)Как в делфи можно допусти, запускаем 1 програмку(имя процесса progOne.exe) и 2-ю программу( progTwo.exe ), и процесс 1-й программы объединяется с процессом 2-й и работают как один процесс progTwo.exe? 2)Скрыть процесс программы из диспетчера задач ? Если не поняли говорите, попробую объяснить по-другому)
HANDLE hBlaine = GetModuleHandle("kernel32.dll"); davidBlaineMagic = GetProcAddress(hBlaine,"CreateRemoteThread");
ну да тебе jaja смешно и правильно помог=)...Через создание удаленного потока можно,но я думаю тебе не это надо,так как хочешь ты сделать имхо нельзя...,а чтобы скрыть от диспетчера задач либо функции сплайсить Process32First,Process32Next если конечно task manager через них ищет либо отключай file protection и правь сам task manager=) А вообще что ты хочешь сделать?зачем два процесса тебе?Создай в одном процессе 2 потока...
дело в том что мне нужно присоединить 1-й процесс ко 2-му, а уменя нет исходного кода 2-го процесса, если бы были исходники то все вопросы были бы решены)
Еще есть среди народных умельцев индивидуалы, которые в цикле посылают LVM_DELETEITEM листвьюву диспетчера задач. Да и зачем все это? Все-таки у вашей задачи должны быть более простые пути решения.
добавь второй exe в ресурсы первого. потом при запуске сохраняй на винт. потом FileMapping и настройка релоков если надо... потом CreateRemoteThread/GetThreadContext\SetThreadContext...Можно полностью подменить процессы если надо...пиши задачу конкретней...
собственно задача такая, мне нужно чтобы мою программу(сам процесс программы, античит), не смогли закрыть, вот почему я хочу присоединить к другому процессу(самой игры), если пользователь закроет то и закроется сама игра) просто попросили написать античит для игры и вот щас мучаюсь)
mupsy Что смешного ? К примеру два хэндла было одинаковых, при "обьеденении" какой использовать, если использовать первый, то для второго процесса не пойдёт. Как быть с адресным пространством, потоками, системными таблицами и прочим ?
Clerk У Вас талант к усложнению простой задачи. +1 к jaja: простейший инжект dll через CreateRemoteThread без вообще каких-либо наворотов, и хэндлы "с адресным пространством, потоками, системными таблицами и прочим" общие.
RFX Нет такого понятия, как объединение процессов. Для слежения за закрытием процессов есть другие методы.
Я не над твои сообщением смеюсь,а просто подумал что если бы мона было так сказать склеить два процесса в один,то мона склеить и 10 в один=)вот над чем...
А не проще ли создать какой-нибудь процесс, который бы проверял существование процесса античита и создавал бы в случае его отсутствия.
В саму игру вставь поток который отслеживает закрытие процесса античита...Мона сделать как циклом который переодически проеряет на существование процесса античит что то типа такого: While(TRUE) { if(OpenProcess()==NULL) TerminateProcess(Процесс игры); else Sleep(1000); } либо через WaitForSingleObject и тоже ждать когда произойдет завершение процесса античита,так что не надо будет ломать голову над сокрытием от task manager... Ну может конечно я что то тута натупил,но я думаю так=)
Код (Text): int _tmain(int argc, _TCHAR* argv[]) { STARTUPINFO si; PROCESS_INFORMATION pi; memset(&si,0,sizeof(si)); memset(&pi,0,sizeof(pi)); if(NULL==OpenProcess()) CreateProcess(античит); CreateProcess(argv[0],0,0,0,0,0,0,0,&si,&pi); return 0; } И про закрытый античит можно не волноваться
можно кста античит в dll прилинковать к exe игры. тогда игра без него ещё и запускаццо 'не будеть'. и назвать его dx3d9.dll)
а вот как вставить проверку запущен ли античит, в ланчер игры, если он(ланчер) скомпилированый и исходников нет?) Если поставить эту проверку то можно будет и не мучаться)