Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для DillerInc

Обратный инженер


Сообщения: 644
Благодарности: 47

Профиль | Отправить PM | Цитировать


В общем,почитав всякого и наковырявшись с кодом "по полной программе",я к сожалению так конкретно и не понял почему возникает вышеописанная ошибка - ну,да бог с ним...
Во большинстве материалов,которые я читал,преподавалась следующая техника т.н. "сплайсинга" системных функций:
в адресном пространстве чужого процесса создаётся удалённый поток с помощью CreateRemoteThread,в который потом подгружается библиотека,ответственная за перехват системных функций (размещение своих команд в начале таких функций,перенаправление управления на свой код-перехватчик)...
Причём такой вариант трактуется именно как наиболее предпочтительный и эффективный.

Но теперь я здесь по иному вопросу.
Функция GetModuleHandle возвращает дескриптор указанного модуля,который,как я понял,является ни чем иным как базовым адрестом загрузки этого самого модуля.Проблема заключается походу в следующем:
Цитата MSDN:
The GetModuleHandle function retrieves a module handle for the specified module if the file has been mapped into the address space of the calling process.
...если опять-таки правильно понял,функция способна возвратить хэндлы только тех модулей,которые являются загруженными в адресное простанство вызывающего процесса.
А как можно получить такой дескриптор какого-нибудь модуля в чужом процессе ?

-------
То,что неясно,следует выяснить.То,что трудно творить,следует делать с великой настойчивостью. © Конфуций


Отправлено: 23:56, 01-08-2005 | #13