Цитата:
Сообщение от MATRIXXX
Опиши подробней пожалуйста!
|
Читаем из памяти с помощью функции:
ReadProcessMemory(hProcess, (LPCVOID)pSigAsp, &SigAsp, 4, NULL);
где
DWORD pSigAsp = 0x84af46;
SigAsp - переменная типа int, в которую записывается прочитанное значение.
hProcess получаем следующим образом:
hProcess = OpenProcess( PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, dwProcessID);
Для получения ProcessID по имени exe-файла используем следующие функции:
Код:
bool GetProcessByExeName(void)
{
HANDLE hProcessSnap;
PROCESSENTRY32 pe32 = {0};
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
if(hProcessSnap == INVALID_HANDLE_VALUE)
{
return false;
}
pe32.dwSize = sizeof(PROCESSENTRY32);
if(Process32First(hProcessSnap, &pe32))
{
do {
if(CompName(pe32.szExeFile, ExeName)) // Сравнение имени процесса с ExeName
{
dwProcessID = pe32.th32ProcessID; // Возврат ID найденного процесса
CloseHandle(hProcessSnap);
return true;
}
} while(Process32Next(hProcessSnap, &pe32));
}
CloseHandle(hProcessSnap);
return false;
}
Код:
// Сравнение именен процессов
bool CompName(char *Name, char *exeName)
{
while (*Name && *exeName)
{
if ( toupper(*Name) != toupper(*exeName) )
{
return false;
}
Name++;
exeName++;
}
return !(*Name || *exeName);
}
Вроде разобраться можно.