![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: нет Всего: 4 |
Доброго времени суток.
Есть программа 1.exe, которая подменяет системную библиотеку ws2_32.dll на свой экземпляр с экспортированными функциями. Если нужно обрабатывать функцию, то подменная библиотека обрабатывает, если не нужно, то отсылает оригинальной библиотеке. # Вопрос: Как можно защитится от подмены файла "ws2_32.dll" ? - Как вариант думал проверять Size, CRC32 и MD5 файла, но оказалось что таких файлов такое огромное множество, что я устал добавлять данные в библиотеку. - Причём у разных страх разная контрольная сумма файла WS2_32.DLL; (Точнее если разный язык ОС) P.S. -> Буду рад помощь или советам. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 2 Всего: 23 |
MuForum, повесить монитор пробовали?
|
|||
|
||||
MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: нет Всего: 4 |
Изменить системную .dll могут до запуска моей программы, так что не подходит. Проверять системную .dll по дате создания/редактирования - Глупо, т.к. Во-первых: Легко обойти. Во-вторых: Дата системных файлов разная. (Варируется примерно в диапозоне 5 минут) Нужен какой-то другой вариант. - Проверка по сигнатуре или что-то в этом духе, но чтобы работало везде. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
EvilsInterrupt |
|
|||
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 2 Всего: 9 |
MuForum, Непонятно, что значит "защититься" ? Обнаружить или недопустить подобное ?
ЗЫ: Вопрос не в этот форум! |
|||
|
||||
MuForum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 427 Регистрация: 13.6.2007 Где: Молдова, Кишинев Репутация: нет Всего: 4 |
# Задача: Мне необходимо определить подмену/замену системной библиотеки "ws2_32.dll". -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли) |
|||
|
||||
SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 2 Всего: 23 |
MuForum, вы ложите свою ws2_32.dll и хотите не дать её заменить?
Если да, то можно в эту DLL положить свою функу и по её наличию и(или) результату определять ваша ли это DLL |
|||
|
||||
EvilsInterrupt |
|
|||
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 2 Всего: 9 |
MuForum, где конкретно подменяет 1.exe ? Во всех процессах или конкретно одном ?
Если во всех, то вероятность сущестования руткита, я бы не решился в третьем кольце делать массовую подмену длл-ки!!! Попробуйте сделать так: 1) В своем проекте, который детектит у процесса(ов) подмену, вызовите какую-либо ф-цию из той длл-ки, какую хотите защитить(знать что она подменена). Это загрузит длл-ку в процесс вашей детектилки на этапе загрузки ! 2) узнайте в вашей exe-шке адрез загрузки длл-ки это GeModuleHandle или чтото в этом роде ;) 3) Узнайте SizeOfImage , туда посмотрите в ее PE-заголовок 4) Проследуйте в процесс который нужно проанализить на предмет подмены длл-ки и сопставив адрес можно выносить вердикт что подменили!!! Эффект основан на том что MS - файлы,длл-ки разработаны с отличнейшим ImageBase, который во множестве случаев (а их очень много) не меняется, т.е. грузится по указаному в ImageBase адресу! А видя куда ведут ф-ции из лже-дллки можно узнать ее модуль и знать ее hInstance + SizeOfImage сумбурно, но думаю понятно ;) |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
EvilsInterrupt, чтото ты перемудрил
достаточно сделать GetModuleFileName(GetModuleHandle("ws2_32"), ...) и проверить лежит ли она в системной директории Добавлено через 1 минуту и 13 секунд либо способ посложнее и понадежнее - прочитать с диска ту ws2_32 которая лежит в системной директории, и сравнить ее с той что находится в памяти Добавлено через 3 минуты и 51 секунду очевидно, что подменять ws2_32 будут только нубы, по этому никакие апи не будут перехвачены, те кто умеют перехватывать апи - не юзают такой некошерный способ как подмена ws2_32 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |