BOOL WINAPI DllMain(HINSTANCE hmodule,DWORD reason, LPVOID lpreserved)
{
if(reason==DLL_PROCESS_ATTACH)// 如果DLL被注入到其他进程,DLL_PROCESS_ATTACH表示注入DLL的时候
{
HMODULE hWsock32=GetModuleHandle("winmm.dll");//获取winmm.dll模块句柄
dwAddrtimeGetTime=(DWORD)GetProcAddress(hWsock32,"timeGetTime");//获取api函数timeGetTime真正的地址
DWORD tmp=(DWORD)MytimeGetTime-(dwAddrtimeGetTime+5);// 假冒的API函数地址的字节(一个4个字节)
//通过字节的形式来代表假冒api函数MytimeGetTime的地址 ,保存到变量tem里面
//公式:假冒的API函数地址的4个字节=My函数地址-(真的函数地址+5)
WriteJMP(dwAddrtimeGetTime,&tmp);//开始HOOK-修改timeGetTime函数头的5个字节
}
if(reason==DLL_PROCESS_DETACH)// 如果DLL被卸载, DLL_PROCESS_DETACH表示卸载DLL的时候
{
UnHOOK(dwAddrtimeGetTime);//卸载HOOK -恢复timeGetTime函数头的5个字节
}
return TRUE;
}
完整全套代码下载地址:
https://download.csdn.net/download/i735740559/15433158