Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > EnumProcessModules


Автор: Soeth 30.6.2011, 13:39
Помогите пожалуйста как к данному исходнику прикрутить функцию EnumProcessModules?
Код

void SystemProcessesScan() { 
        HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
        if(hProcessSnap != INVALID_HANDLE_VALUE) 
        { 
                PROCESSENTRY32 pe32; 
                pe32.dwSize = sizeof(PROCESSENTRY32); 
  
                if(Process32First(hProcessSnap, &pe32)) 
                { 
                        do 
                        { 
                                HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID); 
                                if(hProcess != NULL) 
                                { 
                                        if(ScanProcessMemory(hProcess)) 
                                        { 
                                                 
                                                WinExec("taskkill /IM main.exe",10); 
                                                ExitProcess(0); 
                                                 
                                        } 
                                } 
                        } 
                        while(Process32Next(hProcessSnap, &pe32)); 
                } 
        } 
  
        CloseHandle(hProcessSnap); 
} 
  
bool ScanProcessMemory(HANDLE hProcess)  
{ 
        for(int i = 0; i < MAX_PROCESS_DUMP; i++) 
        { 
                char aTmpBuffer[MAX_DUMP_SIZE]; 
                SIZE_T aBytesRead = 0; 
                ReadProcessMemory(hProcess, (LPCVOID)g_ProcessesDumps[i].m_aOffset, (LPVOID)aTmpBuffer, sizeof(aTmpBuffer), &aBytesRead); 
  
                if(memcmp(aTmpBuffer, g_ProcessesDumps[i].m_aMemDump, MAX_DUMP_SIZE) == 0) 
                { 
                        return true; 
                        break; 
                } 
} 
return false; 
} 
  
void MainThread() 
{ 
again: 
    SystemProcessesScan(); 
    Sleep(350); 
    goto again; 
} 
  
  
  
extern  "C"  __declspec(dllexport) void Main() { 
        CreateThread(NULL,NULL,LPTHREAD_START_ROUTINE(MainThread),NULL,0,0); 
        SystemProcessesScan();   
  
} 
  
BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved) { 
    return TRUE; 
} 
  
#ifdef _MANAGED 
#pragma managed(pop) 
#endif  

Автор: bass 16.7.2011, 20:30
тебе скан процессмемори нкжен????????? Если нет вместо него......

Автор: Estranged 16.7.2011, 23:07
И утечку HANDLE еще устранить не помешает  smile 
А EnumProcessModules вписать сюда куда-нибудь, на этом участке:
Код

                                if(hProcess != NULL) 
                                { 
                                        if(ScanProcessMemory(hProcess)) 
                                        { 
                                                 
                                                WinExec("taskkill /IM main.exe",10); 
                                                ExitProcess(0); 
                                                 
                                        } 
                                } 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)