![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отличить поток ?
TPotokShell © (2004-08-11 12:31:00)Уважаемые Мастера, как отличить "родной" поток (Thread) приложения, от "неродного" - созданного в нём с помощью CreateRemoteThread ?
Заранее спасибо .
Digitman (2004-08-12 08:17:00) [1]
> TPotokShell
"кто предупрежден, тот вооружен"
самое простое - действуй теми же методами)
внедряй в АП всех потенциально опасных с этой т.з. процессов свой трэд, который перехватит вызов CreateRemoteThread()
TPotokShell (2004-08-11 20:47:00) [2]Digitman © (11.08.04 14:05) [10]
//следует пресекать не работу "чужого" трэда, а попытку его старта !
а такое возможно ? как ?
Digitman (2004-08-11 14:05:00) [3]
> TPotokShell
ты что, вознамерился "пасти" чужие потоки в своем процессе и "прибивать" их при обнаружении ?
схлопочешь кучу проблем !
следует пресекать не работу "чужого" трэда, а попытку его старта !
Игорь Шевченко (2004-08-11 13:40:00) [4]
> а какой адрес старта должен быть у "родного" потока ?
А запустить на нормальной системе и посмотреть не судьба ?
TPotokShell (2004-08-11 13:32:00) [5]Игорь Шевченко © (11.08.04 13:23) [7]
а какой адрес старта должен быть у "родного" потока ?
Игорь Шевченко (2004-08-11 13:23:00) [6]
> но как узнать, сколько должно быть их например у сторонненго
> приложения ? (например експлорера ?)
Запустить Process Explorer от www.sysinternals.com, вдумчиво смотреть на адреса старта потоков.
TPotokShell (2004-08-11 13:19:00) [7]Игорь Шевченко © (11.08.04 12:52) [3]
спасибо :)
но как узнать, сколько должно быть их например у сторонненго приложения ? (например експлорера ?)
TPotokShell (2004-08-11 13:19:00) [8]и можно ли как-нить по самому потоку узнать, "настоящий" ли он ?
Мастер (2004-08-11 13:15:00) [9]>TPotokShell (11.08.04 12:42) [2]
оно "хочет узнать" - но как ?
1. если тебе неизвестно, как получить количество потоков, то см. Игорь Шевченко © (11.08.04 12:52) [3]
2. Если тебе нужно идентифицировать "свои" потоки и "чужие", то "свои" ты в любом случае должен знать заранее. Ведь как-то ты эти потоки создаешь?
Если используешь WinApi32, то это CreateTread, если VCL, то TTHread.
В любом случае ты точно должен знать "свои" потоки, т.е. вести учет.
Игорь Шевченко (2004-08-11 12:52:00) [10]
> Уважаемые Мастера, как отличить "родной" поток (Thread)
> приложения, от "неродного" - созданного в нём с помощью
> CreateRemoteThread ?
Надо понимать, что это для NT-систем ? Так как CreateRemoteThread работает там.
Тогда, NTQueryQuerySystemInformation (ProcessesAndThreads, ...),
узнать, сколько потоков у процесса, сравнить с тем, что должно быть и бить тревогу, если не совпадает
TPotokShell (2004-08-11 12:42:00) [11]Мастер © (11.08.04 12:37) [1]
оно "хочет узнать" - но как ?
Мастер (2004-08-11 12:37:00) [12]Ну вообще-то твое приложение должно знать, что творится с потоками внутри него.