Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Нужна помощь с слежкой за процессами

-

Вопросы и ответы, обсуждения

- Ваши вопросы по Pascal/Delphi только в данном разделе

Ответ
 
Опции темы
Старый 10.01.2015, 17:37   #1
 Сержант
Аватар для КириллZ
 
КириллZ гордость нацииКириллZ гордость нацииКириллZ гордость нацииКириллZ гордость нацииКириллZ гордость нацииКириллZ гордость нацииКириллZ гордость нацииКириллZ гордость нацииКириллZ гордость нацииКириллZ гордость нацииКириллZ гордость нации
Регистрация: 29.03.2011
Сообщений: 155
Популярность: 3277
Сказал(а) спасибо: 325
Поблагодарили 145 раз(а) в 101 сообщениях
 
По умолчанию Нужна помощь с слежкой за процессами

Сразу к сути: Есть лаунчер, к нему нужно встроить функцию отслеживания процессов, т.е. если запускается cheatengine к примеру, то процесс игры закрывается - Rust, а в лаунчере появляется форма, что пользователь заблокирован и на сервер FTP отсылается UID лаунчера для предотвращения повторного запуска клиента. Delphi 7

Последний раз редактировалось КириллZ; 21.01.2015 в 01:10.
  Ответить с цитированием
Старый 10.01.2015, 23:01   #2
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: Нужна помощь с слежкой за процессами

Ну собственно...
Следите за процессами, видя запущенный СЕ глушите игру и отправляете ID.

Здесь можно получить ответы на конкретный вопрос, но не на всё разом.
  Ответить с цитированием
Старый 11.01.2015, 03:18   #3
Подпольщик RF Online
 Пехотинец
Аватар для артём612
 
артём612 лучик света в грозовом небеартём612 лучик света в грозовом небеартём612 лучик света в грозовом небеартём612 лучик света в грозовом небеартём612 лучик света в грозовом небеартём612 лучик света в грозовом небеартём612 лучик света в грозовом небе
Регистрация: 10.10.2011
Сообщений: 65
Популярность: 772
Сказал(а) спасибо: 58
Поблагодарили 57 раз(а) в 32 сообщениях
Отправить сообщение для артём612 с помощью Skype™
 
По умолчанию Re: Нужна помощь с слежкой за процессами

Цитата:
Сообщение от КириллZПосмотреть сообщение
Сразу к сути: Есть лаунчер, к нему нужно встроить функцию отслеживания процессов, т.е. если запускается cheatengine к примеру, то процесс игры закрывается - Dayz, а в лаунчере появляется форма, что пользователь заблокирован и на сервер FTP отсылается UID лаунчера для предотвращения повторного запуска клиента. Delphi 7

Для поиска процесса cheatengine и подобных стоит пользоваться функциями
Process32First+Process32Next
Так же процесс может быть переименован из-за чего это будет защищать только от школоюзеров данной программы...
Далее следует использовать функцию для поиска окон Enumwindows что так же не будет 100% гарантом что программа не запущена...
Ещё надо сканировать блок описания каждого запущенного процесса (это там где пишется версия ,компания и т.д) на наличие каких-то сигнатурных(постоянных) строк как получать данный блок я незнаю т.к. с этим я не сталкивался.

Только использование этих 3 методов даст вам ~70% гарантию потому что редакторов памяти процессов очень много и на каждый из них написать сканер будет довольно сложно.

+ ко всему не стоит делать такой сканер в отдельной длл так как его будет легко пропатчить.
  Ответить с цитированием
Пользователь сказал cпасибо:
КириллZ (11.01.2015)
Старый 11.01.2015, 13:26   #4
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: Нужна помощь с слежкой за процессами

Цитата:
Process32First+Process32Next

там какой-то hSnapshot требуют, не подскажешь?
Цитата:
Далее следует использовать функцию для поиска окон Enumwindows

а при переборе какого-то hSnapshot ты разве не получаешь id потоков процесса, окна которых надо таки перечислять через EnumThreadWindows?
Цитата:
Ещё надо сканировать блок описания каждого запущенного процесса (это там где пишется версия ,компания и т.д)

