elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Como Hacer Que Este Code Edite Array Of Bytes?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como Hacer Que Este Code Edite Array Of Bytes?  (Leído 3,339 veces)
Dari0s

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Como Hacer Que Este Code Edite Array Of Bytes?
« en: 19 Noviembre 2008, 23:54 pm »

Hola.. :) soy nuevo en el foro y tengo una duda muy grande.. que tengo desde hace un tiempo.. es lo siguiente

tengo un code en visual basic de un programa que ise para editar una direccion de memoria de un proceso con una direccion un value y el nombre de el proceso a editar..

tengo el code perfecto me funciona pero solo me edita hasta 4 bytes ... tambien tengo otro que edita la memoria del proceso con el numero de bytes que desee.. pero hay un problema que de value no se pueden poner numeros sino el significado de los mismos en la memoria aver si no me entienden les dejo esta imagen



como vieron ojala me haya dado a entender.. el code edita es la parte del lado derecho del dump no la parte de los valores .. aqui les dejo el code y una demostracion de ello...

esto va en un modulo de clase:
Código
  1.  
  2. 'bueno esto es para editar la memoria dandole el nombre de un proceso etc con su address y value..
  3.  
  4. Private Function WriteMemory(dwProcId As Long, dwAddress As Long,
  5. ByVal pValue As Long, ByVal dwLength As Long) As Boolean
  6.  
  7.    If dwAddress = 0 Then
  8.        WriteMemory = False
  9.        Exit Function
  10.    End If
  11.  
  12.    Dim procHandle  As Long
  13.    procHandle = OpenProcess(PROCESS_ALL_ACCESS, False, dwProcId)
  14.    If procHandle = 0 Then
  15.        WriteMemory = False
  16.        Exit Function
  17.    End If
  18.  
  19.    Dim dwReturned As Long
  20.    dwReturned = WriteProcessMemory(procHandle, ByVal dwAddress, ByVal pValue, dwLength, 0&)
  21.  
  22.    If dwReturned > 0 Then
  23.        WriteMemory = True
  24.    Else
  25.        WriteMemory = False
  26.    End If
  27.  
  28. End Function
  29.  
  30. 'y pues con esto solo edito un byte MENOS ME SIRVE LO CUAL NECESITO ES PARA EDITAR ALMENOS UNOS 100 BYTES EN UN SOLO VALUE
  31. Public Function WriteByte(dwProcId As Long, dwAddress As Long, ByVal dwValue As Byte) As Boolean
  32.  
  33.    If dwProcId = 0 Or dwAddress = 0 Then
  34.        WriteByte = False
  35.        Exit Function
  36.    End If
  37.  
  38.    If WriteMemory(dwProcId, dwAddress, VarPtr(dwValue), LenB(dwValue)) = False Then
  39.        WriteByte = False
  40.        Exit Function
  41.    End If
  42.  
  43.    WriteByte = True
  44.  
  45. End Function
  46.  
  47. 'pues como ven este edita solo 2 bytes si pongo un value mas grande sale error desbordamiento..
  48.  
  49. Public Function Write2Bytes(dwProcId As Long, dwAddress As Long, ByVal dwValue As Integer) As Boolean
  50.  
  51.    If dwProcId = 0 Or dwAddress = 0 Then
  52.        Write2Bytes = False
  53.        Exit Function
  54.    End If
  55.  
  56.    If WriteMemory(dwProcId, dwAddress, VarPtr(dwValue), LenB(dwValue)) = False Then
  57.        Write2Bytes = False
  58.        Exit Function
  59.    End If
  60.  
  61.    Write2Bytes = True
  62.  
  63. End Function
  64.  
  65. 'Ven Este es el que edita 4 bytes.. pero no edita mas de alli si lo hago me sale error de desbordamiento..
  66.  
  67. Public Function Write4Bytes(dwProcId As Long, dwAddress As Long, ByVal dwValue As Long) As Boolean
  68.  
  69.    If dwProcId = 0 Or dwAddress = 0 Then
  70.        Write4Bytes = False
  71.        Exit Function
  72.    End If
  73.  
  74.    If WriteMemory(dwProcId, dwAddress, VarPtr(dwValue), LenB(dwValue)) = False Then
  75.        Write4Bytes = False
  76.        Exit Function
  77.    End If
  78.  
  79.    Write4Bytes = True
  80.  
  81. End Function
  82.  
  83. 'Aver Este Es La Parte De La Cual Les menciono Arriba.... Si Pongo Este Code Me Edita El Otro Lado de la memoria ven :p como en la imagen de arriba..
  84. 'Y no se como editarlo o arreglarlo para que edite pero con values.. si me pueden ayudar seria estupendo!! :D
  85.  
  86. Public Function WriteArray(dwProcId As Long, dwAddress As Long, ByVal dwValue As String) As Boolean
  87.  
  88.    If dwProcId = 0 Or dwAddress = 0 Then
  89.        WriteArray = False
  90.        Exit Function
  91.    End If
  92.  
  93.    Dim szByteArray() As Byte
  94.    ReDim szByteArray(Len(dwValue))
  95.  
  96.    Dim x As Long
  97.    For x = 1 To UBound(szByteArray)
  98.        szByteArray(x - 1) = CByte(Asc(Mid$(dwValue, x, 1)))
  99.    Next x
  100.  
  101.    If WriteMemory(dwProcId, dwAddress, VarPtr(szByteArray(0)), Len(dwValue)) = False Then
  102.        WriteArray = False
  103.        Exit Function
  104.    End If
  105.  
  106.    WriteArray = True
  107.  
  108. End Function
  109.  

ahora miren el code de el editor como es...

Código
  1. Private Poke As New Edicion_Memoria 'esto es un modulo de clase
  2. Private Proc As New Procesos ' esto es un modulo de clase. esta perfecto es para cojer el pid correcto del proceso
  3.  
  4. Private Sub Form_Activate()
  5.  
  6. Dim Address1 As Long
  7.  
  8. Address1 = &H400000
  9.  
  10. GetProcessID ("AlgunProceso.exe")
  11. dwProcId = ProgID
  12.  
  13. if checkbox1.value = 1 then
  14.    Poke.WriteArray dwProcId, Address1, "ËÌÈÉ×ÏÈÍÎÛØÚÙÊÜÝÞßàáãäå@Error‹ÀRuntime error     at 00000000‹À0123456789ABCDEF"
  15. end if
  16.  
  17. Unload Me
  18. End Sub

Ajam Asi Seria El Code Para Poder Editar Un Array Pero Resulta Que yo quiero es poner un value con numeros no eso.. porque si pongo los numeros en la memoria como señale arriba en el dump se mostraran numeros en ves de lo que se debe mostrar..

espero me hayan entendido y porsiacaso se enrredo quien sea que me pueda ayudar aqui esta como yo quiero que sea :)

Código
  1. if checkbox1.value = 1 then
  2.    Poke.WriteArray dwProcId, Address1, "11 CB CC C8 C9 D7 CF C8 CD CE DB D8 DA D9 CA DC DD DE DF E0 E1 E3 11 E4 E5 8D 40 11 45 72 72 6F 72 11 8B C0 52 75 6E 74 69 6D 65 20 65 72 72 6F 72 20 20 20 20 20 61 74 20 30 30 30 30 30 30 30 30 11 8B C0 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 11 11 11 11 11 11 11 11 11 11 11 11"
  3. end if

Bueno Eso Es Todo.. ya intente cambiando los valores y aun asi me da error de desbordamiento en 1, 2, 4, y no se como si me pueden ayudar seria Genial!!  ;D

Gracias De Antemano Hasta Luego  :P


« Última modificación: 21 Noviembre 2008, 23:55 pm por Dari0s » En línea

WILMER5

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Como Hacer Que Este Code Edite Array Of Bytes?
« Respuesta #1 en: 20 Noviembre 2008, 06:26 am »

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


En línea

Dari0s

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Como Hacer Que Este Code Edite Array Of Bytes?
« Respuesta #2 en: 20 Noviembre 2008, 07:17 am »

Jejej Hola.. :D Pues Supieras que si es para un juego llamado rakion..
hmm encontre la manera para poder editar la memoria al abrirse su proteccion por eso no hay problema pero necesito es arreglar este code para poder escribir un array of bytes.. tu lo tienes? me podrias decir como hacerlo? esque tengo una duda que en el post ese que dices no me han respondido...

Ajam supongamos que el code que tienes alli sirva.. pero igual no veo donde poner el numero de array of bytes osea todos de una ves y no byte por byte como lo esta haciendo alli ves? el tuyo lo hace con: ejemplo "&H84" y necesito es uno completo "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" ves? eso es lo que necesito ahora si me puedes ayudar uff te lo agraeceria uff es mas te daria creditos en el trainer jejeje.. ojala me puedas ayudar.. bai ;D

PD: Tu Tambien usaste el tuyo para eso? jjejeje
En línea

WILMER5

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Como Hacer Que Este Code Edite Array Of Bytes?
« Respuesta #3 en: 28 Noviembre 2008, 23:05 pm »

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...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como hacer un array de longitud variable?
Programación C/C++
Y2J 3 7,641 Último mensaje 24 Agosto 2011, 02:30 am
por rir3760
¿Como hacer una lista de nombres usando array con lenguaje C?
Programación C/C++
alejandrodiaz 2 31,814 Último mensaje 13 Julio 2015, 18:24 pm
por alejandrodiaz
Como llamo a este array de string?
Programación Visual Basic
afrocardo 3 2,166 Último mensaje 24 Diciembre 2015, 13:22 pm
por afrocardo
Como hacer array
Programación C/C++
Raul Stene 1 1,215 Último mensaje 10 Diciembre 2018, 20:14 pm
por K-YreX
Array de Bytes a String.
.NET (C#, VB.NET, ASP)
**Aincrad** 4 3,601 Último mensaje 15 Mayo 2019, 21:43 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines