Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
13/12/09 11:07
DavidP
Salve io vorrei creare un triner per un gioco in vb6 e allora vi chiedo come posso fare ad attaccare le parti di memoria del gioco.
sono arrivato ad un buon punto cioè di trovare la parte da modificare con CE ma il problema sta come scrivere il codice in vb6, spero che voi abbiate delle idee ma soprattutto potermi aiutare.
Grazie in anticipo.
E per iniziare io ho inserito queste Api:
Option Explicit

Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByRef lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Declare Function GetCurrentProcess Lib "kernel32" () As Long

Global Const SYNCHRONIZE As Long = &H100000
Global Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000
Global Const PROCESS_ALL_ACCESS As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)

Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public WindowHandle As Long
Public ProcessID As Long
Public ProcessHandle As Long

Public Function GetProc(fProcessName As String) As Boolean

WindowHandle = FindWindow(vbNullString, fProcessName)
If (WindowHandle = 0) Then
  GetProc = False
  Exit Function
  End If

GetWindowThreadProcessId WindowHandle, ProcessID
ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID)
If (ProcessHandle = 0) Then
  GetProc = False
  Exit Function
  End If
GetProc = True

End Function

Public Function ReadByte(Address As Long) As Byte
ReadProcessMemory ProcessHandle, Address, ReadByte, 1&, 0&
End Function

Public Function ReadInteger(Address As Long) As Integer
ReadProcessMemory ProcessHandle, Address, ReadInteger, 2&, 0&
End Function

Public Function ReadLong(Address As Long) As Long
ReadProcessMemory ProcessHandle, Address, ReadLong, 4&, 0&
End Function

Public Function ReadSingle(Address As Long) As Single
ReadProcessMemory ProcessHandle, Address, ReadSingle, 4&, 0&
End Function

Public Function ReadDouble(Address As Long) As Double
ReadProcessMemory ProcessHandle, Address, ReadDouble, 8&, 0&
End Function

Public Function ReadDMAByte(Address As Long, Offset As Long) As Byte
ReadProcessMemory ProcessHandle, Address + Offset, ReadDMAByte, 1&, 0&
End Function

Public Function ReadDMAInteger(Address As Long, Offset As Long) As Integer
ReadProcessMemory ProcessHandle, Address + Offset, ReadDMAInteger, 2&, 0&
End Function

Public Function ReadDMALong(Address As Long, Offset As Long) As Long
ReadProcessMemory ProcessHandle, Address + Offset, ReadDMALong, 4&, 0&
End Function

Public Function ReadDMASingle(Address As Long, Offset As Long) As Single
ReadProcessMemory ProcessHandle, Address + Offset, ReadDMASingle, 4&, 0&
End Function

Public Function ReadDMADouble(Address As Long, Offset As Long) As Double
ReadProcessMemory ProcessHandle, Address + Offset, ReadDMADouble, 8&, 0&
End Function

Public Sub WriteByte(Address As Long, fWByte As Byte)
WriteProcessMemory ProcessHandle, Address, fWByte, 1&, 0&
End Sub

Public Sub WriteInteger(Address As Long, fWInt As Integer)
WriteProcessMemory ProcessHandle, Address, fWInt, 2&, 0&
End Sub

Public Sub WriteLong(Address As Long, fWLong As Long)
WriteProcessMemory ProcessHandle, Address, fWLong, 4&, 0&
End Sub

Public Sub WriteSingle(Address As Long, fWSingle As Single)
WriteProcessMemory ProcessHandle, Address, fWSingle, 4&, 0&
End Sub

Public Sub WriteDouble(Address As Long, fWDouble As Double)
WriteProcessMemory ProcessHandle, Address, fWDouble, 8&, 0&
End Sub

Public Sub WriteDMAByte(Address As Long, Offset As Long, Value As Byte)
WriteProcessMemory ProcessHandle, Address + Offset, Value, 1&, 0&
End Sub

Public Sub WriteDMAInteger(Address As Long, Offset As Long, Value As Integer)
WriteProcessMemory ProcessHandle, Address + Offset, Value, 2&, 0&
End Sub

Public Sub WriteDMALong(Address As Long, Offset As Long, Value As Long)
WriteProcessMemory ProcessHandle, Address + Offset, Value, 4&, 0&
End Sub

Public Sub WriteDMASingle(WSAddress As Long, WSOffset As Long, WSValue As Single)
WriteProcessMemory ProcessHandle, WSAddress + WSOffset, WSValue, 4&, 4&
End Sub

Public Sub WriteDMADouble(Address As Long, Offset As Long, Value As Single)
WriteProcessMemory ProcessHandle, Address + Offset, Value, 8&, 0&
End Sub
aaa
13/12/09 11:11
GrG
non è una cosa lecita quella che vuoi fare... comunque vedo che le api e sub ce l'hai quindi...

io non ti aiuterò a sviluppare un programma illegale
aaa
13/12/09 11:23
DavidP
Mica è illegale creare un triner per uso personale.
Io volevo solo un aiuto su come riuscirlo a modificare.
E poi il gioco non è online ma è un gioco per perdere il tempo.
quindi per favore aiutami grazie tante
aaa
13/12/09 13:35
doom94
comunque è un trainer e non triner (-.-')...e GrG non è un programma illegale, e solo un cheat...:pat::pat:
aaa
13/12/09 15:40
GrG
dopo una ricerca ho visto che sono legali, ma comunque è un programma "poco etico"...
aaa
13/12/09 17:43
doom94
Va be ma non ci potresti dare una mano lo stesso?? anche io un po di tempo fa avevo dato un okkio per cavare un trainer buono...Ho trovato solo qualcosa per il c++ e il resto mi sistemavo io con Cheat Engine sugli esa...:heehee::heehee:, non è che potresti darci un aiutino?????
aaa
13/12/09 20:03
GrG
ciò che vi serve ce l'avete, poi fate da soli... perchè io sinceramente mi impegno su programmi un pò più seri ed utili (cosa che consiglio anche a voi)
aaa
14/12/09 14:09
doom94
va bien...comunque è utile anche questo perchè è tutto collegato con l'assembler...cosi si inizia a studicchiare anche questo ! ;):hail::rofljavascript:addsmile(':rofl:'):
aaa