Autor
|
Tema: Duda con WriteProcessMemory (Leído 4,565 veces)
|
naderST
|
Bueno estaba probando para cambiar el nombre del jugador en el CS (Counter Strike) 1.6 y bueno lo logre con el CE (Cheat Engine) y quise hacerlo con VB6 hice lo siguiente pero no me da resultado pareciera que no escribe... Option Explicit
Private Const PROCESS_ALL_ACCESS As Long = &H1F0FFF
Private Declare Function GetAsyncKeyState Lib "user32.dll" ( _ ByVal vKey As Long) As Integer
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32.dll" ( _ ByVal hwnd As Long, _ ByRef lpdwProcessId As Long) As Long Private Declare Function OpenProcess Lib "kernel32.dll" ( _ ByVal dwDesiredAccess As Long, _ ByVal bInheritHandle As Long, _ ByVal dwProcessId As Long) As Long Private Declare Function WriteProcessMemory Lib "kernel32.dll" ( _ ByVal hProcess As Long, _ ByRef lpBaseAddress As Any, _ ByRef lpBuffer As Any, _ ByVal nSize As Long, _ ByRef lpNumberOfBytesWritten As Long) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" ( _ ByVal hObject As Long) As Long Private Sub CambiarNombre(Nombre As String) Dim wHandle As Long Dim pId As Long Dim pHandle As Long
wHandle = FindWindow(vbNullString, "Counter-Strike")
If wHandle = 0 Then Exit Sub
GetWindowThreadProcessId wHandle, pId
pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pId)
If pHandle = 0 Then Exit Sub
WriteProcessMemory pHandle, &H2F4DC28, StrPtr(Nombre), LenB(Nombre), 0&
CloseHandle pHandle End Sub
Private Sub Form_Load() Timer1.Enabled = True End Sub
Private Sub Timer1_Timer() If GetAsyncKeyState(vbKeyF5) Then CambiarNombre ("NADER") End Sub
|
|
« Última modificación: 4 Febrero 2008, 16:58 pm por naderST »
|
En línea
|
|
|
|
Hendrix
|
Con solamente WriteProcessMemory no te va a funcionar...necesitas reservar memoria para poder escribir... Fijate en este post que hice, este reserva una región de memoria en un proceso remoto y leugo escribe en el. http://foro.elhacker.net/index.php/topic,168272.0.htmlIntenta extraer lo que necesites del codigo. Un Saludo
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
naderST
|
Muchas gracias ya me pongo a verlo.
|
|
|
En línea
|
|
|
|
naderST
|
Amigo pero deberia funcionar como yo lo puse porque fijate yo saque el codigo de un Trainer de el juego GTA: San Andreas con WriteProcessMemory y de ahi fue de donde me guie yo... Este es parte del codigo del trainer: Private Sub FreezeTime() Dim hwnd As Long Dim pid As Long Dim pHandle As Long Dim x As Integer
hwnd = FindWindow(vbNullString, "GTA: San Andreas") If (hwnd = 0) Then hwnd = FindWindow(vbNullString, "GTA: San Andreas")
If (hwnd = 0) Then lblState.Caption = "State: Jeu non Lancer." Timer1.Enabled = False Exit Sub End If
GetWindowThreadProcessId hwnd, pid
pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
If (pHandle = 0) Then lblState.Caption = "State: Couldn't get a process handle." Timer1.Enabled = False Exit Sub End If
WriteProcessMemory pHandle, Hex2Dec("52CF53"), Hex2ASCII("90 90 90 90 90 90"), Len(Hex2ASCII("90 90 90 90 90 90")), 0&
CloseHandle pHandle End Sub
|
|
|
En línea
|
|
|
|
Hendrix
|
De la manera que te indico yo tiene que funcionar al 100%, prueba usando mi codigo Sino no se porque no funciona.
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
Tughack
Desconectado
Mensajes: 490
|
Hendrix, no siempre hay k reservar espacio en memoria. Pero si hay k revisar los permisos. naderST, has visto se hay permisos para escribir? Intenta usar el VirtualProtectEx. Ah, y mira nuevamente se los offsets estan correctos ^^
Saludos
|
|
|
En línea
|
|
|
|
|
|