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:
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