Тема: АЛСН
Показать сообщение отдельно
Старый 24.02.2009, 20:33   #5
Aleks
Матёрый пользователь
 
Регистрация: 25.07.2007
Адрес: г. Москва
Сообщений: 573
Вы сказали Спасибо: 1
Поблагодарили 12 раз(а) в 11 сообщениях
Aleks стоит на развилке (репутация по умолчанию)
Отправить сообщение для Aleks с помощью ICQ
По умолчанию

Цитата:
Сообщение от 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);
}
Вроде разобраться можно.
Aleks вне форума   Ответить с цитированием
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


Реклама показывается изредка по случайному принципу
По умолчанию РЕКЛАМА