![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Kluyg |
|
|||
Unregistered |
Помогите плиз, очень нужно реализовать функцию чтения значения из определенной ячейки памяти на языке Delphi. Например PID 248, адрес 00F3B333. Как оттуда прочитать значение??
Заранее спасибо |
|||
|
||||
dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 1 Всего: 137 |
||||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 14 Всего: 112 |
Перенесенно из раздела Delphi
-------------------- С уважением, г-н Посол. |
|||
|
||||
Guest |
|
|||
Unregistered |
Во-первых спасибо за оперативный ответ
![]() Во-вторых возникло пару вопросов...
1) А нельзя поподробней о функции OpenProcess (ну о параметрах возможных). 2) Мне не писать а читать нужно... ReadProcessMemory я полагаю тоже существует? Какие там пораметры? 3) Только не смейтесь... hProcess - это что? ![]() |
|||
|
||||
Kluyg |
|
|||
Unregistered |
Reads data from the process.
Delphi syntax: function ReadProcessMemory(Address: LongWord; Count: Integer; var Buffer): Integer; Description ReadProcessMemory reads data from an arbitrary address in the process’s memory. The Address parameter specifies the starting address to read. The Count parameter specifies the number of bytes to read. The Buffer parameter specifies the starting location where the data are to be stored. The return value is the number of bytes successfully read. Note that the return value is always the same as Count because if the read fails, the IDE throws an EDbkError exception. Это я сам себе ответил ![]() |
|||
|
||||
Kluyg |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 8.1.2005 Репутация: нет Всего: нет |
Итак я поразбирался и вопросы 2) и 3) снимаются
![]() Так как мои знания Дельфи и строения ПК пока далеки от идеала то у меня появился вопрос по поводу Буфера. Это, я так понял, указатель на какую-то область памяти? Вообщем вопрос такой: как мне с помощью ReadProcessMemory получить массив со значениями собственно? З.Ы. Сори за флуд. Поторопился я что-то. |
|||
|
||||
dm9 |
|
||||||||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 1 Всего: 137 |
При такой записи это просто набор байт. Если памяти много не надо, можно просто объявить массив.
Использование - ReadProcessMemory (..., Buffer); Если памяти надо больше, выделять её лучше динамически.
Я сам этим никогда не занимался, но у меня по Ctrl + клик по ф-ции выдаётся такое описание ReadProcessMemory:
Тут lpBuffer - Pointer; В этом случае также выделаешь память GetMem-ом, но передаёшь в ф-цию сам указатель, просто Buffer (не Buffer^). Это сообщение отредактировал(а) dm9 - 8.1.2005, 20:06 |
||||||||
|
|||||||||
Kluyg |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 8.1.2005 Репутация: нет Всего: нет |
Не работает
![]() вот код, который я использую:
Что-то я ничего не понимаю... |
|||
|
||||
dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 1 Всего: 137 |
Ты Size-то где задаёшь?
Добавлено @ 22:18 Вначале Size := 2 Добавлено @ 22:18 То есть Size - это размер памяти, которую надо выделить. |
|||
|
||||
Kluyg |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 8.1.2005 Репутация: нет Всего: нет |
Упс у меня ПИД - cardinal. А там надо Dword. Может тут ошибка?
Добавлено @ 22:35 Нет не тут ![]() |
|||
|
||||
dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 1 Всего: 137 |
PROCESS_VM_WRITE -> PROCESS_VM_READ
Добавлено @ 22:36 ![]() |
|||
|
||||
Kluyg |
|
||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 8.1.2005 Репутация: нет Всего: нет |
![]() Добавлено @ 22:37
??? |
||||
|
|||||
dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 1 Всего: 137 |
Или, наверное, сразу можно PROCESS_ALL_ACCESS
Добавлено @ 22:39
Ты на запись открываешь, а пытаешься читать! Укажи вместо PROCESS_VM_WRITE PROCESS_VM_READ, или попробуй указать 1-м параметром OpenProcess PROCESS_ALL_ACCESS. Это сообщение отредактировал(а) dm9 - 8.1.2005, 22:40 |
|||
|
||||
Kluyg |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 8.1.2005 Репутация: нет Всего: нет |
Тьфу блин!!! Получилось!!! ПАСИБО ОГРОМНОЕ!!
![]() ![]() |
|||
|
||||
dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 1 Всего: 137 |
Это хорошо, что получилось
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |