Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Создание трайнера!!! Добавлено: 19.06.03 09:47  

Автор вопроса:  melnicov

Люди помогите мне!!!

Все знают игру Grand Theft Auto: Vice Sity, так вот мне известно что адрес памяти в котором храниться информация о количестве денег равен "0094ADC8" (без ковычек естественно) и имеет тип long.

И вот сам вопрос:

Как считать данные из памяти(зная адрес и тип)?

Как вписать данные в память (тоже зная адрес и тип)

Ответить

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

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



Вопросов: 10
Ответов: 109
 Профиль | | #1 Добавлено: 19.06.03 11:50

Помоему copymemory(writememory), или что то подобное

Ответить

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



ICQ: 173084484 

Вопросов: 5
Ответов: 76
 Web-сайт: univercal-s.narod.ru
 Профиль | | #2
Добавлено: 19.06.03 18:11

Вот эти функции:

Declare Function ReadProcessMemory Lib "kernel32" (byval hProcess as long, byval lpBaseAddress as Any, byval lpBuffer as Any, byval nSize as Long, byval lpNumberOfBytesWritten as long) as long

Declare Function WriteProcessMemory Lib "kernel32" (то же самое ;) ) as long

Ответить

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



ICQ: 173084484 

Вопросов: 5
Ответов: 76
 Web-сайт: univercal-s.narod.ru
 Профиль | | #3
Добавлено: 19.06.03 18:12

Вот эти функции:

Declare Function ReadProcessMemory Lib "kernel32" (byval hProcess as long, byval lpBaseAddress as Any, byval lpBuffer as Any, byval nSize as Long, byval lpNumberOfBytesWritten as long) as long

Declare Function WriteProcessMemory Lib "kernel32" (то же самое ;) ) as long

Ответить

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



Вопросов: 3
Ответов: 3
 Профиль | | #4 Добавлено: 20.06.03 00:34

Я тоже пытался сделать трейнер на Vice City. Сделал только на набор паролей. А вот с памятью не получается. Считывает только Текст. Пишу Код . если у тебя получиться - тогда и мне поможешь

'модуль

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

'форма

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, "GTA: Vice City")
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,Адрес_Памяти, Znach, 4, 0&
CloseHandle hProcess
End Sub

А если заменить, то вместо ReadProcessMemory-WriteProcessMemory

Удачи

Ответить

Номер ответа: 5
Автор ответа:
 univercal



ICQ: 173084484 

Вопросов: 5
Ответов: 76
 Web-сайт: univercal-s.narod.ru
 Профиль | | #5
Добавлено: 21.06.03 15:01

Ну, во-первых, скорее всего можно сделать вот так:

Public Function ConStrToNumber(strExpression As String) As Long

Dim I

'Если значение будет больше &H7fffffff, то это вызовет OverFlow

'&H7fffffff = 2147483647

For I = 0 To Len(strExpression) - 1

ConStrToNumber = ConStrToNumber Or Asc(Mid$(strExpression, Len(strExpression) - I, 1)) * (256 ^ I)

Next I

End Function

- преобразователь String в числовое значение. Другой вариант, получать данные не как String, а как байтовый массив, тогда цикл будет выглядеть как

for i=0 to ubound(bArray())

ConStrToNumber=ConStrToNumber Or bArray(ubound(bArray())-i)*(256^i)

next i

Кстати, не пробовал загружать прямо в Long или Double?

Ответить

Страница: 1 |

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



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