Как найти точку входа Win32 и внедрение кода в память предпочтительно с помощью Debug Apis?

Я знаю о снифферах, и я могу написать их, используя API отладки win32. Но здесь я хочу найти EntyPoint исполняемого файла и ввести код прямо туда. Возможно ли это с помощью API отладки? Или любой другой способ сделать это с помощью кода, а не с помощью таких инструментов, как olly.


person Halil Ibrahim    schedule 27.11.2012    source источник
comment
Вы можете прочитать его из заголовка PE-файла.   -  person David Heffernan    schedule 27.11.2012
comment
Можете ли вы дать немного больше деталей?   -  person Halil Ibrahim    schedule 27.11.2012
comment
Вы должны иметь возможность выполнить поиск в Интернете, чтобы узнать, как читать заголовки PE-файлов.   -  person David Heffernan    schedule 27.11.2012


Ответы (1)


Вам нужно взглянуть на формат файла Portable Executable и понять его, вот несколько источников, которые помогут вам начать работу:

Для вашего использования указатель AddressOfEntryPoint может быть расположен в структуре IMAGE_OPTIONAL_HEADER, которая находится в структуре IMAGE_FILE_HEADER, это RVA (относительный виртуальный адрес) для первой выполняемой инструкции. Если вы хотите отклонить поток выполнения с самого начала, вам нужно изменить значение в этом поле на новый RVA, и инструкция на новом RVA будет выполняться первой.

person James    schedule 28.11.2012