Hola amigos otra ves vengo con la duda que abrí en el sub-foro de ingeniería inversa
http://foro.elhacker.net/ingenieria_inversa/como_leer_posicion_de_memoria_con_vb6-t415165.0.html
(http://foro.elhacker.net/ingenieria_inversa/como_leer_posicion_de_memoria_con_vb6-t415165.0.html)
Pero ahora con el código que tengo en vb6 es el siguiente:
Este es el form:
Option Explicit
Private Sub Form_Load()
lbl_Nombre.Caption = Environ("ComputerName")
If AbrirProceso Then
lbl_Password.Caption = Leer(&H14FC80)
End If
End Sub
Private Sub Label1_Click()
End
End Sub
Este es el modulo:
Option Explicit
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Const PROCESS_ALL_ACCESS = &H1F0FFF
Private P_HANDLE As Long
Private P_PID As Long
Public Function AbrirProceso() As Boolean
If FindWindow(vbNullString, "CrackShit") Then
GetWindowThreadProcessId FindWindow(vbNullString, "CrackShit"), P_PID
P_HANDLE = OpenProcess(PROCESS_ALL_ACCESS, False, P_PID)
End If
If P_PID = 0 Then
MsgBox "El Crackme CrackShit No Esta en Ejecucion...", vbCritical, "Error De Ejecucion"
AbrirProceso = False
Exit Function
End If
If P_HANDLE = 0 Then
MsgBox "El KeyGen No Pudo Abrir El Proceso CrackShit...", vbCritical, "Error Al Abrir El Proceso"
AbrirProceso = False
Exit Function
End If
AbrirProceso = True
End Function
Public Function Leer(Address As Long) As Byte
Dim Valor As Byte
Dim i As Long
For i = 0 To 12
ReadProcessMemory P_HANDLE, Address + i, Valor, 1, 0&
MsgBox Valor
Next i
Leer = Valor
End Function
Espero me ayuden ya que no lee nada
Nota: lo de el msgbox dentro del for son pruebas que asía yo para ver si leía algo y lo de retornar un byte también son pruebas con eso no hay problema eso déjenlo así si quieren yo después lo arreglo ya que me digan como a serle para leer
Saludos Flamer
Probaste depurar para ver que esta fallando?
Saludos!
Si te refieres poner un punto de interrupcion y presionar F8 en vb ya lo hice y la variable valor no pesca ningun valor solo 0
saludos Flamer
te edito una parte.
Option Explicit
Private Sub Form_Load()
lbl_Nombre.Caption = Environ("ComputerName")
If AbrirProceso Then
lbl_Password.Caption = Leer(&H14FC80)
End If
End Sub-alt
Public Sub Label1_Click()
End
End Sub
La tenes que dejar en Public en la liena label1
para realizar una llamada al string tenes que usar
Public Declare Function GetWindowThreadProcessId Lib "user"
el modulo nunca te va a funcionar si lo pones en privada.
lo demas lo compones como se debe!!
Saludos!
Hola asesino las apis todo el tiempo se declaran en privado si no te genera un error el cual orita no me acuerdo y no estamos para ablar de eso.
Y con la api GetWindowTheadProcessId no estoy tratando de ablarle a ningun string si no al id del proceso que es un numero y por otro lado lo del label es un objeto que cierra el programa y como todos los objetos por default van en privado
Saludos Flamer
Cita de: Flamer en 25 Junio 2014, 01:33 AM
Si te refieres poner un punto de interrupcion y presionar F8 en vb ya lo hice y la variable valor no pesca ningun valor solo 0
saludos Flamer
OK, y los valores anteriores? FindWindow, GetWindowThreadProcessId y OpenProcess funcionan o dan error? Antes de usar las APIs así, guarda los valores de retorno y verifica si estan funcionando bien.
Como ultimo recurso, puedes compilar y ejecutar el exe con Olly. Le pones un BP en la API y verificas si los parametros los está pasando bien (muchas veces hay errores en la declaración de los parametros: byval ó byref).
Saludos!
Hola fly si...... FindWindow entra al if si esta en ejecucion el crackme y GetWindowThreadProcessId si me de vuelbe el PID ya lo verifique en el administrador de tareas y OpenPrecess me de vuelbe un numero y no cero como antes o me falta algo?
Lo del olly lo boy a intentar.... luego te digo
---------------------Edito--------------
ya lee solo faltaba compilarlo y con el olly da igual que el vb solo 0 eso pienso es por que estaba siendo depurado... problema ahora es que no son los valores que esperaba
saludos Flamer