Каким образом приложение может узнать о том, что кто-то перехватывает api вызовы? Для конкретизации, в пример: приложение на Delphi, работает с сокетами. А кто-то перехватывает все winsocket вызовы (send, recv, ...) через madCodeHook. Каким образом/способами приложение может определить наличие перехвата? madCodeHook — http://www.madshi.net/madCodeHookDescription.htm Спасибо.
Все зависит от метода перехвата. Если сплайс - то загрузка файла с диска и определение правленных начальных байт, если правка IAT, то также загрузка с диска оригинальной копии и сравнение с оригинальными адресами и анализ переходов, для самого простого случая если есть переход в начале функции (push/ret, jmp/jxxx), то функция похучена. Для каждого метода перехвата свой способ отлова, который естественно зависит от метода, ведь "перехват" это понятние переносное, на самом то деле ставить просто переход на другую часть кода, либо правится какая-то таблица адресов функций.
asmlamo Не понимаю о чем ты. Антихук методы базируются на самих методах хука. Антиантихук методы базируются на самих антихук методах.
Смотрю многие активно юзают этот мадхук. Никогда не пользовался, ни понимаю отчего такая его популярность. К тому же SST хукают антивири и фаеры так что это ещё тот вопрос. Зы. Знаю методы на которых замучаются пыль глотать, чтобы определить перехват.
Спасибо. А если подвести итог под всеми методами хука, то сколько их получается: сплайсинг, IAT, ... что ещё?
who5 Фейковая dll, имхо самый простой и надёжный метод. Спрашивается как прога будет его мониторить? По сигнатурам что-ли, лольный метод -). В XP SP2 есть дополнительные методы, сплайсинг там узаконен. И ещё например если поковырять как функции переходят в ядро SP2, тоже интересный перехват можно сделать.
Ну можно еще всякие изварщения(хотя как сказать) int3 в начало функции, хардварный бряк, SEH + инструкция вызывающая экспешн в начало...
Еще раз всем спасибо! Посмотрел статью "Перехват API функций в Windows NT (часть 1).", там все же говориться о двух основных методах - это: патчинг таблицы импорта и сплайсинг. Я посмотрел описание методик в madCodeHook, встретил интересное: Патчинг таблицы экспорта - Export Table Patching, что это такое? Simple Code Overwriting - это типа простой сплайсинг Extended Code Overwriting - это типа расширенный сплайсинг, ничего не понял, что это? Madshi's Code Overwriting - сплайсинг, заменяется 6 байт - в чем сила? Madshi's Mixture Mode - ? http://help.madshi.net/ApiHookingMethods.htm