|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 20, 2004 19:47:19 Обнаружил интересный эффект -- при внедрении в процеес subj и последующем перехвате функций перехвата не происходит, хотя с точки зрения перехватчика всё идёт нормально. Для внедрения используется способ описанный Рихтером -- перезапись IAT. Сходу возникает два вопроса -- 1. возможно-ли доработать алгоритм перехвата так чтобы устранить проблему ? 2. возможно-ли переделать UPX так чтобы вызываемые функции перехватывались правильно ? В принципе оба варианта годятся. Если кто может помочь -- буду очень признателен. |
|
|
Дата: Июл 20, 2004 20:07:23 QuiteTrack А вдруг прога вызывает функции не через импорт, а, скажем, через GetProcAddress? |
|
|
Дата: Июл 20, 2004 21:36:23 Quantum Не имеет значения. GetProcAddress перехватывается и возвращает адрес перехватчика. Почитай Рихтера. |
|
|
Дата: Июл 20, 2004 21:47:01 QuiteTrack Да, но вероятно она перехватывается тоже через IAT (Рихтера у меня нет, но читал статью на васме), а не в kernel'е. Я к тому, что существует масса способов обломать все эти методы перехвата и они активно используются в различных защитах. А UPX тут не причём. Для проверки рекомендую распаковать прогу и убедиться в том, что распакованный вариант также ускальзывает от перехватчика. В противном случае следует искать баг в самом перехватчике. |
|
|
Дата: Июл 20, 2004 22:28:02 · Поправил: Asterix Дык нет там IAT после UPX'а, в том месте по крайней мере что в заголовке прописан(вернее там IAT запакованного файла), скорее всего UPX сам импорт настраивает, я правда не помню сейчас точно как там есть на самом деле, мож Dr.Golova заглянет - поправит если я наплёл ;-) |
|
|
Дата: Июл 21, 2004 00:41:24 Asterix Точно! Он помещает в IAT только библиотеки с одной функцией, а настоящая IAT пакуется. |
|
|
Дата: Июл 21, 2004 10:58:25 · Поправил: QuiteTrack Quantum А дальше? Хук подвешивается к процессу при вызове MsgProc, а к этому времени UPX уже распаковал правильную IAT. Или он распаковывает её в другое место ? Баги все отловил, тестировал успешно на своих прогах и на чужих. Всё ок пока не начал паковать UPX-ом. |
|
|
Дата: Июл 21, 2004 19:25:35 > Точно! Он помещает в IAT только библиотеки с одной функцией, а настоящая IAT пакуется. Именно! Так что нужно перехватывать GetModuleHandle/GetProcAddress и через них насовать хуков в оригинальный IAT проги, когда декомпрессор будет связывать оригинальную таблицу импорта. А то на что показывает импорт из заголовка это фуфло - тока чтобы библиотеки нужные проге подгрузили при старте процесса. |
|
|
Дата: Июл 24, 2004 21:36:58 · Поправил: QuiteTrack Dr.Golova Так что нужно перехватывать GetModuleHandle/GetProcAddress и через них насовать хуков в оригинальный IAT проги Как получить оригинальный IAT ? То что ты описываешь не сработает -- UPX связывает адреса ДО внедрения в процесс. Похоже единственный вариант -- точно знать где хрантся рабочая таблица адресов и подменять адреса в ней. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.086 |