HANDLE MyCreateFile((аргументы в том-же порядке что и у оригинального CreateFile))
{
// тут по идее идет твой обработчик вызова
// После этого (опционально) можем запустить оригинал функции
__asm
{
push original_create_file // оригинальный адрес CreateFile - при патче сохраняем в отдельной переменной.
ret
}
// Ну или как вариант
__asm
{
jmp original_create_file
}
// Только ни в коем случае не call!!!!
}
Контроль выполнения приложения из внешней программы
Подскажите мне пожалуйста, как при помощи 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 можно запустить приложение, а потом контролировать его выполнение, - к примеру отслеживать когда данная программа будет писать на диск или в реестр, и как только она делает запрос на запись останавливать ее еще ДО(!) записи.
То есть, нужна инфа по следующим пунктам:
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 можно запустить приложение, а потом контролировать его выполнение, - к примеру отслеживать когда данная программа будет писать на диск или в реестр, и как только она делает запрос на запись останавливать ее еще ДО(!) записи.
То есть, нужна инфа по следующим пунктам:
1. Контроль основных операций выполняемых приложением (особо интересуют реестр и файловый ввод/вывод). Не совсем понятен принцип работы Notify функций.
2. Возможность приостанавливать работу приложения.
Если можно, пожалуйста, дайте пару WinAPI функций по теме, принцип осуществления или исходник, а остальное я сам найду.
Заранее спасибо за любую помощь :),
Artiom Ivanov, L CEO
CubeReality Inc,
http://www.cubereality.com
Обломс....
WinAPI для этого не предназначено совершенно.
Только грязный хак....
Могу предложить следующее:
Ищещь в инете библиотеку ForceLib (идет в исходниках).
Пишешь DLL-ку, в которой реализуешь следующий механизм:
1. При помощи описания формата PE и матюков в адрес Микрософта патчишь адреса интересующих тебя импортируемых функций (например CreateFileA или RegOpen(чего-то там)) на адреса wrap-функций, которые нужно реализовать в DLL-ке. Например:
Код:
Для патча тебе придется воспользоваться предварительно функцией VirtualProtect(Ex) - чтобы разрешить запись в память (в большинстве случаев по умолчанию этого сделать нельзя потому-что на секции импортов нет атрибута разрешающего запись в адресное пространство этой секции).
Загружаешь файл - например при помощи CreateProcess (в forcelib кстати есть небольшой примерчик на эту тему).
И при помощи спешильной функции из ForceLib подгружаешь свою DLL-ку в загруженый процесс. И оп-ля - дело в шляпе.
Так можно реализовать следилку на уровне 3 кольца.
Есть еще один способ - на уровне 0 кольца - тобишь драйверов операционной системы.
Тут тебе понадобится WinDDK или VToolsD. WinDDK - от мелкомягких. VToolsD - входит в комплект Numega Driver Studio.
Есть и хорошие примеры с исходниками на эту тему - идешь на сайт sysinternals.com и качаешь оттуда 2 проги Марка Руссиновича Filemon и Regmon.
С исходниками. Они мультиплатформенные.
Ну и дальше уже разбираешься с тем что там написано.