Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - WILMER5

#1
Si yo he usado este metodo para rakion pero para el Rakion Blue Duck porque para el latino no me sirvio, si lograste romper la protección me gustaria saber como lo hiciste aunque no lo creo!!! yo hice un trainer para rakion blue duck, uno de Especial de criaturas negras y otro de AlltoNak derrepente lo allas visto, lo he publicado en varios foros pero en esos foros me llamo WilJor[xD]

Salu2...
#2
Amigo en este post yo tenia exactamente la misma duda y me la respondieron!!!

http://foro.elhacker.net/ingenieria_inversa/duda_sobre_valores_de_la_memoria-t226997.0.html;topicseen

Tambien puedes usar un bucle for para incrementar la memoria en 1 cada y escrtibes un valor diferente en cada pocisión memoria!!!

Ejemplo:

Dim MiArray(5) As Byte
MiArray(1) = &H11
MiArray(2) = &H22
MiArray(3) = &H33
MiArray(4) = &H44
MiArray(5) = &H55
Adress = "&H353DC178"

For i = 1 to 5
   dwReturned = WriteProcessMemory(Idprocess, Val(Adress)+i, MiArray(i), 1, 0&)
next

De todos modos sino me equivoco debes estar haciendo algun trainer para un juego pero si es uno de esos juegos online como Rakion o WoflTeam de antemano te digo que esos ejemplos no te serviran ya que el gameguard de esos juegos hace un Hook a las api Readprocessmemory y Writeprocessmemory para que cuando detecte su uso sean inutilizables!!! asi que el unico metodo que te recomendaria seria el de inyección dll que es mas seguro!!!

Salu2...
#3
Utiliza un timer y colocas em el intervalo 1000, y en una variable llevas la cantidad de segundo que transcurran, cuando llegue a 5 que cambie el caption y cuando llegue a 10 el text1, todo queda a la imaginación...


Dim c As Integer
Private Sub Timer1_Timer()
c = c + 1
If c = 5 Then Me.Caption = "El titulo que quieras"
If c = 10 Then Text1.Text = "El texto que quieras"
End Sub
#4
Ingeniería Inversa / Eternamente agradecido!!!
9 Septiembre 2008, 21:32 PM
Susalic estoy eternamente agradecido contigo, muchas gracias por ayudarme, lo probe y me funciona a la perfección, no solo para 5 bytes sino para los que quiera... me quito el sombrero ante ti, y una vez más Gracias!!!
#5
Cita de: ®® en  8 Septiembre 2008, 23:04 PM
esq como te digo la variable value es de tipo long, ahi no almacenaras 16 bytes.

mirate bien los tipos de datos.

tambien probe cambiando las declaraciones de las funciones y de las variables y
tampoco me funciono, me sigue leyendo como maximo 4 bytes.!!!
#6
Cita de: susanalic en  8 Septiembre 2008, 18:10 PM
No sé de donde has sacado la conclusión de que la memoria se divide en bloque de 16 bytes, pero no es así. Los dump de memoria como el de la imagen de Olly suelen tener 16 bytes en cada línea por ser una forma conveniente de mostarlo, pero nada más. Esas APIs leen/escriben cualquier número de bytes en la memoria del proceso, siempre y cuando dicho segmento tenga los permisos adecuados.

digo que se divide en 16 byte porque asi me lo muestra el programa, en el post creo que aclare que soy novato en esto, y que el avance que tuve fue de modificar solo 4 byte los primero cuatro, como cada linea tiene 16, me imagine que al poder leer y escribir los 16 bytes de esa direccion de memoria, pordria hacer lo mismo con las otras!!!

en la funcion que coloque dice que lleen 4 byte pero al colocar 16 me muestra error!!! ademas cuando colo un valor mayor a 4, por ejemplo 5,6,7,8 me muestra el mismo valor como si colocara 4... y ay es donde esta mi mayor duda, si alguien ya lo ha hecho o tiene alguna funcion de ejemplo espero que por favor la publique o me guie a realizarla, ojo: no estoy pidiendo a nadie que me haga nada solo un poco de ayuda a gente con experiencia en esto para poder hacer la cosas!!!!
#7
Ingeniería Inversa / ya lo habia intentado...
8 Septiembre 2008, 02:46 AM
ya lo habia intentando el igual no funciona, la funcion es solo para leer y escribir solo 4 bytes, y no hallo la manera de que me lea los 16 que quiero, como explique en el tema, con la funcion solo leo y modifico 4 bytes, pero cada bloque de memoria tiene 16 bytes, para poder escribir el array de bytes se necesita ocupar 6 bloques de memoria de 16 bytes cada uno, al poder modificar uno me imagino yo que lo demas seria mas facil, pero ay es donde esta mi duda, como hacer para que lea y escriba los 16 bytes de cada bloque de memoria!!!