http://zhyk.ru/forum/showpost.php?p=4282654&postcount=2 как-то так
Цитата:
+ ко всему не стоит делать такой сканер в отдельной длл так как его будет легко пропатчить.

ойлол

Не давай советов, если не шаришь, о чём говоришь, артём612
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
Пользователь сказал cпасибо:
КириллZ (11.01.2015)
Старый 11.01.2015, 14:35   #5
Подпольщик RF Online
 Пехотинец
Аватар для артём612
 
артём612 лучик света в грозовом небеартём612 лучик света в грозовом небеартём612 лучик света в грозовом небеартём612 лучик света в грозовом небеартём612 лучик света в грозовом небеартём612 лучик света в грозовом небеартём612 лучик света в грозовом небе
Регистрация: 10.10.2011
Сообщений: 65
Популярность: 772
Сказал(а) спасибо: 58
Поблагодарили 57 раз(а) в 32 сообщениях
Отправить сообщение для артём612 с помощью Skype™
 
По умолчанию Re: Нужна помощь с слежкой за процессами

Цитата:
Сообщение от VeTaL_UAПосмотреть сообщение
там какой-то hSnapshot требуют, не подскажешь?

а при переборе какого-то hSnapshot ты разве не получаешь id потоков процесса, окна которых надо таки перечислять через EnumThreadWindows?

http://zhyk.ru/forum/showpost.php?p=4282654&postcount=2 как-то так

ойлол

Не давай советов, если не шаришь, о чём говоришь, артём612

Цитата:
там какой-то hSnapshot требуют, не подскажешь?

Ну я про снапшоты не упоминал так как я указал только на функции которыми это можно выполнить ,а документацию я думаю автор читать в состоянии...
Но если это так уж необходимо для тебя ...
То надо сначала сделать снапшот процессов а потом перебирать их через функции Process32First + Process32Next

Вот пример
Код:
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
 if (hProcessSnap == INVALID_HANDLE_VALUE) return 0;
  PROCESSENTRY32 pe32;
 pe32.dwSize = sizeof(PROCESSENTRY32);
 if (!Process32First(hProcessSnap, &pe32)) { CloseHandle(hProcessSnap); return 0; }
    do
     {
        if(!lstrcmp(  pe32.szExeFile,"cheatengine.exe"))ExitProcess(0);

      } while (Process32Next(hProcessSnap, &pe32));

CloseHandle(hProcessSnap);
Цитата:
а при переборе какого-то hSnapshot ты разве не получаешь id потоков процесса, окна которых надо таки перечислять через EnumThreadWindows?

Ну я вообще про потоки не говорил ничего

Код:


BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{

	char CaptionWindow[255];
        char ClassWindow[255];
        DWORD ProcID = 0;

	GetWindowText(hwnd, CaptionWindow, 256);

		if (GetWindow(hwnd, GW_OWNER))return true;
                if (!lstrlenA(bufstr))return true;
		if (!IsWindowVisible(hwnd))return true;


	GetClassName(hwnd,ClassWindow, 256);

        if(!lstrcmp(CaptionWindow,"CheatEngine") || !lstrcmp(ClassWindow,"CheatEngine") )
        {
	ExitProcess(0);
        }

	return TRUE;
}


if(!EnumWindows(&EnumWindowsProc, 0))
{
  //Ошибка при поиске
}


Цитата:

ойлол

Не давай советов, если не шаришь, о чём говоришь, артём612

Лол вы меня считаете человеком который в этом совсем не разбирается ?

Если длл будет экспортировать функцию допустим
bool IsActiveCheat()
а лаунчер будет юзать эту функцию через экспорт то можно либо подменить библиотеку на свою с данной функцией либо патчить чтобы возвращалось только false
  Ответить с цитированием
Пользователь сказал cпасибо:
КириллZ (11.01.2015)
Старый 11.01.2015, 14:44   #6
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: Нужна помощь с слежкой за процессами

артём612, тоесть вы хотите сначала снапшотом перебрать все процессы, а потом заново устроить перебор окон? о - оптимизация
Цитата:
то можно либо подменить библиотеку на свою с данной функцией либо патчить чтобы возвращалось только false

