2014-03-14 23 views
0

我發現要檢查「PE」字符串到一個文件中,我不能用我想讀取的文件中的數據填充IMAGE_NT_HEADERS結構,但是我有以字節以這種方式轉移:PE文件中籤名地址轉換的說明

ntHeader = (IMAGE_NT_HEADERS *) (dosHeader->e_lfanew + (DWORD) dosHeader); 

還有一個(DWORD)投不是很清楚,因爲編譯器不會拋出錯誤 (顯然它不會當它來檢查工作PE格式)。 我已經檢查無處不在[也在stackoverflow :)],並且這行總是顯示,但我無法找到我的問題的答案。

謝謝你的時間。 再見!

+0

http://www.csn.ul.ie/~caolan/publink/winresdump/winresdump/doc/pefile2.html – Abhineet

+0

http://msdn.microsoft.com/en-us/magazine/cc301805.aspx – Abhineet

+0

你犯的錯誤與[這個問題]完全一樣(http://stackoverflow.com/questions/8782771/loading-pe-headers) –

回答

0

NT標頭位於文件頂部由e_lfaNew(以字節爲單位)給出的偏移量處。由於DOS頭在.exe文件的第一件事,找到NT標頭中的一個方法是這樣的(文體醜陋儘管):

ntHeader = (IMAGE_NT_HEADERS *) (((uint8_t *)dosHeader) + dosHeader->e_lfaNew); 

這對待DOS頭指針作爲基字節的指針,並增加了到它需要的字節偏移量。