哦 system后 加个break;
那个枚举进程以及dll调用的代码的模块中的PrintModules函数不应该有
for(i=0;i<(cbNeeded/sizeof(HMODULE));i++)
{
}
这个循环吧
void
PrintModules(DWORD processID)
{
HMODULE hMods[1024];
HANDLE hProcess;
DWORD cbNeeded;
static unsigned int i; //将i改成static
// Print the process identifier
printf( "\nProcess ID: %u\n", processID );
// Get a list of all the modules in this process.
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,processID );
if(NULL == hProcess)
return;
if(EnumProcessModules(hProcess,hMods,sizeof(hMods),&cbNeeded))
{
//for(i=0;i<(cbNeeded/sizeof(HMODULE));i++) //注释掉了这个循环
{
char szModName[MAX_PATH];
// Get the full path to the module's file.
if(GetModuleFileNameEx( hProcess,hMods[i],szModName,sizeof(szModName)))
{// Print the module name and handle value.
printf("%s(0x%08X)\n",szModName,hMods[i]); //hMods改成 hMods[i]
}
}
}
i++; //加了一句
CloseHandle(hProcess);
}
加注释是我修改的地方
[ 本帖最后由 xiaomarn 于 2010-11-25 18:32 编辑 ]