-3
我閱讀有關Windows掛鉤和Win32可執行程序的內部結構(https://en.wikipedia.org/wiki/Hooking#Windows),看到這個代碼塊:IMAGE_DOS_HEADER掛鉤
PIMAGE_DOS_HEADER pImgDosHeaders = (PIMAGE_DOS_HEADER)module;
PIMAGE_NT_HEADERS pImgNTHeaders = (PIMAGE_NT_HEADERS)((LPBYTE)pImgDosHeaders + pImgDosHeaders->e_lfanew);
PIMAGE_IMPORT_DESCRIPTOR pImgImportDesc = (PIMAGE_IMPORT_DESCRIPTOR)((LPBYTE)pImgDosHeaders + pImgNTHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
for (IMAGE_IMPORT_DESCRIPTOR *iid = pImgImportDesc; iid->Name != NULL; iid++)
我的C是有點生疏,我可能需要刷(指針總是讓我困惑),但我認爲這種方式的工作原理是創建一個名爲iid
的IMAGE_IMPORT_DESCRIPTOR
指針。 iid
指向IMAGE_IMPORT_DESCRIPTOR
,並設置爲等於名爲pImgImportDesc
的對象。所以它看着pImgImportDesc
的Name
屬性,如果它沒有設置它會去下一個?所以基本上,它正在尋找最後一個?
還有任何關於書籍或視頻的建議,以查看更多關於這種真正低級別事情的信息嗎?讀代碼讓我感到困惑。
它會去下一個,如果它是** **集。所以它遍佈所有這些。 – rkapl
代碼解析PE頭。沒有任何地方掛鉤,也沒有任何伸展的低水平。詢問基本的C語法不是Stack Overflow的意思。 – IInspectable
感謝您的輸入,但這不是低級別?我的意思是不處理PE頭很低的水平,除非你將它與程序集進行比較(我真的在問,我對此並不熟悉)。對不起,我在任何類型的編程背景下的大部分背景都是高級的java/web開發,我只是想要解決這樣的問題。我在這裏看到很多問題處理某些事情的基本解釋/語法。 – JimmySmithJR