我想分析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