首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > windows >

为什么在地址映射表里面找不到小弟我加载的dll

2012-12-14 
为什么在地址映射表里面找不到我加载的dll程序初始化的时候我已经HMODULE hModLoadLibrary(shell32.dll

为什么在地址映射表里面找不到我加载的dll
程序初始化的时候我已经HMODULE hMod=LoadLibrary("shell32.dll");但通过下面代码找不到我的那个模块

IMAGE_DOS_HEADER *pD=(IMAGE_DOS_HEADER*)hMod;
    IMAGE_OPTIONAL_HEADER *pOld=(IMAGE_OPTIONAL_HEADER*)((BYTE*)hMod+pD->e_lfanew+24);
    IMAGE_IMPORT_DESCRIPTOR *pI=(IMAGE_IMPORT_DESCRIPTOR*)((BYTE*)hMod+pOld->DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
    //在导入表中查找shell32.dll 模块
    while(pI->FirstThunk)
    {
        char *pszDllName=(char *)((BYTE*)hMod+pI->Name);
        if(lstrcmpi(pszDllName,"shell32.dll")==0)//不区分大小写的字符串比较
        {
            break;
        }
        pI++;
    }

求支招,这个我主要是为了挂钩SHFileOperation()这个函数,顺便问一下有没有好的方法来勾住这个函数让在复制文件之前截取这个动作。
[最优解释]
LoadLibrary()是动态装载,不依赖导入表吧?
使用Module32First()/Module32Next()试试吧。
[其他解释]
始终只找到程序调用的ADVAPI32.DLL、GDI32.DLL、KERNEL32.DLL、msvcrt.dll、ntdll.dll、RPCRT4.dll、SHLWAPI.DLL、USER32.DLL这几个链接库。
[其他解释]
引用:
LoadLibrary()是动态装载,不依赖导入表吧?
使用Module32First()/Module32Next()试试吧。
谢谢!确实是这个样子!

热点排行