Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Зачение из памяти Добавлено: 11.05.06 09:56  

Автор вопроса:  AsHeS | ICQ: 229759992 
Нужно из памяти загруженной программы найти значения определенных (заранее известных) величин, т.е сделать то что делает программа artmoney. Я хочу узнать как можно побайтово считывать значение программы из памяти.

Либо другой вариант
Значения эти отображаються в определенных полях, следовательно они должны туда посылаться через API. Но токо я не уверен что правильно соображаю , так как с API не работал никогда

Ответить

  Ответы Всего ответов: 17  

Номер ответа: 1
Автор ответа:
 AsHeS



ICQ: 229759992 

Вопросов: 14
Ответов: 93
 Профиль | | #1 Добавлено: 11.05.06 10:14
Значение числа в Артмани я взломал и мне известен его адрес (при перезапуске он не меняется). Научите плз как мне перекачать его в свою программу ! Плиииз. Мне позарез нада

Ответить

Номер ответа: 2
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #2 Добавлено: 11.05.06 11:31
Copymemory

Ответить

Номер ответа: 3
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #3 Добавлено: 11.05.06 11:49
При чем тут CopyMemory? Чел говорит про адресное пространство другого процесса.
Тема уже обсасывалась не раз, в поиске найдешь.
Для тебя самое простое будет ReadProcessMemory

Ответить

Номер ответа: 4
Автор ответа:
 AsHeS



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
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #5 Добавлено: 11.05.06 13:23
А &H09980E90 не судьба написать? Или ты хочешь передать это как ссылку :)

Ответить

Номер ответа: 6
Автор ответа:
 AsHeS



ICQ: 229759992 

Вопросов: 14
Ответов: 93
 Профиль | | #6 Добавлено: 11.05.06 13:35
Ой вот я олух :) Сейчас попробую

Ответить

Номер ответа: 7
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #7 Добавлено: 11.05.06 13:37
А вообще напрасно ты буффер как стринг объявил. Байтовый массив был бы надежнее.

Ответить

Номер ответа: 8
Автор ответа:
 AsHeS



ICQ: 229759992 

Вопросов: 14
Ответов: 93
 Профиль | | #8 Добавлено: 11.05.06 13:43
Теперь непойму ... Выдает "†". Как мне теперь 1414 получить ?

Ответить

Номер ответа: 9
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #9 Добавлено: 11.05.06 13:54
1414 - это число или строка?
Подсунь буффер массив () as Byte
Вообще, раз ты читаешь всего 4 байта - то Long тебе в самый раз. Забудь про стринги.

Ответить

Номер ответа: 10
Автор ответа:
 AsHeS



ICQ: 229759992 

Вопросов: 14
Ответов: 93
 Профиль | | #10 Добавлено: 11.05.06 14:00
1414 это число

Ответить

Номер ответа: 11
Автор ответа:
 AsHeS



ICQ: 229759992 

Вопросов: 14
Ответов: 93
 Профиль | | #11 Добавлено: 11.05.06 14:02
Если Long то Znach получается 0 - я уже так делал

Ответить

Номер ответа: 12
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #12 Добавлено: 11.05.06 14:04
Тогда смотри выше

Ответить

Номер ответа: 13
Автор ответа:
 LamerOnLine



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
Автор ответа:
 AsHeS



ICQ: 229759992 

Вопросов: 14
Ответов: 93
 Профиль | | #14 Добавлено: 11.05.06 14:18
Заменил - при запуске бейсик слетел с критом

Ответить

Номер ответа: 15
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #15 Добавлено: 11.05.06 14:27
ByRef lpBuffer As Long должно прокатить палюбому. Че т ты там наглюкавил :)

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам