Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как"узнать" чужое приложение, пользуясь средствами WinAPI 
:(
    Опции темы
SvetRus
Дата 19.6.2008, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.6.2008

Репутация: нет
Всего: нет



///Лирическая часть.
Задача такая. Есть 2 программиста - А и Б. 
А пишет программу... скажем аналог ICQ. Раздаёт её пользователям. Иногда обновляет её. И знает что Б его очень-очень не любит.
Б пишет программу, которая должна засекать наличие на компьютерах в сети творчества А.
Мы "играем" на стороне Б.

/////Суть проблемы. 
Необходимо засечь запущенно ли приложение. Просто искать по имени процесса не даст нужной эффективности.
Я порылся по форуму, нашёл вот этот топик http://forum.vingrad.ru/topic-75232.html , появилась идея сканировать подобным способом все открытые процессы и сравнивать список подгруженных dll-ок с необходимыми для работы приложения А(а используется их в приложении А порядка 20). Кто-нибудь сталкивался с подобной задачей? Подскажите в каком направлении копать ;)
PM MAIL   Вверх
DRUID3
Дата 19.6.2008, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 20.6.2005
Где: Kyyiv

Репутация: нет
Всего: 9



Советую начать с детального изучения уголовного кодекса и тюремных нравов smile 


--------------------
Every time if you use Linux, you are joined to the communism...
практика - критерий истины ... отделенной от нас пропастью субъективного восприятия...
PM MAIL WWW Skype   Вверх
SvetRus
Дата 19.6.2008, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.6.2008

Репутация: нет
Всего: нет



Уточняю. Есть приложение клиент - сервер. Недобросовестные юзеры ставят себе приложение А и с помощью него хукаются в клиентскую часть, или генерируют ложные пакеты. Задача создать приложение Б, без которого доступ к серверу будет невозможен, а само приложение следило бы за честностью подключения. Вопрос в том, как опознать врага.

Это сообщение отредактировал(а) SvetRus - 20.6.2008, 00:01
PM MAIL   Вверх
DRUID3
Дата 20.6.2008, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 20.6.2005
Где: Kyyiv

Репутация: нет
Всего: 9



Цитата(SvetRus @  19.6.2008,  22:55 Найти цитируемый пост)
Вопрос в том, как опознать врага.
 опознают ли "врага" радиостанция и радиоприемник? А базовая станция и мобила? .... Чтобы исключить подсоединение "левых" юзеров, клиент-сервер должны меняться ключами (способов - уймище!!!). Если Вы по одну сторону баррикад в сервер тоже не составит труда внести изменения. А вот то, что хотите Вы, попахивает вредоносным софтом даже если намерения и благие. 



--------------------
Every time if you use Linux, you are joined to the communism...
практика - критерий истины ... отделенной от нас пропастью субъективного восприятия...
PM MAIL WWW Skype   Вверх
SvetRus
Дата 20.6.2008, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.6.2008

Репутация: нет
Всего: нет



Ключи к сожалению не решают всей проблемы, при хуке в клиент защита ключами/шифрованием обходится.
P.S. получается Данилов и Касперский злостные нарушители УК? xD
PM MAIL   Вверх
W4FhLF
Дата 20.6.2008, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



SvetRus, твоя задача - это палка о двух концах. На любое действия Б против А, последний найдёт своё противодействие. И так будет пока кто-то из вас не сделает качественный скачок, например не напишет драйвер, который бы выгружал юзермодное приложение А. Если же А тоже напишет драйвер, то тут всё становится интересней, в конце концов всё будет зависеть от того, кто из вас первым грузится в систему, тот и победит. smile 

Если же тебя интересуют пока простые методы, то их масса. Помимо имени процесса, ты можешь получить имена окон, если таковые имеются. Можешь расчитать контролью сумму файлов процессов(т.е. тех exe файлов, которые запущены) и найти среди них А(если его конрольная сумма тебе известна). Далее, можно идентифицировать файл по каким-то внутренним отличительным особенносьтям. Начиная с PE заголовка(названия секций, дата создания, директория ресурсов) и заканчивая сигнатурным анализом кода. Но ты ведь понимаешь, что каждый из этих методов имеет свои тонкие места и если А заинтересован в этом и развивается, то и тебе придётся не спать smile 

Скажу тебе, что пока вы оба в юзермоде, ты находишься в более комфортных условиях, нежели автор А. 

С dll'ками вариант плохой, его сразу отбрось. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
SvetRus
Дата 20.6.2008, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.6.2008

Репутация: нет
Всего: нет



W4FhLF, Я нахожусь в более комфортных условиях, т.к. конечный пользователь больше заинтересован в использовании клиент-сервера, а использование творчества А это некий соблазн. Выгружать приложение А я не собираюсь, целью будет написать приложение которое будет посылать разрешение на коннект к серверу если А не обнаружено. И не разрешать подключение к серверу если А запущено.
А теперь по части советов-
Цитата
Помимо имени процесса, ты можешь получить имена окон, если таковые имеются
 Я так понимаю, изменить имена окон, как и имя процесса минутное делои решением проблемы это быть не может
Цитата
Можешь расчитать контролью сумму файлов процессов(т.е. тех exe файлов, которые запущены) и найти среди них А(если его конрольная сумма тебе известна)
 Тут тоже сложность. Приложение А у меня есть и вполне доступно для анализа. Однако мне придётся модифицировать защиту при каждом изменении контрольной суммы приложения А. А ведь её наверно могут сделать и динамической.
Цитата
Далее, можно идентифицировать файл по каким-то внутренним отличительным особенносьтям.
 Это и есть моя цель. Я осознаю что с другой стороны баррикад будет вестись работа, но в этом как раз и заключается нетривиальность задачи.
Цитата
С dll'ками вариант плохой, его сразу отбрось. 

По части библиотек... хочу проверить на сколько индивидуален "минимальный" набор библиотек для приложения А. проверил 3 версии этой программы и выявил список из 40+ библиотек присутствующих в обязательном порядке. Этот список врядли даст возможность заявить о том что некое приложение принадлежит к классу А. Но вполне подойдёт чтобы сузить список дальнейшего поиска.
Может подскажешь где искать информацию по PE заголовкам и сигнатурному анализу кода? У данного приложения существуют характерные участки кода, но моя основная специализация защита данных при передаче, и поэтому я даже не знаю с чего начать  smile 


Это сообщение отредактировал(а) SvetRus - 20.6.2008, 10:34
PM MAIL   Вверх
W4FhLF
Дата 20.6.2008, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Цитата(SvetRus @  20.6.2008,  10:32 Найти цитируемый пост)
Выгружать приложение А я не собираюсь, целью будет написать приложение которое будет посылать разрешение на коннект к серверу если А не обнаружено. И не разрешать подключение к серверу если А запущено.


Тогда, скорее всего, дойдёт до того, что А будет перехватывать твоё "неразрешение" и подменять его "разрешением". Я бы так сделал) Пускай меня палят, какая разница? В работу никто не вмешивается, остаётся только перехватить и подменить.


Цитата(SvetRus @  20.6.2008,  10:32 Найти цитируемый пост)
По части библиотек... хочу проверить на сколько индивидуален "минимальный" набор библиотек для приложения А. проверил 3 версии этой программы и выявил список из 40+ библиотек присутствующих в обязательном порядке.


"в обязательном порядке" - это, скорее всего, только на твоей системе. Приложение А использует какие-то относительно редкие компоненты системы? Без которых А работать не может. Вот за это я бы и цеплялся.

Цитата(SvetRus @  20.6.2008,  10:32 Найти цитируемый пост)
Может подскажешь где искать информацию по PE заголовкам и сигнатурному анализу кода?


http://www.nf-team.org/drmad/zf/zf5/zf5_010.htm
http://www.nf-team.org/drmad/zf/zf5/zf5_011.htm
http://www.nf-team.org/drmad/zf/zf5/zf5_012.htm




--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0470 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.