查找动态库
我想用这段代码定位user32.dll中的函数BeginPaint,可是总找不到user32.dll,请高手指教
PCSTR pszDllName="user32.dll";
pfnOld=GetProcAddress(GetModuleHandle("user32.dll"),"BeginPaint");
ULONG size;
//找出模块hmodCaller的引入表
PIMAGE_IMPORT_DESCRIPTOR pImportDesc = (PIMAGE_IMPORT_DESCRIPTOR)
ImageDirectoryEntryToData(hmodCaller,TRUE,IMAGE_DIRECTORY_ENTRY_IMPORT,&size);
//如果没有找到引入表,则不修改,退出
if(pImportDesc==NULL)
return;
//寻找引入表内包含原函数pfnOld的DLL的模块
for(;pImportDesc->Name;pImportDesc++)
{
PSTR pszModName = (PSTR)((PBYTE)hmodCaller+pImportDesc->Name);
if(lstrcmpiA(pszModName,pszDllName)==0)
break;
}
//如果没有找到pfnOld的DLL。则不修改,退出
if(pImportDesc->Name==0)
return;