|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.01.2011, 05:15 | #1 |
Форумчанин
Регистрация: 29.04.2008
Сообщений: 100
|
перехват WinAPI
Здравствуйте.
Пишу программу для защиты данных корпоративных программ от шаловливых рук пользователей. Перехватываю функции обращения к реестру с помощью изменение адреса, перехватываемой функции, в таблицах импорта (IAT) используя код Д.Рихтера. По отдельности в разных библиотеках все работает. Проблема заключается в том, чтобы из одной DLL перехватить более одной функции. Уже который день бьюсь. Что и куда узнаю примерно так: Код:
P.S. Полный работоспособный пример можно взять тут Последний раз редактировалось hiho; 03.01.2011 в 05:21. |
03.01.2011, 10:58 | #2 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Цитата:
|
|
03.01.2011, 20:13 | #3 |
Форумчанин
Регистрация: 29.04.2008
Сообщений: 100
|
только потому что захотелось повысить уровень своего образования
|
03.01.2011, 23:42 | #4 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
ну тада чужие классы юзать не кошерно же посмотрю на днях, если что пишите в личку
Нет, ну правда..
|
04.01.2011, 01:31 | #5 |
Форумчанин
Регистрация: 29.04.2008
Сообщений: 100
|
Вы когда на велосипеде ездить учились, придумывали свой или же пользовались уже готовым классом для того, чтобы понять главный принцип работы руля с педалями?
То, что я взял основу, еще не означает, что я не разобрался и просто скопипастил код. Проблема, кстати, решена. Ошибка была в том, что во второй и последующий перехват использовался описатель функции для первого перехвата. |
04.01.2011, 06:42 | #6 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
Ну да, когда я писал свои велосипеды подобного рода я честно раскручивал импорты в каждом модуле адресного пространства процесса и это разумеется сразу добавило +10 к ЧСВ и -42 к невнимательности
PS: и ни в коем случае не стоит забывать о том, что если программа, которая полезет в реестр будет звать апишечки минуя таблицу импорта(что очень даже вполне может быть), скажем через тот же GetProcАdrеss и вызов по полученному адресу, то коварные шаловливые ручки пользователей до вас таки доберутся :-D
Нет, ну правда..
Последний раз редактировалось yuran666666; 04.01.2011 в 11:00. |
10.01.2011, 05:39 | #7 |
Форумчанин
Регистрация: 29.04.2008
Сообщений: 100
|
Что-то я застрял на сокрытии папки в Windows 7. Перехватываю функцию NtQueryDirectoryFile. Она пишет имя нужного элемента в 4 структуры, соответственно правлю нужные указатели в каждой из них, чтобы функция наш файл перескакивала.
Вроде бы все так. Да и на XP работает отлично. Либо я что-то не так делаю, либо семерка, после того как я поменял NtQueryDirectoryFile получает список файлов еще каким-то образом. Наставте на путь истиный =). Что-то не так со мной, или с семеркой... Пример обхода структуры FileBothDirectoryInformation: Код:
|
10.01.2011, 05:43 | #8 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
помоему семерка уже не на ядре Nt же построена...соотвественно там иначе идет.
поправьте коллеги, если попутал я.. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
10.01.2011, 06:05 | #9 |
Форумчанин
Регистрация: 23.04.2009
Сообщений: 346
|
Пепелу Фениксу: ну да, в результате массовой истерии микрыссофт, а также из уныния и отчаяния (а вы что хотели после висты-то?) вин7 была написана как надстройка над мсдос :-D
hiho: вы перехватываете функцию в процессе эксплорер? Какой способ перехвата? Выложите бинарник, который выполняет данный перехват-посмотрим почему происходит данная несправедливость.
Нет, ну правда..
Последний раз редактировалось yuran666666; 10.01.2011 в 06:10. |
10.01.2011, 17:57 | #10 |
Форумчанин
Регистрация: 29.04.2008
Сообщений: 100
|
Перехватываю все тем же способом, через таблицу импорта, до другого я пока не дорос. Перехватываю в эксплоере, загружая методом удаленных потоков.
Если ставить MessageBox в нашу функцию, то он вызываеться, а значит, что експлоер все-таки эту функцию использует. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Qt vs. WinAPI | Зелёный_спец | Общие вопросы C/C++ | 3 | 12.03.2010 15:34 |
WinApi и C++ | titan-prog | Win Api | 1 | 17.07.2008 21:02 |
WinApi | Andr | Безопасность, Шифрование | 3 | 17.06.2007 13:38 |