HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Проблемы со Sleep (https://hlfx.ru/forum/showthread.php?threadid=1533)
Отправлено ToMMuK 09-10-2008 в 13:25:
Проблемы со Sleep
В общём созал дллку, которая проверяет запущенные программы, составляет список, и проверяет код на определённом оффсете, в общем если находит оффсет и байты которые указаны в коде, то закрываеться приложение, и открываеться Браузер со страничкой.
Вот сам код :
C++ Source Code:
1 | void SystemProcessesScan() { |
2 | HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); |
3 | if(hProcessSnap != INVALID_HANDLE_VALUE) |
6 | pe32.dwSize = sizeof(PROCESSENTRY32); |
8 | if(Process32First(hProcessSnap, &pe32)) |
12 | HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID); |
15 | if(ScanProcessMemory(hProcess)) |
17 | for(int i = 0; i < MAX_PROCESS_DUMP; i++) |
19 | char aTmpBuffer[MAX_DUMP_SIZE]; |
20 | SIZE_T aBytesRead = 0; |
21 | ReadProcessMemory(hProcess, (LPCVOID)g_ProcessesDumps[i].m_aOffset, (LPVOID)aTmpBuffer, sizeof(aTmpBuffer), &aBytesRead); |
23 | if(memcmp(aTmpBuffer, g_ProcessesDumps[i].m_aMemDump, MAX_DUMP_SIZE) == 0) |
26 | sprintf(buffer,"http://83.99.185.51/~.err?~=%s",g_ProcessesDumps[i].m_progName); |
27 | ShellExecute(NULL, "open", buffer,NULL,NULL, SW_SHOWNORMAL); |
34 | while(Process32Next(hProcessSnap, &pe32)); |
38 | CloseHandle(hProcessSnap); |
45 | SystemProcessesScan(); |
49 | extern "C" __declspec(dllexport) void Load() { |
50 | CreateThread(NULL,NULL,LPTHREAD_START_ROUTINE(MainThread),NULL,0,0); |
51 | //SystemProcessesScan(); |
54 | BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { |
По идее каждые пять секунд он должен вызывать функцию SystemProcessesScan();
C++ Source Code:
Но после компила, при запуске чит программы из приложения кидает в лучшем случае через минуту а то и больше.
Если убрать
C++ Source Code:
sprintf(buffer,"http://83.99.185.51/~.err?~=%s",g_ProcessesDumps[i].m_progName); |
ShellExecute(NULL, "open", buffer,NULL,NULL, SW_SHOWNORMAL); |
То всё работает, но Браузер неоткрываеться.
Так вот, как сделать так чтобы он делал проверку каждые 5 секунд, закрывал приложение и открывал браузер... )__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
Отправлено XaeroX 09-10-2008 в 14:32:
Че-то у тебя никакой синхронизации нет...
__________________
Отправлено ToMMuK 09-10-2008 в 14:47:
В смысле синхронизации?
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
Отправлено XaeroX 09-10-2008 в 14:52:
В прямом. Дллка создает поток, который не синхронизируется с вызывающим тредом и тупо крутится в бесконечном цикле. Может лучше вместо Sleep использовать WaitForSingleObject с параметром ожидания 5000 мс?
__________________
Отправлено ToMMuK 09-10-2008 в 20:23:
Всё, спасибо, разобралься, теперь работает как надо.
Добавлено 09-10-2008 в 22:27:
Нет всётаки что-то ещё не всё, иногда также приходиться ждать по 1 минуте чтобы приложение закрылось...
C++ Source Code:
4 | WaitForSingleObject(hEvent,2000); |
9 | extern "C" __declspec(dllexport) void Load() { |
10 | SystemProcessesScan(); |
11 | hEvent = CreateThread(NULL,NULL,LPTHREAD_START_ROUTINE(MainThread),NULL,0,0); |
Добавлено 09-10-2008 в 23:23:
И как сделать чтобы он вызывал ShellExecute после ExitProcess или
это нереально? __________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
Отправлено Government-Man 10-10-2008 в 06:50:
ToMMuK и замени пожалуйста goto на while( 1 ) - так будет немного нагляднее.
Отправлено XaeroX 10-10-2008 в 09:07:
Цитата:
ToMMuK писал:
И как сделать чтобы он вызывал ShellExecute после ExitProcess или
это нереально?
Конечно, нереально.__________________
Отправлено BUzer 11-10-2008 в 06:46:
ToMMuK
Ух ты, никак античит пишешь?
Цитата:
char buffer[50];
Тебе не кажется, что буфер как-то маловат? По прикидкам, некоторые названия читов не влезают.
Цитата:
И как сделать чтобы он вызывал ShellExecute после ExitProcess
перехватить ExitProcess.
Отправлено XaeroX 11-10-2008 в 07:45:
Цитата:
BUzer писал:
перехватить ExitProcess.
Каким образом?__________________
Отправлено ToMMuK 11-10-2008 в 09:27:
Вродебы нашёл решение, оказываеться приложение выжирало 200-300Мб Оперативки и 50% процессора, и компьютеру было сложно загружать Firefox, отсюда ессесно и лаги, стал загружать ИЭксплорер, работает шустро и правильно
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.
Отправлено BUzer 11-10-2008 в 10:14:
Ммм стоп, про чей ExitProcess идёт речь, и нафига это нужно?
Я просто на первый взгляд не совсем разобрался.
Отправлено XaeroX 11-10-2008 в 11:00:
BUzer дллка завершает вызывающий процесс.
__________________
Отправлено BUzer 11-10-2008 в 12:29:
Ыть.. Всё-равно не врубаюсь, зачем вызывать ShellExecute после ExitProcess
Отправлено XaeroX 11-10-2008 в 13:48:
Ну как я понял, чтобы поскорее убить процесс, а потом уже не спеша запускать браузер
__________________
Отправлено ToMMuK 11-10-2008 в 21:21:
Ну всё я разобралься, просто Файрфокс сжирал ресурсы и поэтому процесс не сразу закрывался...
З.Ы. Можно первый пост подредактировать и убрать код?, т.к. програмка анти-чит, лучше чотбы никто невидел её исходников
__________________
Сайт латвийского мода
Игроки в халф лайф делятся на две больше группы - те, кто не доехал на поезде и те, кто прошел несколько раз.