首页
社区
课程
招聘
[旧帖] 求目标进程嗲用某DLL的基地址?? 0.00雪花
发表于: 2008-4-13 20:16 3924

[旧帖] 求目标进程嗲用某DLL的基地址?? 0.00雪花

2008-4-13 20:16
3924
求目标进程嗲用某DLL的基地址??  如何找到的呢?

象OD可以直接alt+e就看到了,他是怎么知道的呢???

感觉好像是OD加载的时候他记录下来的,因为有3个Debug API函数的组合可以找到。是不是呢???

高手还有什么办法没有??

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
typedef BOOL (_stdcall *ENUMPROCESSMODULES)
(HANDLE hProcess,HMODULE* lphModule,DWORD cb,LPDWORD lpcbNeeded);

typedef DWORD (_stdcall *GETMODULEFILENAMEEX)
(HANDLE hProcess,HMODULE hModule,LPTSTR lpFilename,DWORD nSize );

unsigned int FindModlueAddr(DWORD dwProcessId,char *TempSMPFileName)
{
	HMODULE hModule = LoadLibrary("psapi.dll");
	HMODULE hMods[1024];

	DWORD cbNeeded=0;

	char szModName[MAX_PATH];
	//char TempSMPFileName[256];

	unsigned int Ret = 0;
	if(hModule == NULL)
		return 0;
	ENUMPROCESSMODULES pEnumProcessModules = 
		(ENUMPROCESSMODULES)GetProcAddress(hModule, "EnumProcessModules");
	GETMODULEFILENAMEEX pGetModuleFileNameEx = 
		(GETMODULEFILENAMEEX)GetProcAddress(hModule, "GetModuleFileNameExA");

	HANDLE hProcess = 
		OpenProcess(PROCESS_QUERY_INFORMATION |PROCESS_VM_READ,false,dwProcessId);

	if(!hProcess)
	{
		Ret = 0;
		goto FuncRet1;
	}

	//strcpy(TempSMPFileName,(const char *)GetSMPFileName());
	int i;
	if(pEnumProcessModules(hProcess,hMods,sizeof(hMods), &cbNeeded))
	{
		//枚举成功
        for ( i = 0; i <= (int)(cbNeeded / sizeof(HMODULE)); i++ )
        {
			if(pGetModuleFileNameEx( hProcess, hMods[i], szModName,sizeof(szModName)))
			{
				if(strstr(szModName,TempSMPFileName/*".SMP"/*"NDDCLW.SMP"*/))
				{
					//MessageBox(0,szModName,"提示",MB_OK);
					Ret = (unsigned int)hMods[i];
					goto FuncRet;
				}
			}
        }
	}
FuncRet:
	CloseHandle(hProcess);
FuncRet1:
	FreeLibrary(hModule);
	return Ret;
}


早前写的进程模块枚举...直接调用就可以了
2008-4-14 09:54
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
试试就知道了
2008-4-14 12:01
0
游客
登录 | 注册 方可回帖
返回
//