De todos modos Gracias por responder,
#8
Holas amigo estoy haciendo un pequeño programa en visual bsic 6.0 donde quiero modificar valores de la memoria en tiempo de ejecución, por ejemplo el programa selecciona un proceso y en una direccion de memoria leer y guardar valores, soy un poco novato en esto pero ya he avanzado un poco... para valores de 1,2 y 4 byte ya lo se hacer de esta manera:

Esta es la funcion que uso para leer valores y me funciona perfecto

Public Function ReadLong(Offset As Long, ProcessID As Long) As Long
Dim ProcessHandle As Long
Dim Value As Long
ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID)
If ProcessHandle = 0 Then
MsgBox "No se encuentra el proceso", vbCritical, "Error de Lectura"
Exit Function
End If
ReadProcessMem ProcessHandle, Offset, Value, 4, 0&
ReadLong = Value
CloseHandle ProcessHandle
End Function


Esta es la funcion que uso para escribir valores.

Public Function WriteLong(Offset As Long, ProcessID As Long, Value As Long) As Boolean

Dim ProcessHandle As Long
ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID)
If ProcessHandle = 0 Then
MsgBox "No se encuentra el proceso", vbCritical, "Error de Lectura"
Exit Function
End If
WriteProcessMemory ProcessHandle, Offset, Value, 4, 0&
CloseHandle ProcessHandle
End Function


ahora lo que me gustaria saber es como leer y guardar valores de Array de Byte

Por ejemplo:

en la dirección de memoria &H353BD7C0 guardar los siguientes valores, esto es un array de 96 bytes...

28 79 3D 35 00 00 00 00 2C 79 3D 35 00 00 00 00 48 BB 3B 35 01 00 00 00 4C 79 3D 35 01 00 00 00 DC 75 2F 35 58 93 2D 35 A4 04 00 00 F8 BE 3B 35 70 A3 0F 35 C0 A0 0F 35 D0 A0 0F 35 E0 A0 0F 35 00 A1 0F 35 10 A1 0F 35 20 A1 0F 35 F0 A0 0F 35 01 00 00 00 FF FF FF FF 30 A6 0F 35 58 93 2D 35

Acotación: Cada bloque de memoria tiene 16 posiciones, para 4 posiciones ya lo se modificar con la funcion que puse. de todos modos adjunto una imagen de referencia para explicarme mejor.



Muchas Gracias por leer mi pregunta espero que puedan ayudarme!!!

#9
Hola amigos estoy haciendo un pequeño programa donde quiero modificar valores de la memoria en tiempo de ejecución, por ejemplo el programa selecciona un proceso y en una direccion de memoria leer y guardar valores, soy un poco novato en esto pero ya he avanzado un poco... para valores de 1,2 y 4 byte ya lo se hacer de esta manera:

Esta es la funcion que uso para leer valores y me funciona perfecto

Public Function ReadLong(Offset As Long, ProcessID As Long) As Long
    Dim ProcessHandle As Long
    Dim Value As Long
    ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID)
    If ProcessHandle = 0 Then
         MsgBox "No se encuentra el proceso", vbCritical, "Error de Lectura"
        Exit Function
    End If
    ReadProcessMem ProcessHandle, Offset, Value, 4, 0&
    ReadLong = Value
    CloseHandle ProcessHandle
End Function

Esta es la funcion que uso para escribir valores.

Public Function WriteLong(Offset As Long, ProcessID As Long, Value As Long) As Boolean

    Dim ProcessHandle As Long
    ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID)
    If ProcessHandle = 0 Then
        MsgBox "No se encuentra el proceso", vbCritical, "Error de Lectura"
        Exit Function
    End If
    WriteProcessMemory ProcessHandle, Offset, Value, 4, 0&
    CloseHandle ProcessHandle
End Function

ahora lo que me gustaria saber es como leer y guardar valores de Array de Byte

Por ejemplo:

en la dirección de memoria &H353BD7C0 guardar los siguientes valores, esto es un array de 96 bytes...

28 79 3D 35 00 00 00 00 2C 79 3D 35 00 00 00 00 48 BB 3B 35 01 00 00 00 4C 79 3D 35 01 00 00 00 DC 75 2F 35 58 93 2D 35 A4 04 00 00 F8 BE 3B 35 70 A3 0F 35 C0 A0 0F 35 D0 A0 0F 35 E0 A0 0F 35 00 A1 0F 35 10 A1 0F 35 20 A1 0F 35 F0 A0 0F 35 01 00 00 00 FF FF FF FF 30 A6 0F 35 58 93 2D 35

Muchos Gracias por leer el tema espero puedan ayudarme!!!
#10
Ejercicios / Re: SUGERENCIAS
1 Septiembre 2008, 07:08 AM
que cada vez que se expliquen ejercicios y trucos de programación, que sean un poco mas explicativos, con videos e imagenes, y que se haga bastante incapies en el area de desamblar programas, asembler, craking e inyeccion de codigo en tiempo de ejecucion con o sin dlls...