Я знаю о снифферах, и я могу написать их, используя API отладки win32. Но здесь я хочу найти EntyPoint исполняемого файла и ввести код прямо туда. Возможно ли это с помощью API отладки? Или любой другой способ сделать это с помощью кода, а не с помощью таких инструментов, как olly.
Как найти точку входа Win32 и внедрение кода в память предпочтительно с помощью Debug Apis?
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 и понять его, вот несколько источников, которые помогут вам начать работу:
- http://msdn.microsoft.com/en-us/library/ms809762.aspx
- http://msdn.microsoft.com/en-us/magazine/cc301805.aspx
- http://msdn.microsoft.com/en-us/magazine/cc301808.aspx
- http://tuts4you.com/download.php?view.235
- http://net.pku.edu.cn/~course/cs201/2003/mirrorWebster.cs.ucr.edu/Page_TechDocs/pe.txt — это особенно полезно.
Для вашего использования указатель AddressOfEntryPoint может быть расположен в структуре IMAGE_OPTIONAL_HEADER, которая находится в структуре IMAGE_FILE_HEADER, это RVA (относительный виртуальный адрес) для первой выполняемой инструкции. Если вы хотите отклонить поток выполнения с самого начала, вам нужно изменить значение в этом поле на новый RVA, и инструкция на новом RVA будет выполняться первой.
person
James
schedule
28.11.2012