Сейчас на форуме: hgdagon, asfa, bartolomeo (+4 невидимых) |
![]() |
eXeL@B —› Программирование —› Обнаружение API хуков |
Посл.ответ | Сообщение |
|
Создано: 07 января 2007 06:47 · Личное сообщение · #1 Привет народ. Мне нужно написать программу, которая будет обнаруживать API хуки в своем процессе. Я сделал сравнение секций .code всех dll с содержимым их файлов на диске и сравнение адресов всех импортов с адресом API прочитаным из файла. Хочу спросить, как возможно обойти такую защиту (поставить бряк или хук)? Я вроде бы способов больше не вижу. ![]() |
|
Создано: 07 января 2007 07:08 · Поправил: HoBleen · Личное сообщение · #2 Если ты имеешь в виду 3-е кольцо: Метод анализа всей секции не совсем правильный - весь модуль может содержаться в одной секции: и код, и данные (естейственно измененные), и импорт. Тогда уж сравнивай начальные байты на jmp либо на другой перехват. Весь код тоже нельзя тупо сравнивать, т.к. он может быть изменен relocation'ами. CreateFile тоже может быть перехвачен - и прога не догадается об этом. ![]() |
|
Создано: 07 января 2007 07:10 · Личное сообщение · #3 cyber_pank пишет: Я сделал сравнение секций .code всех dll с содержимым их файлов на диске и сравнение адресов всех импортов с адресом API прочитаным из файла. не слишком ли долго это делается? шуршание харда будет раздражать... я вообще бряк на чтение файла и дальше до защиты не далеко ![]() хуков отломаюд))) ----- [nice coder and reverser] ![]() |
|
Создано: 07 января 2007 07:13 · Личное сообщение · #4 |
|
Создано: 07 января 2007 07:26 · Личное сообщение · #5 |
|
Создано: 07 января 2007 07:29 · Личное сообщение · #6 |
|
Создано: 07 января 2007 07:32 · Личное сообщение · #7 |
|
Создано: 07 января 2007 07:41 · Поправил: HoBleen · Личное сообщение · #8 |
|
Создано: 07 января 2007 07:51 · Личное сообщение · #9 HoBleen пишет: Тогда уж сравнивай начальные байты на jmp либо на другой перехват. Это ненадежно, ведь можно использовать не jmp, а push/ret, да и не единственный вариант это. HoBleen пишет: весь модуль может содержаться в одной секции: и код, и данные (естейственно измененные), и импорт У системных DLL я такого не видел, а другие можно и не проверять вобще. HoBleen пишет: Весь код тоже нельзя тупо сравнивать, т.к. он может быть изменен relocation'ами Это учитывается. HoBleen пишет: CreateFile тоже может быть перехвачен - и прога не догадается об этом. Добавлю проверку ЭЦП считаного системного файла. Все системные файлы обычно имеют подпись. HoBleen пишет: Еще очень просто хукать из нулевого кольца Ну, с этим потом разберемся. Сначала бы надо сделать невозможным хуки на ring3 код. Ну что, теперь железно? Больше похукать никак невозможно? ![]() |
|
Создано: 07 января 2007 07:57 · Личное сообщение · #10 cyber_pank пишет: Взлом самого кода защиты исключен, на нем будет VMProtect и сверху еще ExeCryptor. Навесь еще что нибудь сверху, может это увеличит твою увереность в неломаемости ![]() cyber_pank пишет: Ну что, теперь железно? Больше похукать никак невозможно? На каждую хитрую жопу найдется свой хуй винтом ![]() ----- Скажем дружно - нафиг нужно. ![]() |
|
Создано: 07 января 2007 08:12 · Поправил: HoBleen · Личное сообщение · #11 cyber_pank пишет: Добавлю проверку ЭЦП считаного системного файла. Все системные файлы обычно имеют подпись. Что ты имеешь в виду? CheckSum в хидере? Это не защита - она легко генерится. cyber_pank пишет: Больше похукать никак невозможно? Стандартными методами - наверное нет. Такая защита, хотя давно практически всем известна, нигде не используется - поэтому и методы ее обхода не обсуждаются. Станет твоя программа популярна - гарантирую - способы найдутся. А вообще если как-нибудь извратиться, обойти можно все. Ms-Rem пишет: На каждую хитрую жопу найдется свой хуй винтом ![]() ![]() ![]() +1 ![]() |
|
Создано: 07 января 2007 08:16 · Личное сообщение · #12 |
|
Создано: 07 января 2007 08:18 · Личное сообщение · #13 |
|
Создано: 07 января 2007 10:55 · Личное сообщение · #14 |
|
Создано: 07 января 2007 11:04 · Личное сообщение · #15 |
|
Создано: 07 января 2007 11:20 · Личное сообщение · #16 |
|
Создано: 08 января 2007 14:54 · Поправил: Gambit · Личное сообщение · #17 Anvost пишет: мне говорят, что код пошифрован Аспром и его невозможно взломать Аспирин не решает - на него сейчас сто-лько распаковщиков и статей ![]() Anvost пишет: Не знаю народ по-разному говорит. Кто-то демка, кто-то шифр. Дык, при установке обычно прога кричит, если она демка (переустанови и проверь) ЗЫ: Иногда кричит при запуске... Внимательно прочти, чем там ругается прога (ну не матом же ![]() ----- программистом не рождаются - им умирают ![]() |
|
Создано: 08 января 2007 18:32 · Личное сообщение · #18 Anvost пишет: Кто-то демка, кто-то шифр. Но раз ни у кого не получилось поломать прийдется от затеи отказаться В некоторых случаях демка действительно после ввода ключа становиться полной версией, в других случаях - нет. Посмотри в описании, по нему, как правило, можно сделать вывод о том, "превратиться" ли демка в полную версию или нет. Gambit пишет: Аспирин не решает - на него сейчас сто-лько распаковщиков и статей Распаковщики помогают снять защиту без криптованных секций, иначе - ограничения так и останутся. Anvost пишет: Выходит всё же есть непобедимая защита? Я уже как-то писал, что в случае применения криптованных секций, есть два выхода - брут-форс и поиск ошибок в применении автором методов криптографической защиты. И тот и другой требуют времени и знаний. ![]() |
|
Создано: 08 января 2007 21:34 · Личное сообщение · #19 |
|
Создано: 09 января 2007 00:26 · Личное сообщение · #20 |
|
Создано: 09 января 2007 01:59 · Поправил: seeq · Личное сообщение · #21 cyber_pank пишет: Мне нужно написать программу, которая будет обнаруживать API хуки в своем процессе. Дядя, для начала ты должен понимать одну простую вещь. Хукать может не только хакер да трояны/руткиты, а и полезные программы (Антивирусы/Фаерволы/разные программы защиты). Например Autpost так и делает. И твоя бесценная прога зря запаникует, что непременно передастся ее пользователю. cyber_pank пишет: Я сделал сравнение секций .code всех dll с содержимым их файлов на диске и сравнение адресов всех импортов с адресом API прочитаным из файла. Ты проверяешь всю секцию кода dll на диске, с секцией dll в памяти? И это для каждой dll? Если я правильно понял, то должен тебя разочаровать - это не слабый цикл. А если на этот цикл повесить VM, то юзер быстрее нажмет на Ctrl+ALT+Del, чем стартанет твоя программа. Да он успеет родить, пока она стартанет. ![]() ![]() Как выход, под NT вызывать все напрямую через int 2E. Правда, тогда хукнут код с вызовом Int2E в твоей проге ![]() cyber_pank пишет: Взлом самого кода защиты исключен, на нем будет VMProtect и сверху еще ExeCryptor. Ага, ну давай, давай. И без AniApiHook этого уже достаточно, что б пользователь от нее отказался. Да, ты правильно заметил, что Хук слабое место этой защиты. Вот только я не вижу его решения ![]() Еще я тебе советую почитать книги по защите, а особенно главы "Когда защиты бывает слишком много". Это похоже твой параноидальный случай. ![]() ![]() |
|
Создано: 09 января 2007 05:10 · Поправил: S_T_A_S_ · Личное сообщение · #22 seeq пишет: Ты проверяешь всю секцию кода dll на диске, с секцией dll в памяти? И это для каждой dll? Если я правильно понял, то должен тебя разочаровать - это не слабый цикл. Скорость как раз не главная проблема. Главное, что даже не надо лезть с ядро, что бы (при таком подходе к детекту) с диска "считались" нужные данные ![]() ![]() |
|
Создано: 09 января 2007 05:17 · Личное сообщение · #23 |
|
Создано: 09 января 2007 06:30 · Личное сообщение · #24 |
![]() |
eXeL@B —› Программирование —› Обнаружение API хуков |