Как изменить адрес следующей исполн.инструкции чужого потока
От: Sephiroth  
Дата: 11.10.08 09:17
Оценка:
Предыстория:
Основная задача в том чтобы перехватить вызовы winapi чужой программы. Новые функции апи подгружаются в чужой процесс через длл, а длл подгружается через выделение памяти в чужом процессе и созданием нового потока, который переписывает сами тела функций в памяти.
Проблема в том что мне надо перехватить функции ДО того как целевая программа запустится. Для этого я запускаю её сначала с CreateProcess(..,CREATE_SUSPENDED,..), а потом уже делаю своё чёрное дело.
Но когда я это делаю, то программа вылетает с ошибкой, предположительно потому что первый поток который начинает исполнятся не является первым потоком который создаётся. (это понятно, ведь мой поток который я инжектирую запускается при такой схеме первым)
(предположение основано на http://qstuff.blogspot.com/2005/07/art-of-breaking-and-entering-remote.html (читай в самом низу)).

Сам вопрос:
Мне надо сразу после создания процесса, и вместо того чтобы создавать новый поток, узнать И/ИЛИ изменить стартовую точку потока, то место с которого он начинает выполнятся.

Когда я это узнаю, можно будет либо пропатчить начало потока, либо просто изменить стартовую точку на мою функцию, которая потом передаст управление в начало самого потока.

как?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.