|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Апр 18, 2004 00:31:26 Облазил всю статью по перехвату! Ну не получается, блин! Подкиньте примеров плиз! |
|
|
Дата: Апр 18, 2004 05:20:04 · Поправил: Quantum В самой статье примеров предостаточно! Ну, и поиском по форуму воспользоваться не помешает. |
|
|
Дата: Апр 18, 2004 16:46:26 Конкретно опиши проблему - получишь конкретный ответ. А примеров в статье действительно предостаточно. |
|
|
Дата: Апр 18, 2004 17:40:39 Вообще на ASM-е код примеров не маленький. На счет inf-ы - эта штука не плохая: Рихтер->глава 22->"Перехват API с использованием раздела импорта" |
|
|
Дата: Апр 18, 2004 18:26:55 Вот тут выкорчевал из проги кусок. Как пример, думаю сгодится. -No optimise -No comment -Перехватывает MessageBoxA@16 710003808__InterHk.rar |
|
|
Дата: Апр 20, 2004 15:24:01 А как перехватить API sice понятно sys дает ему приоритет едра ,а дальше ? |
|
|
Дата: Апр 20, 2004 21:36:44 · Поправил: PavPS Так это продолжение Твоей темы про то как это делает SoftIce, или просто, как это можно сделать еше каким нибудь способов, например, из ядра??? |
|
|
Дата: Апр 21, 2004 08:35:04 А как это можно сделать еше каким нибудь способов, например, из ядра ?:) |
|
|
Дата: Апр 21, 2004 13:46:55 · Поправил: PavPS Из очевидных знаю несколько (точнее пользовал), но они разные по сложности, опасности и надежности. Если не из ядра, то действительно приходится рыскать по таблице импорта, заменять на ф-ии в своей длл-ке которую перд этим аттачишь. Но каково разочарование, когда какой-то процесс тебя, при попытке OpenProcess@?? отсылает на ... т.к. нет прав; или еше хуже, когда тот же Wincmd импортирует только LoadLibrary@?? и GetProcAddress@?? (ну и еще чуть-чуть). А в ядре воля... летишь высоко..., но сваливаешься сразу на #GP|#PF. В ядре, если ставить глобальный хук, то ессно целесообразнее его ставить в аресном пр-ве, которое проецируется на все процессы (в NT это верхние 2 Гб). Можно, конечно и по контекстам процессов полазить, поискать чё-нить, но это гемор, и влом. Так вот те самые очевидные способы. 1) перехватить шлюз Int 2Eh 2) поправить адрес в таблице сервисов на свои 3) переправить на JMP первые байты в нужных библиотеках у нужных ф-й Конечно, для этого код проги-перхватчика должен располагаться так же «наверху» в 0 кольце (хотя бы драйвер). В большинстве случаев удается установить хук на мн-во API, из NTOSKRNL, HAL… (так, например, куча ф-й из kernel ссылается на NTDLL, и так же зачастую ч/з таблицу сервисов идет дальше). Чтобы узнать какие ф-ии так делают – только SoftIce (всмысле если нет больше inf-ы). Но неожиданно подкрадутся куча проблем: опечатки, ошибки и недосмотры приведут к #GP. Возникнут проблемы с синхронизацией, скоростью и т.д. З.Ы. Не смотря на кучу преград результат – действительно глобальный хук (ну до SoftIce-а далеко :))). |
|
|
Дата: Апр 21, 2004 15:56:56 ОК C Эти понятно перебеваю экспокт и .т.д но когда неможеш узнать процес тогда как ? задача: в системе множество процессов , они вызывают одну API функцию цель перехватить и откоректировать |
|
|
Дата: Апр 21, 2004 16:59:41 Ну так иди в 0-е кольцо и хватай. А в чем собственно проблема (конечно же, если не в самом переходе ко "всевышнему")? Берешь, ставишь BPX EnumProcesses@?? :) и исследуешь, куда она идет, ну и типа там её и захватываешь. Если я не о том, то можно по подробнее о проблеме...? |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.063 |