天天看点

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 ) ;
           

继续阅读