Привет полазал по форуму и почитал статьи, но так и не понял несколько вещей: Мне необходимо чтобы моя программа (висела в памяти) отслеживала запуск других программ и после запуска какой либо программы, она (моя программа) получала имя запускаемого файла и путь до него, закрывала запускаемый файл, добавляла в него мой код, а далее производила запуск файла после внедрения. Как я понял для этого надо либо писать драйвер и использовать PsSetCreateProcessNotifyRoutine (что не вариант) Либо можно установить хук на вызов ZwCreateProcess или ZwCreateSection. Как установить хук на какую-либо из данных функций корректно? Почитал, советуют менять таблицу импорта файла с указанием на переопределенную функцию, но как это делать когда я еще не знаю какой файл будет запущен. Либо изменять на jmp первые байты вызова функции из кернел32, но сказано что такой способ не рекомендуется. Как лучше поступить? Спасибо за любые подсказки, если возможно скиньте пару ссылок где можно более подробно ознакомиться с интересующим меня вопросом.
Жи, ши пиши с буквой и. Следует отталкиваться от того, что сами по себе программы не стартуют. Их запускают другие программы. Соответственно внедрившись, например в проводник, и установив в нем необходимые перехваты ты получишь возможность контролировать создание процессов, чьим родителем будет проводник) То есть практически всех, что запускает пользователь. А вообще писать вирусы это плохо, а что-то патчить по всяким древним мануалам - тем более Можно почитать вот это http://www.rsdn.ru/forum/asm/2300364.flat.2.aspx
EP_X0FF, спасибо да с жи ши что-то получилось не удачно) А можно более подробно как внедриться в ехплорер? Делаем снапшот процессов, получаем PID -> explorer.exe? что в нем надо найти?
а разве ехплорер.ехе не занят системой чтобы его можно было пофиксить? или пофиксить сохранить как другой файл и в реестре переделать запуск на пофиксенный?
temi4 Имеется ввиду, что внедряться нужно в процесс, а не инфектить файл. Сперва попробуйте внедриться простейшим образом: OpenProcess + VirtualAllocEx + WriteProcessMemory + CreateRemoteThread Все детали вот тут Вы пишете свою длл, прогружаете в эксплойлер и с нее уже делаете с процессом все что требуется.
fsd, сразу сложно все понять, все когда то учатся, а для этого не стыдно и вопрос задать... dyn, спасибо попробую.