точно так же, как и с exe
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
Пользователь сказал cпасибо:
артём612 (11.01.2015)
Старый 11.01.2015, 15:13   #7
Подпольщик RF Online
 Пехотинец
Аватар для артём612
 
артём612 лучик света в грозовом небеартём612 лучик света в грозовом небеартём612 лучик света в грозовом небеартём612 лучик света в грозовом небеартём612 лучик света в грозовом небеартём612 лучик света в грозовом небеартём612 лучик света в грозовом небе
Регистрация: 10.10.2011
Сообщений: 65
Популярность: 772
Сказал(а) спасибо: 58
Поблагодарили 57 раз(а) в 32 сообщениях
Отправить сообщение для артём612 с помощью Skype™
 
По умолчанию Re: Нужна помощь с слежкой за процессами

Цитата:
тоесть вы хотите сначала снапшотом перебрать все процессы, а потом заново устроить перебор окон? о - оптимизация

Ну я только так себе это представлял..

Представьте пожалуйста пример кода который "оптимизирован".
желательно в личку если здесь это будет считаться не по теме...
  Ответить с цитированием
Старый 11.01.2015, 18:10   #8
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: Нужна помощь с слежкой за процессами

Уезжал немного. На скорую руку накидал:
Код:
function EnumThreadWndProc(Wnd: hWnd; Data: lParam): bool; stdcall;
// var
//   WindowText: array [0..255] of char;
begin
  // wnd - handle текущего окна потока, можно получить текст:
  // GetWindowText(Wnd, WindowText, 255);
  // или класс окна:
  // GetClassName(Wnd, WindowText, 255);
  // или что-либо ещё
  // перечислим дочерние окна, ОСТОРОЖНО РЕКУРСИЯ :D
  EnumChildWindow(Wnd, @EnumThreadWndProc, Data);
  result := True;
end;

procedure DoSmth;
var
  hProcessSnap, hModuleSnap, hThreadSnap: THandle;
  pe32: TProcessEntry32;
  me32: TModuleEntry32;
  te32: TThreadEntry32;
begin
  hProcessSnap := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  pe32.dwSize := SizeOf(TProcessEntry32);
  if Process32First(hProcessSnap, pe32) then
    repeat
    // pe32.szExeFile - путь к exe, его можно проверить
    // путь можно заюзать для получения FileDescription, подробнее:
    // http://zhyk.ru/forum/showpost.php?p=4282654&postcount=2
    hModuleSnap := CreateToolHelp32Snapshot(TH32CS_SNAPMODULE,
      pe32.th32ProcessID);
    me32.dwSize := SizeOf(TModuleEntry32);
      if Module32First(hModuleSnap, me32) then
        repeat
        // me32.szModule - имя модуля, его можно проверить
        // me32.szExePath - путь к модулю, его можно проверить
        hThreadSnap := CreateToolHelp32Snapshot(TH32CS_SNAPTHREAD,
          me32.th32ProcessID);
        te32.dwSize := SizeOf(TThreadEntry32);
          if Thread32First(hThreadSnap, te32) then
            repeat
              EnumThreadWindows(te32.th32ThreadID, @EnumThreadWndProc, 0);
            until not Thread32Next(hThreadSnap, te32);
        CloseHandle(hThreadSnap);
        until not Module32Next(hModuleSnap, me32);
    CloseHandle(hModuleSnap);
    until not Process32Next(hProcessSnap, pe32);
  CloseHandle(hProcessSnap);
end;
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
артём612 (11.01.2015), КириллZ (11.01.2015), MembRupt (11.01.2015), zZkamedosZz (17.05.2015)
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] [C#] проблема с таймером и процессами Некто_Я Вопросы и ответы, обсуждения 6 10.09.2011 20:48
[Статья] Передача сокетов между процессами Tem1q С/С++ 0 06.12.2010 16:33
Нужна помощь по приложению Город(помощь оплачу) legorii Баги игр ВКонтакте 1 10.03.2010 17:37

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 04:39.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net