Сейчас на форуме: hgdagon, asfa, bartolomeo (+4 невидимых)

 eXeL@B —› Программирование —› Обнаружение API хуков
Посл.ответ Сообщение

Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 января 2007 06:47
· Личное сообщение · #1

Привет народ. Мне нужно написать программу, которая будет обнаруживать API хуки в своем процессе.
Я сделал сравнение секций .code всех dll с содержимым их файлов на диске и сравнение адресов всех импортов с адресом API прочитаным из файла.
Хочу спросить, как возможно обойти такую защиту (поставить бряк или хук)? Я вроде бы способов больше не вижу.




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 07 января 2007 07:08 · Поправил: HoBleen
· Личное сообщение · #2

Если ты имеешь в виду 3-е кольцо:
Метод анализа всей секции не совсем правильный - весь модуль может содержаться в одной секции: и код, и данные (естейственно измененные), и импорт. Тогда уж сравнивай начальные байты на jmp либо на другой перехват. Весь код тоже нельзя тупо сравнивать, т.к. он может быть изменен relocation'ами.
CreateFile тоже может быть перехвачен - и прога не догадается об этом.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 07 января 2007 07:10
· Личное сообщение · #3

cyber_pank пишет:
Я сделал сравнение секций .code всех dll с содержимым их файлов на диске и сравнение адресов всех импортов с адресом API прочитаным из файла.


не слишком ли долго это делается? шуршание харда будет раздражать...
я вообще бряк на чтение файла и дальше до защиты не далеко а вообще и без
хуков отломаюд)))

-----
[nice coder and reverser]





Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 07 января 2007 07:13
· Личное сообщение · #4

Hellspawn
Я так понял что cyber_pank имеет ввиду защиту от троянов, а не от крякеров (это уж точно не сложно обойти).
cyber_pank
Я прав?



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 января 2007 07:26
· Личное сообщение · #5

HoBleen пишет:
Я так понял что cyber_pank имеет ввиду защиту от троянов

Да. Я пишу программу для хранения паролей и шифрования данных.

Hellspawn пишет:
я вообще бряк на чтение файла и дальше до защиты не далеко

Взлом самого кода защиты исключен, на нем будет VMProtect и сверху еще ExeCryptor.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 07 января 2007 07:29
· Личное сообщение · #6

cyber_pank пишет:
Взлом самого кода защиты исключен, на нем будет VMProtect и сверху еще ExeCryptor.


хех) лучше бы упх бы пожал... "быстрая" наверное прога будет ппц)))
ExeCryptor тоже хуки палит, тока глупо

-----
[nice coder and reverser]




Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 января 2007 07:32
· Личное сообщение · #7

Ну а все таки, как еще можно похукать API? Неужели нет вариантов при условии, что сами проверки защищены железно?




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 07 января 2007 07:41 · Поправил: HoBleen
· Личное сообщение · #8

cyber_pank пишет:
Неужели нет вариантов

Конечно есть - о некоторых я выше написал. "Железноcти" проверок я что-то не увидел.
Еще очень просто хукать из нулевого кольца - например, касперыч так делает. А там способов - море.



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 января 2007 07:51
· Личное сообщение · #9

HoBleen пишет:
Тогда уж сравнивай начальные байты на jmp либо на другой перехват.

Это ненадежно, ведь можно использовать не jmp, а push/ret, да и не единственный вариант это.

HoBleen пишет:
весь модуль может содержаться в одной секции: и код, и данные (естейственно измененные), и импорт

У системных DLL я такого не видел, а другие можно и не проверять вобще.

HoBleen пишет:
Весь код тоже нельзя тупо сравнивать, т.к. он может быть изменен relocation'ами

Это учитывается.

HoBleen пишет:
CreateFile тоже может быть перехвачен - и прога не догадается об этом.

Добавлю проверку ЭЦП считаного системного файла. Все системные файлы обычно имеют подпись.

HoBleen пишет:
Еще очень просто хукать из нулевого кольца

Ну, с этим потом разберемся. Сначала бы надо сделать невозможным хуки на ring3 код.

