PDA

Просмотр полной версии : [С++] прочитать значение по hex адресу в памяти


K07TyaN
27.06.2008, 21:07
Нужно прочитать значение по hex адресу в памяти!!! напишите плз небольшой исходник!

sn0w
27.06.2008, 23:30
DWORD dwAddr = 0x12345678;
DWORD rc;
BYTE buffer[1024];
HANDLE hProcess = OpenProcess(PROCESS_VM_READ,0,GetCurrentProcessId( ));

ReadProcessMemory(hProcess, (LPCVOID)dwAddr, (LPVOID)buffer, 1024, &rc);

nerezus
28.06.2008, 00:20
Мда... чтобы прочитать значение надо знать его тип. Обязательно.

очередное "Хочу то не знаю что". Чувак, оно тебе не нужно.

K07TyaN
28.06.2008, 22:34
Мне НУЖНО учится! Ты прям сразу гуру стал???? =)

nerezus
28.06.2008, 23:38
Ты читать умеешь, картонная башка?

Перечитай мое предыдущее сообщение.
Чтобы получить значение по адресу, надо знать его тип.

Jes
28.06.2008, 23:53
простите что вмешиваюсь , но разве sn0w не дал наиболее полный ответ на этот вопрос?(независимо от типа и размера)

nerezus
29.06.2008, 00:03
но разве sn0w не дал наиболее полный ответ на этот вопрос?(независимо от типа и размера) Неа... он читает массив байт, а неизвестно, что там лежит на самом деле то.

Novi4ek
29.06.2008, 00:27
DWORD dwAddr = 0x12345678;
DWORD rc;
BYTE buffer[1024];
HANDLE hProcess = OpenProcess(PROCESS_VM_READ,0,GetCurrentProcessId( ));

ReadProcessMemory(hProcess, (LPCVOID)dwAddr, (LPVOID)buffer, 1024, &rc);
А почему нельзя просто memcpy?

Jes
29.06.2008, 00:33
->Неа... он читает массив байт, а неизвестно, что там лежит на самом деле то.

ну а что?)
какоето значение
int - значит нужны первые четыре байта , указатель тоже
long - 8
Строка? - сначала и пока на нулевой байт не наткнемся
итп...

нечто большее уже врятли похоже на 'значение'

nerezus
29.06.2008, 10:31
Мыслишь терминами C, а тут же C++ =)

sn0w
29.06.2008, 16:11
А почему нельзя просто memcpy?

чтоб не возникло исключения если с адреса нельзя прочитать данные