если 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
и приложения разбился (под этим отладчиком)
это 'DLL'? потому что 'EXE' не может иметь никакой точки входа – RbMm
Я уверен, что это файл exe, поэтому мне нужно найти OEP для изменения заголовка. – Likak
Оба файла '.EXE' и' .DLL', имеют точки входа, – zx485