Форум: "WinAPI";
Текущий архив: 2002.12.05;
Скачать: [xml.tar.bz2];
ВнизЧтение Integer из памяти процесса Найти похожие ветки
← →
PHN (2002-10-21 18:32) [0]Многоуважаемый, All!
Поведай про сабж, а именно читаю по адресу где точно должно быть число которое мне заранее известно, но ReadProcessMemory возвращает бред! Читаю так:
//pto,num - dword
//res - integer
pto:=$00B6572C;
ReadProcessMemory(PID,ptr(pto),@num,4,numread);
res:=num;
Бест регардс!
← →
Ihor Osov'yak (2002-10-22 00:51) [1]с первого взляда в msdn
BOOL ReadProcessMemory( HANDLE hProcess, LPCVOID lpBaseAddress,
LPVOID lpBuffer, DWORD nSize, LPDWORD lpNumberOfBytesRead);
Parameters
lpBaseAddress
Pointer to the base address in the specified process to be read. Before any data transfer occurs, the system verifies that all data in the base address and memory of the specified size is accessible for read access. If this is the case, the function proceeds; otherwise, the function fails.
возникает подозрение, что нужно не ptr(pto), а @(pto) ...
Во вторых, проверь GetLastError - возможно нет соотв. прав на соотв. область памяти (тогда поможет VirtualQueryEx + VirtualProtectEx)
ЗЫ. Относительно первого - (если GetLastError все ок) - относительно просто проверить софтайсом - читаем ли мы с адреса
$00B6572C или с ($00B6572C)^ ...
← →
paul_shmakov (2002-10-22 16:54) [2]1) первый параметр не process id, а process handle. используйте OpenProcess(pid, false, PROCESS_VM_READ).
2) а второй @pto.
← →
PHN (2002-10-23 13:44) [3]Что-то не совсем работает :(
А права для чтения и без того открыты( это на счет VirtualQueryEx)
← →
paul_shmakov (2002-10-23 14:13) [4]"Что-то не совсем работает :("
что можно на это ответить?
1) ваш код
2) что в нем конкретно не работает?
3) что возвращают функции?
4) если функции сигнализаруют о неудачном завершении, то что говорит GetLastError?
5) из какого процесса идет чтение?
← →
PHN (2002-10-23 23:40) [5]Функция возвращает число даоекое от правды, читаю из игры, ластеррор нулю не равен( это не нормально?). Может собственно это и не интегер, но тогда как можно узнать об этом?
Еще скажу, до этого пуская цикл для pto (см исх код выше), за где-то от B630A0 до B6572C, то дойдя до конечного адреса и считав из него функция возвращала совершенно ворное значение, стоит только читать напрямую из адреса(B6572C), как уже нечто иное, эту для меня загадку я решить не смог.
Буду благодарен, если кто-нибудь скинет мне на Mail рабочий исходник с похожей задачей.
Вот это собственно и значит то самое: "Что-то не совсем работает :("
← →
PHN (2002-10-25 10:01) [6]up
← →
Digitman (2002-10-25 10:59) [7]
> Может собственно это и не интегер, но тогда как можно узнать
> об этом?
А откуда вообще взялась вот эта константа ? На основании чего ты опираешься именно на данное ее значение, а не на какое-то другое ?
pto:=$00B6572C; // ?????????
← →
PHN (2002-10-25 13:55) [8]Ну такая она, знаю, и все!
Что там число! :))
← →
Игорь Шевченко (2002-10-25 14:05) [9]
> ластеррор нулю не равен( это не нормально?).
А чему же он равен ?
← →
paul_shmakov (2002-10-25 14:41) [10]и где код?
← →
Digitman (2002-10-25 14:47) [11]
> Ну такая она, знаю, и все!
> Что там число! :))
Ну откуда знаешь-то ? Что, великая тайна что ли ?
Или по файлу шарил каким-нить hiew или SoftICE ? И там типа "знакомые буквы" нашел ?)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.12.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c