2017-01-16 22 views
2

Я хочу проанализировать файл в OllyDbg, однако, «адрес точки входа» в этом файле 0x0000. Таким образом, он будет запускать подпись MZ в качестве начальной части кода ASM.Как найти OEP, когда адрес точки входа равен нулю в PE-заголовке?

Большинство отладчиков также не могут отлаживать его напрямую.
Как я могу найти исходную точку входа, чтобы изменить заголовок?

+0

это 'DLL'? потому что 'EXE' не может иметь никакой точки входа – RbMm

+0

Я уверен, что это файл exe, поэтому мне нужно найти OEP для изменения заголовка. – Likak

+1

Оба файла '.EXE' и' .DLL', имеют точки входа, – zx485

ответ

4

если AddressOfEntryPoint в EXE установлено в 0 - так EXE и не имеет этой точки входа. в этом случае для не сбой EXE должен иметь обратные вызовы TLS - искать IMAGE_TLS_DIRECTORY (IMAGE_DIRECTORY_ENTRY_TLS) и AddressOfCallBacks не должен быть 0. так что это настоящая точка входа (ов) этого EXE - никакой другой опции, иначе EXE выйдет из строя.

Большинство отладчиков также не могут отлаживать его напрямую.

Это случается, если отладчик устанавливает точку останова на точке входа. в этом случае «точка входа» будет на MZ - и когда отладчик установит точку останова (0xcc opcode) здесь - повреждение MZ подпись. в результате инициализация процесса была исключением (user32.UserClientDllInitialize -> ntdll.CsrClientConnectToServer -> RtlImageNtHeaderEx (ошибка из-за того, что MZ поврежден точкой останова))

, но если отладчик не задал точку останова на точке входа - никаких проблем при отладке.

так решение - ищет IMAGE_DIRECTORY_ENTRY_TLS.AddressOfCallBacks или установить точку останова в LdrpCallTlsInitializers


действительно это было CLR (.NET) изображение - в этом типе изображения точка входа является формальным и не используется после того, как хр. система игнорирует его и вызывает _CorExeMain в mscoree.dll как точка входа.

, но если вы попробуете отладить это с помощью отладчика, который автоматически устанавливает точку останова в точку входа (как думает отладчик) - поврежден MZ (IMAGE_DOS_HEADER). как результат RtlImageNtHeader[Ex] возврата 0 (ошибка) для EXE и приложения разбился (под этим отладчиком)

+0

Я искал каталог TLS. «Каталог TLS RVA» и «Размер каталога TLS» оба они установлены в ноль. В этом случае снова структура TLS находится в MZ? – Likak

+0

@bahare - в этом случае нет TLS в exe. этот exe вообще выполняется? – RbMm

+0

Очень удивительно, да! Он работает правильно. Звучит, что он запускает MZ в качестве кода команды. Потому что, когда я открываю его в IDA после двух нажатий и pop, inc и dec, есть прыжок (находится в 0x00400004) до 0x004139EF. Поэтому я считаю, что 0x139EF - это RVA исходной точки входа. – Likak

0

0x00000000 является допустимым значением для адреса точки входа в PE файл, вредоносная программа использует этот трюк, чтобы сделать его отладку трудно. Visual Studio может отлаживать двоичный файл с EP == 0.

 Смежные вопросы

  • Нет связанных вопросов^_^