Страница: 1 | 2 |
Вопрос: Как прочитать память процесса?
Добавлено: 09.02.05 12:25
Автор вопроса: Demon | Web-сайт:
Есть адрес в памяти процесса PID - &H13C994. Как скопировать 4-х байтное содержимое в textbox?
Ответы
Всего ответов: 20
Номер ответа: 1
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #1
Добавлено: 09.02.05 14:45
Ну вообще - ReadProcessMemory. А причём тут PID? Как ты его собираешся применить?
Номер ответа: 2
Автор ответа:
Demon
ICQ: 7026585
Вопросов: 18
Ответов: 96
Web-сайт:
Профиль | | #2
Добавлено: 09.02.05 16:16
PID- ProcessID
OpenProcess(PROCESS_READ_WRITE_QUERY, False, PID)
Номер ответа: 3
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #3
Добавлено: 09.02.05 17:54
Ну да, если при открытии, то конечно.
Номер ответа: 4
Автор ответа:
Demon
ICQ: 7026585
Вопросов: 18
Ответов: 96
Web-сайт:
Профиль | | #4
Добавлено: 09.02.05 18:02
Чтобы читать память процесса его надо сначала открыть.
Номер ответа: 5
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #5
Добавлено: 10.02.05 14:14
А ты догадливый парень
Не забудь потом его закрыть после чтения
Номер ответа: 6
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #6
Добавлено: 10.02.05 14:18
PID - &H13C994
Эй, люди, у кого ещё такой PID отзовитесь пожалуйста. Человек плачет, не может из процесса прочесть.
Номер ответа: 7
Автор ответа:
Demon
ICQ: 7026585
Вопросов: 18
Ответов: 96
Web-сайт:
Профиль | | #7
Добавлено: 10.02.05 16:27
Сори не так написал, &H13C994 - адрес в памяти процесса.
Кстати его и надо закрывать после чтения (CloseHandle). Мне надо узнать, как правильно воспользоваться ReadProcessMemory.
Номер ответа: 8
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #8
Добавлено: 10.02.05 17:16
Там после него идут параметры. Нужно их ввести слева направо через запятую.
Номер ответа: 9
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #9
Добавлено: 10.02.05 17:21
CyRax, хватит, я уже не могу дольше смеяться.. у вас тут как разговор слепого с глухим получается
Номер ответа: 10
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #10
Добавлено: 10.02.05 17:34
UU,
А вдруг человек не знает? Доброта за доброту. Он меня обучит открытию процесса, а его правилам передачи параметров.
Demon писал(а):
Сори не так написал, &H13C994 - адрес в памяти процесса.
Кстати его и надо закрывать после чтения (CloseHandle).
Значит так, у нас есть PID и адрес в памяти процесса (&H13C994), который нужно зачем то закрывать после чтения (хм, нужно будет потом поискать инфу о закрытии адресов памяти процесса).
В задачке спрашивается, как правильно использовать ReadProcessMemory? Кто нибудь знает решение? А то меня только закрытие адреса вводит в ступор.
Номер ответа: 11
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #11
Добавлено: 10.02.05 17:42
DECLARE FUNCTION ReadProcessMemory LIB "KERNEL32.DLL" ALIAS "ReadProcessMemory" (BYVAL hProcess AS DWORD, BYVAL lpBaseAddress AS LONG, lpBuffer AS ANY, BYVAL nSize AS DWORD, lpNumberOfBytesWritten AS LONG) AS LONG
Пользуйся
Номер ответа: 12
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #12
Добавлено: 10.02.05 17:44
Ой, что это?
ReadProcessMemory
lpNumberOfBytesWritten AS LONG
Номер ответа: 13
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #13
Добавлено: 10.02.05 17:50
lpNumberOfBytesRead
Private Sub btnRead_Click()
Dim strTempX As String
strTempX = "This is a string"
MsgBox ReadMem(Me.hwnd, StrPtr(strTempX), LenB(strTempX))
End Sub
Public Function ReadMem(lngHandle As Long, lngAddress As Long, lngBytes As Long) As String
Dim ProcID As Long
Dim ProcHandle As Long
Dim ByteVal As Long
GetWindowThreadProcessId lngHandle, ProcID
ProcHandle = OpenProcess(PROCESS_VM_READ, False, ProcID)
Dim lngCount As Long
For lngCount = 1 To lngBytes Step 2
ReadProcessMemory ProcHandle, lngAddress + lngCount - 1, ByteVal, 1, 0&
ReadMem = ReadMem & Chr(ByteVal)
Next lngCount
CloseHandle ProcHandle
End Function
Номер ответа: 14
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #14
Добавлено: 10.02.05 18:04
Угу, кто то поленился
А вообще это не имеет значения. В PB можно и так записать:
DECLARE FUNCTION ReadProcessMemory LIB "KERNEL32.DLL" ALIAS "ReadProcessMemory" (BYVAL DWORD, BYVAL LONG, ANY, BYVAL DWORD, LONG) AS LONG
Номер ответа: 15
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #15
Добавлено: 10.02.05 18:08
А это скажешь по правилам?
lngHandle
Куда правильней написать hWnd.