这是通过系统加载PE文件后获得的信息, 还是通过Mapfile等技术自己加载后获得的信息?
如果是你自己加载的,计算时好象要多考虑一个"偏移"...
本人从来没有遇到过这种问题.
如果是你自己加载的,计算时好象要多考虑一个"偏移"...
本人从来没有遇到过这种问题.
解决方案 »
- MFC监测IE控件消息
- 新手问问题 自编的聊天软件在外网服务器端与客户端的连接
- 关于dump
- 大侠进来看看,关于窗口背景的问题
- 如何第一时间得到菜单的响应消息(在线等,分数不够可以加)
- 【求助】 各位大虾,请问如何实现能够知道现在在使用什么浏览器,还有如何能让程序感知到IE或者Netscape运行和退出?
- access中是否支持聚集索引?
- 串口代理服务器怎么做?
- 我的窗口用ShowWindow(SW_HIDE)隐藏,如何访止别的程序用ShowWindow(hWnd,SW_SHOW)把我的窗口给显示?
- 怎样改变属性表的初始位置。
- 哪有Effective C++的下载?
- 哪有BoundsChecker?
然后由该指针得到dos头,然后……(就是上面我说的了)
看看我的写法与你的有何不同? 期望得到你的结果.void GetDllName()
{
PIMAGE_DOS_HEADER pDosHdr;
PIMAGE_NT_HEADERS pNTHeader;
LPBYTE lpByte; HMODULE hModule= GetModuleHandle(NULL); // convert to PIMAGE_DOS_HEADER
pDosHdr = (PIMAGE_DOS_HEADER)hModule; lpByte = (LPBYTE)pDosHdr; // get IMAGE_NT_HEADERS
pNTHeader = (PIMAGE_NT_HEADERS)(lpByte + (pDosHdr->e_lfanew)); DWORD importsStartRVA;
PIMAGE_IMPORT_DESCRIPTOR pImportDesc;
LPCSTR lpName; importsStartRVA = pNTHeader->OptionalHeader.DataDirectory
[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress; // get address of first IMAGE_IMPORT_DESCRIPTOR
pImportDesc = (PIMAGE_IMPORT_DESCRIPTOR)
(importsStartRVA + pNTHeader->OptionalHeader.ImageBase); // dump DLL name linked implicitly
while ( 1 )
{
// See if we've reached an empty IMAGE_IMPORT_DESCRIPTOR
if ( (pImportDesc->TimeDateStamp==0 ) &&
(pImportDesc->Name==0) )
break; lpName = (LPCSTR)(pImportDesc->Name+
pNTHeader->OptionalHeader.ImageBase);
AfxMessageBox(lpName); pImportDesc++;
}//end while
}
我也没有QQ, 如果你需要你可以发Mail给我. [email protected] 不过我可不一定能及时给你回复的罗.