Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Контроль выполнения приложения из внешней программы

504
18 февраля 2005 года
lexluther
71 / / 26.10.2004
Всем привет,

Подскажите мне пожалуйста, как при помощи WinAPI можно запустить приложение, а потом контролировать его выполнение, - к примеру отслеживать когда данная программа будет писать на диск или в реестр, и как только она делает запрос на запись останавливать ее еще ДО(!) записи.

То есть, нужна инфа по следующим пунктам:
1. Контроль основных операций выполняемых приложением (особо интересуют реестр и файловый ввод/вывод). Не совсем понятен принцип работы Notify функций.
2. Возможность приостанавливать работу приложения.

Если можно, пожалуйста, дайте пару WinAPI функций по теме, принцип осуществления или исходник, а остальное я сам найду.

Заранее спасибо за любую помощь :),
 
Artiom Ivanov, L CEO
CubeReality Inc,
http://www.cubereality.com
487
19 февраля 2005 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by lexluther
Всем привет,

Подскажите мне пожалуйста, как при помощи WinAPI можно запустить приложение, а потом контролировать его выполнение, - к примеру отслеживать когда данная программа будет писать на диск или в реестр, и как только она делает запрос на запись останавливать ее еще ДО(!) записи.

То есть, нужна инфа по следующим пунктам:
1. Контроль основных операций выполняемых приложением (особо интересуют реестр и файловый ввод/вывод). Не совсем понятен принцип работы Notify функций.
2. Возможность приостанавливать работу приложения.

Если можно, пожалуйста, дайте пару WinAPI функций по теме, принцип осуществления или исходник, а остальное я сам найду.

Заранее спасибо за любую помощь :),
 
Artiom Ivanov, L CEO
CubeReality Inc,
http://www.cubereality.com




Цитата:
Originally posted by lexluther
Всем привет,

Подскажите мне пожалуйста, как при помощи WinAPI можно запустить приложение, а потом контролировать его выполнение, - к примеру отслеживать когда данная программа будет писать на диск или в реестр, и как только она делает запрос на запись останавливать ее еще ДО(!) записи.

То есть, нужна инфа по следующим пунктам:
1. Контроль основных операций выполняемых приложением (особо интересуют реестр и файловый ввод/вывод). Не совсем понятен принцип работы Notify функций.
2. Возможность приостанавливать работу приложения.

Если можно, пожалуйста, дайте пару WinAPI функций по теме, принцип осуществления или исходник, а остальное я сам найду.

Заранее спасибо за любую помощь :),

Artiom Ivanov, L CEO
CubeReality Inc,
http://www.cubereality.com



Обломс....
WinAPI для этого не предназначено совершенно.
Только грязный хак....

Могу предложить следующее:
Ищещь в инете библиотеку ForceLib (идет в исходниках).

Пишешь DLL-ку, в которой реализуешь следующий механизм:

1. При помощи описания формата PE и матюков в адрес Микрософта патчишь адреса интересующих тебя импортируемых функций (например CreateFileA или RegOpen(чего-то там)) на адреса wrap-функций, которые нужно реализовать в DLL-ке. Например:

Код:
HANDLE MyCreateFile((аргументы в том-же порядке что и у оригинального CreateFile))
{
    // тут по идее идет твой обработчик вызова
    // После этого (опционально) можем запустить оригинал функции
    __asm
    {
        push original_create_file // оригинальный адрес CreateFile - при патче сохраняем в отдельной переменной.
        ret
    }
    // Ну или как вариант
    __asm
    {
        jmp original_create_file
    }
    // Только ни в коем случае не call!!!!
}


Для патча тебе придется воспользоваться предварительно функцией VirtualProtect(Ex) - чтобы разрешить запись в память (в большинстве случаев по умолчанию этого сделать нельзя потому-что на секции импортов нет атрибута разрешающего запись в адресное пространство этой секции).

Загружаешь файл - например при помощи CreateProcess (в forcelib кстати есть небольшой примерчик на эту тему).

И при помощи спешильной функции из ForceLib подгружаешь свою DLL-ку в загруженый процесс. И оп-ля - дело в шляпе.

Так можно реализовать следилку на уровне 3 кольца.

Есть еще один способ - на уровне 0 кольца - тобишь драйверов операционной системы.

Тут тебе понадобится WinDDK или VToolsD. WinDDK - от мелкомягких. VToolsD - входит в комплект Numega Driver Studio.

Есть и хорошие примеры с исходниками на эту тему - идешь на сайт sysinternals.com и качаешь оттуда 2 проги Марка Руссиновича Filemon и Regmon.
С исходниками. Они мультиплатформенные.

Ну и дальше уже разбираешься с тем что там написано.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог