0
我依靠GetProcAddress()來完成某些函數的掛鉤。 雖然我得到了一個可怕的結果,說實話,我真的不知道發生了什麼。htonl和ntohl在windows中有相同的地址嗎?
看來這段代碼會輸出「這是怎麼回事?」 :
int main(void)
{
HMODULE ws32 = LoadLibrary("WS2_32.DLL");
if (GetProcAddress(ws32, "ntohl") == GetProcAddress(ws32, "htonl"))
printf("WHAT THE HELL\n");
return 0;
}
有人可以解釋我爲什麼ntohl和htonl有相同的絕對地址? 問題是,當我鉤入一個DLL並在DLL內進行一些處理時,很明顯,在PE導入表內(我解析PE IAT),ntohl()和htonl()具有不同的地址(在IAT內部如所述)。
所以這件事情使我的程序無用。 ntohl()與htonl()混淆在一起,程序無法發揮作用並且變得瘋狂。
有什麼想法?會有辦法規避這種情況嗎?解釋?
謝謝!
好吧。我明白你的意思了。問題是,當解析二進制文件時,我的程序必須區分對htonl的調用和對ntohl的調用!我是依靠這個來獲得一些函數指針:(有沒有辦法知道哪個IAT條目是哪個函數的?原因是在我解析的二進制文件中,兩者都有明顯不同的IAT條目 – Yannick