我想分析OllyDbg中的文件,但是,此文件中的“入口点地址”为0x0000
。所以它将运行MZ签名作为ASM代码的开始部分。如何在PE头中入口点地址为零时找到OEP?
大多数调试器也无法直接调试它。
我怎样才能找到修改标题的原始入口点?
我想分析OllyDbg中的文件,但是,此文件中的“入口点地址”为0x0000
。所以它将运行MZ签名作为ASM代码的开始部分。如何在PE头中入口点地址为零时找到OEP?
大多数调试器也无法直接调试它。
我怎样才能找到修改标题的原始入口点?
if AddressOfEntryPoint
in EXE
设置为0 - 如此EXE
并且没有此入口点。在这种情况下,为了不崩溃EXE
必须具有TLS回调 - 查找IMAGE_TLS_DIRECTORY
(IMAGE_DIRECTORY_ENTRY_TLS
)和AddressOfCallBacks
必须不为0.因此,这是此的真正入口点 - 没有其他选项,否则EXE将崩溃。
大多数调试器也无法直接调试它。
如果调试器在入口点上设置断点,会发生这种情况。在这种情况下,“入口点”将在MZ
上 - 以及调试器在此处设置断点(0xcc
操作码)时 - 损坏MZ
签名。因为进程初始化是异常(user32.UserClientDllInitialize -> ntdll.CsrClientConnectToServer -> RtlImageNtHeaderEx
(因为MZ
由于断点而损坏))
但是如果调试器没有在入口点设置断点 - 在调试时没有问题。
这样的解决方案 - 寻找IMAGE_DIRECTORY_ENTRY_TLS.AddressOfCallBacks
或设置断点LdrpCallTlsInitializers
真的,这是CLR
(.NET
)图像 - 在这种图像类型的入口点是正式和XP后不能使用。系统忽略它并在mscoree.dll
中调用_CorExeMain
作为入口点。
但是,如果您尝试使用调试器进行调试,该调试器会自动设置断点到入口点(调试器认为如何) - MZ
(IMAGE_DOS_HEADER
)已损坏。结果RtlImageNtHeader[Ex]
返回0(错误)EXE
和应用程序崩溃(在此调试器下)
0x00000000是PE文件中入口点地址的有效值,恶意软件使用此技巧使其调试困难。 Visual Studio可以调试EP == 0的二进制文件。
这是'DLL'吗?因为'EXE'不能没有入口点 – RbMm
我确定它是一个exe文件,这就是为什么我需要找到OEP来修改头文件。 – Likak
两个,一个'.EXE'和'.DLL'文件,有入口点, – zx485