Ну что, теперь железно? Больше похукать никак невозможно?




Ранг: 120.6 (ветеран)
Активность: 0.090
Статус: Участник
rootkit developer

Создано: 07 января 2007 07:57
· Личное сообщение · #10

cyber_pank пишет:
Взлом самого кода защиты исключен, на нем будет VMProtect и сверху еще ExeCryptor.

Навесь еще что нибудь сверху, может это увеличит твою увереность в неломаемости Ну а юзеры авось от такой глючной и тормозной проги откажуться.


cyber_pank пишет:
Ну что, теперь железно? Больше похукать никак невозможно?

На каждую хитрую жопу найдется свой хуй винтом

-----
Скажем дружно - нафиг нужно.





Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 07 января 2007 08:12 · Поправил: HoBleen
· Личное сообщение · #11

cyber_pank пишет:
Добавлю проверку ЭЦП считаного системного файла. Все системные файлы обычно имеют подпись.

Что ты имеешь в виду? CheckSum в хидере? Это не защита - она легко генерится.

cyber_pank пишет:
Больше похукать никак невозможно?

Стандартными методами - наверное нет. Такая защита, хотя давно практически всем известна, нигде не используется - поэтому и методы ее обхода не обсуждаются. Станет твоя программа популярна - гарантирую - способы найдутся.
А вообще если как-нибудь извратиться, обойти можно все.

Ms-Rem пишет:
На каждую хитрую жопу найдется свой хуй винтом


+1



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 января 2007 08:16
· Личное сообщение · #12

HoBleen пишет:
Что ты имеешь в виду? CheckSum в хидере?

Нет, я имею в виду сертификаты.

HoBleen пишет:
Стандартными методами - наверное нет.

Значит не найдете вы никакого винта




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 07 января 2007 08:18
· Личное сообщение · #13

cyber_pank
Я имел ввиду общеприменимыми в настоящее время.



Ранг: 23.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 07 января 2007 10:55
· Личное сообщение · #14

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

Выходит всё же есть непобедимая защита?

Извиняюсь, что запостил не совсем по теме.




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 07 января 2007 11:04
· Личное сообщение · #15

Anvost
Если я не ошибаюсь: по постам из "запросов" видно, что твоя прога - демка, версия в эбауте и т.д. - всего лишь фейк; после ввода правильного ключа из инета выкачивается полная версия. Аспирин здесь ни при чем.



Ранг: 23.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 07 января 2007 11:20
· Личное сообщение · #16

Не знаю народ по-разному говорит. Кто-то демка, кто-то шифр.
Но раз ни у кого не получилось поломать прийдется от затеи отказаться.
Может автор действительно решил 8 версию сделать демо.
А 7 была полная, поэтому я так и решил по аналогии.




Ранг: 107.6 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 08 января 2007 14:54 · Поправил: Gambit
· Личное сообщение · #17

Anvost пишет:
мне говорят, что код пошифрован Аспром и его невозможно взломать

Аспирин не решает - на него сейчас сто-лько распаковщиков и статей

Anvost пишет:
Не знаю народ по-разному говорит. Кто-то демка, кто-то шифр.

Дык, при установке обычно прога кричит, если она демка (переустанови и проверь)
ЗЫ: Иногда кричит при запуске... Внимательно прочти, чем там ругается прога (ну не матом же )

-----
программистом не рождаются - им умирают




Ранг: 136.5 (ветеран)
Активность: 0.030
Статус: Участник

Создано: 08 января 2007 18:32
· Личное сообщение · #18

Anvost пишет:
Кто-то демка, кто-то шифр.
Но раз ни у кого не получилось поломать прийдется от затеи отказаться

В некоторых случаях демка действительно после ввода ключа становиться полной версией, в других случаях - нет. Посмотри в описании, по нему, как правило, можно сделать вывод о том, "превратиться" ли демка в полную версию или нет.
Gambit пишет:
Аспирин не решает - на него сейчас сто-лько распаковщиков и статей

