Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.05;
Скачать: CL | DM;

Вниз

Чтение 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 вся ветка

Текущий архив: 2002.12.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
1-14628
Kurt
2002-11-23 18:28
2002.12.05
Не подскажите как сделать чтоб в GroupBox-e фонт Caption-а сделат


7-14843
hitek
2002-07-29 10:57
2002.12.05
Копирование файлов


3-14375
asusfi
2002-11-19 16:49
2002.12.05
FoxPro -> Delphi


7-14848
Aric
2002-10-02 21:14
2002.12.05
Глобальный хук на мышку


1-14483
___Nikolay
2002-11-25 04:57
2002.12.05
Люди!!! Кто-нидь работал с Delphi+Картография, например, MapInfo?