Как получить точку входа дочернего процесса? - PullRequest
1 голос
/ 01 сентября 2009

Я создал дочерний процесс из моего процесса с помощью CreateProcess () (в C ++) Затем я продолжаю использовать ReadProcessMemory, чтобы прочитать память и найти что-то конкретное.

Я бы хотел начать свой поиск с точки входа этого процесса, поскольку процесс загружен в свое собственное виртуальное пространство. На данный момент я понятия не имею, как найти точку входа для самого кода (мне все равно о других разделах файла PE), Мне известно поле 'AddressOfEntryPoint' формата PE, и оно у меня уже есть, но поскольку я не знаю, по какому адресу будет загружен этот процесс, как я могу рассчитать саму точку входа?

чтобы продемонстрировать, что я хочу, если вы, например, открываете процесс с помощью OllyDbg, вы сразу достигаете точки входа для кода, я хочу иметь этот адрес

помните, что это дочерний процесс, который я создал, если он помогает

позвольте мне упомянуть, что я не хочу вставлять какой-либо код или DLL в это приложение, чтобы узнать этот адрес

Ответы [ 3 ]

1 голос
/ 01 сентября 2009

Используйте PSAPI GetModuleInformation с HMODULE NULL. Это даст вам точку входа исполняемого файла, а также общий размер в памяти (к сожалению, базовый адрес не установлен.)

Обратите внимание, что точка входа не обязательно является функцией main () - это, вероятно, CRT точка входа, которая в свою очередь вызывает ваш main ().

Вы также можете использовать EnumProcessModules , чтобы получить все модули в процессе и их базовые адреса.

0 голосов
/ 01 сентября 2009

AddressOfEntryPoint относительно базового адреса изображения (член ImageBase той же структуры IMAGE_OPTIONAL_HEADER). Для исполняемых файлов образная база почти всегда соответствует тому, что установлено в PE-заголовке, поскольку каждый исполняемый файл имеет свое собственное виртуальное адресное пространство.

Фактически exes с разделенными секциями перемещения могут быть загружены только на базе, которая находится в PE.

Я не уверен, есть ли исключения и возможно ли получить базу изображений запущенного процесса ...

0 голосов
/ 01 сентября 2009

Я точно не знаю, НО ... Насколько я знаю, вы можете найти EntryPoint Address в PE-заголовке .exe / .dll

или .... это фиксированный

это все, что я помню

...