天天看點

Windows Hook Api

   今天在寫Hook ws2_32 的函數send的時候,發現總是讓程式崩潰,

崩潰的時候程式的崩潰點總是在ws2_32的子產品中,最後發現在調用Hook函數時候,我進行了還原,

還原的保護代碼是PAGE_READWRITE,這樣子導緻其他線程在執行對應的位址代碼産生了一個執行錯誤的代碼!

哎,太久沒有使用逆向了,導緻就生疏了!

具體原因是:

VirtualProtect ( pOldFunEntry, 5, PAGE_READWRITE, &dwProtect ); //這裡程式調用了還原子產品的代碼,因為這裡PAGE_READWRITE調用修改了頁面位址的屬性,
//如果這個位址有其他地方需要執行會導緻産生一個執行頁面中斷錯誤
...........進行一些的執行
VirtualProtect ( pOldFunEntry, 5, dwProtect, NULL ) ;//最後還原原來的位址代碼屬性

//改成如下即可:
        VirtualProtect ( pOldFunEntry, 5, PAGE_EXECUTE_READWRITE, &dwProtect );
        VirtualProtect ( pOldFunEntry, 5, dwProtect, NULL ) ;
           

繼續閱讀