Вопрос: Зачение из памяти | Добавлено: 11.05.06 09:56 |
Автор вопроса: ![]() |
Нужно из памяти загруженной программы найти значения определенных (заранее известных) величин, т.е сделать то что делает программа artmoney. Я хочу узнать как можно побайтово считывать значение программы из памяти.
Либо другой вариант Значения эти отображаються в определенных полях, следовательно они должны туда посылаться через API. Но токо я не уверен что правильно соображаю , так как с API не работал никогда |
Ответы | Всего ответов: 17 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 229759992 Вопросов: 14 Ответов: 93 |
Профиль | Цитата | #1 | Добавлено: 11.05.06 10:14 |
Значение числа в Артмани я взломал и мне известен его адрес (при перезапуске он не меняется). Научите плз как мне перекачать его в свою программу ! Плиииз. Мне позарез нада |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #2 | Добавлено: 11.05.06 11:31 |
Copymemory |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #3 | Добавлено: 11.05.06 11:49 |
При чем тут CopyMemory? Чел говорит про адресное пространство другого процесса.
Тема уже обсасывалась не раз, в поиске найдешь. Для тебя самое простое будет ReadProcessMemory |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 229759992 Вопросов: 14 Ответов: 93 |
Профиль | Цитата | #4 | Добавлено: 11.05.06 13:22 |
Вот пример
Form1 Private Sub Command1_Click()
Dim hWnd As Long '‘ удерживает управление, переданное функцией Find Window. Dim pID As Long '‘ используется для хранения идентификатора процесса. Dim pHandle As Long '‘ держит управление процессом. Dim Znach As String * 20 'в этой переменной хранится считываемый блок памяти hWnd = FindWindow(vbNullString, "Lineage II" ![]() If (hWnd = 0) Then MsgBox Not window Exit Sub End If GetWindowThreadProcessId hWnd, pID pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pID) If (pHandle = 0) Then MsgBox "Couldn" Exit Sub End If ReadProcessMemory pHandle, &09980E90, Znach, 4, 0& CloseHandle hProcess Debug.Print Znach End Sub module1 Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAcess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAdress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddess As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWriten As Long) As Long Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Public Const PROCESS_ALL_ACCESS = &HF0000 Or &H100000 Or &HFFF Public Const STANDARD_RIGHTS_REQUIRED = &HF0000 Public Const SYNCHRONIZE = &H100000 Public Const PROCESS_VM_READ = &H10 Public Const PROCESS_VM_WRITE = &H20 Проблема в ReadProcessMemory pHandle, &09980E90, Znach, 4, 0&
Ругаеться на значение памяти &09980E90 , а если без "&" то бейсик трансформирует в 9.98E+93 |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #5 | Добавлено: 11.05.06 13:23 |
А &H09980E90 не судьба написать? Или ты хочешь передать это как ссылку ![]() |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 229759992 Вопросов: 14 Ответов: 93 |
Профиль | Цитата | #6 | Добавлено: 11.05.06 13:35 |
Ой вот я олух ![]() |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #7 | Добавлено: 11.05.06 13:37 |
А вообще напрасно ты буффер как стринг объявил. Байтовый массив был бы надежнее. |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 229759992 Вопросов: 14 Ответов: 93 |
Профиль | Цитата | #8 | Добавлено: 11.05.06 13:43 |
Теперь непойму ... Выдает "†". Как мне теперь 1414 получить ? |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #9 | Добавлено: 11.05.06 13:54 |
1414 - это число или строка?
Подсунь буффер массив () as Byte Вообще, раз ты читаешь всего 4 байта - то Long тебе в самый раз. Забудь про стринги. |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 229759992 Вопросов: 14 Ответов: 93 |
Профиль | Цитата | #10 | Добавлено: 11.05.06 14:00 |
1414 это число |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 229759992 Вопросов: 14 Ответов: 93 |
Профиль | Цитата | #11 | Добавлено: 11.05.06 14:02 |
Если Long то Znach получается 0 - я уже так делал |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #12 | Добавлено: 11.05.06 14:04 |
Тогда смотри выше |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #13 | Добавлено: 11.05.06 14:06 |
Извини за тупой вопрос, но ты в декларации
Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddess As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWriten As Long) As Long ByVal lpBuffer As Any на ByRef заменял? |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 229759992 Вопросов: 14 Ответов: 93 |
Профиль | Цитата | #14 | Добавлено: 11.05.06 14:18 |
Заменил - при запуске бейсик слетел с критом |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #15 | Добавлено: 11.05.06 14:27 |
ByRef lpBuffer As Long должно прокатить палюбому. Че т ты там наглюкавил ![]() |
|