Распаковщики помогают снять защиту без криптованных секций, иначе - ограничения так и останутся.
Anvost пишет: Выходит всё же есть непобедимая защита?
Я уже как-то писал, что в случае применения криптованных секций, есть два выхода - брут-форс и поиск ошибок в применении автором методов криптографической защиты. И тот и другой требуют времени и знаний.




Ранг: 107.6 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 08 января 2007 21:34
· Личное сообщение · #19

cyber_pank пишет:
Взлом самого кода защиты исключен, на нем будет VMProtect и сверху еще ExeCryptor.

Ну монстр . А сверху это все Армагедоном полей - тогда точно защита будет неломаема - для новичков

-----
программистом не рождаются - им умирают




Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 09 января 2007 00:26
· Личное сообщение · #20

cyber_pank пишет:
как возможно обойти такую защиту (поставить бряк или хук)?

Бряк можно поставить с помощью SetThreadContext. Что бы говорить о хуках, сначала надо знать что хукать. По крайней мере один простой способ не учтен.




Ранг: 105.9 (ветеран)
Активность: 0.060
Статус: Участник

Создано: 09 января 2007 01:59 · Поправил: seeq
· Личное сообщение · #21

cyber_pank пишет:
Мне нужно написать программу, которая будет обнаруживать API хуки в своем процессе.

Дядя, для начала ты должен понимать одну простую вещь. Хукать может не только хакер да трояны/руткиты, а и полезные программы (Антивирусы/Фаерволы/разные программы защиты). Например Autpost так и делает. И твоя бесценная прога зря запаникует, что непременно передастся ее пользователю.

cyber_pank пишет:
Я сделал сравнение секций .code всех dll с содержимым их файлов на диске и сравнение адресов всех импортов с адресом API прочитаным из файла.

Ты проверяешь всю секцию кода dll на диске, с секцией dll в памяти? И это для каждой dll? Если я правильно понял, то должен тебя разочаровать - это не слабый цикл. А если на этот цикл повесить VM, то юзер быстрее нажмет на Ctrl+ALT+Del, чем стартанет твоя программа. Да он успеет родить, пока она стартанет. Вот по этому, на цикли VM не ставится, а соответственно твой Antihook сразу спалится. Да, еще, а как ты реализуешь свой способ, уж не через Createfile.

Как выход, под NT вызывать все напрямую через int 2E. Правда, тогда хукнут код с вызовом Int2E в твоей проге. А идею с AniHook советую тебе оставить. Только нестабильность работы получишь и больше ничего.

cyber_pank пишет:
Взлом самого кода защиты исключен, на нем будет VMProtect и сверху еще ExeCryptor.

Ага, ну давай, давай. И без AniApiHook этого уже достаточно, что б пользователь от нее отказался. Да, ты правильно заметил, что Хук слабое место этой защиты. Вот только я не вижу его решения. Тем более можно саму Kernell32/ntdll в винде отпатчить.

Еще я тебе советую почитать книги по защите, а особенно главы "Когда защиты бывает слишком много". Это похоже твой параноидальный случай.



Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 09 января 2007 05:10 · Поправил: S_T_A_S_
· Личное сообщение · #22

seeq пишет:
Ты проверяешь всю секцию кода dll на диске, с секцией dll в памяти? И это для каждой dll? Если я правильно понял, то должен тебя разочаровать - это не слабый цикл.

Скорость как раз не главная проблема. Главное, что даже не надо лезть с ядро, что бы (при таком подходе к детекту) с диска "считались" нужные данные




Ранг: 120.6 (ветеран)
Активность: 0.090
Статус: Участник
rootkit developer

Создано: 09 января 2007 05:17
· Личное сообщение · #23

S_T_A_S_
Аффтар топика вроде говорил о том, что он проверяет сертификаты считаных файлов.

-----
Скажем дружно - нафиг нужно.




Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 09 января 2007 06:30
· Личное сообщение · #24

Значит будет 2я "проблема". Разделяй и властвуй.


 eXeL@B —› Программирование —› Обнаружение API хуков
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати