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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 5 Ir Abajo Respuesta Imprimir
Autor Tema: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]  (Leído 18,162 veces)
Karcrack


Desconectado Desconectado

Mensajes: 2.419


Se siente observado ¬¬'


Ver Perfil
mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« en: 31 Octubre 2011, 13:19 pm »

Hace mucho tiempo que no toqueteaba a mi querido VB6 :P Así que aquí estoy con otra primicia chicoooos!!! :laugh: :laugh:

Este modulito que os presento permite trabajar con la memoria sin el uso de ningún API!!!!

Eso sí! Tenéis que desactivar la comprobación de límites de matrices :P Os pongo una foto:

Además solo funciona compilado, como muchos otros hacks el IDE no permite tocar demasiado :-\ :xD

Y como todos estáis deseando aquí viene el sencillo pero eficaz código :)
Código
  1. '---------------------------------------------------------------------------------------
  2. ' Module    : mMemory
  3. ' Author    : Karcrack
  4. ' Date      : 20/09/2011
  5. ' Purpose   : Work with memory withouth using any API
  6. ' History   : 20/09/2011 First cut .....................................................
  7. '---------------------------------------------------------------------------------------
  8.  
  9. Option Explicit
  10.  
  11. Private bvHack(0)               As Byte
  12. Private lHackDelta              As Long
  13. Private bInitialized            As Boolean
  14.  
  15. Public Function Initialize() As Boolean
  16.    On Error GoTo Error_Handle
  17.  
  18.    bvHack(-1) = bvHack(-1) 'Error check
  19.    lHackDelta = VarPtr(bvHack(0))
  20.  
  21.    Initialize = True
  22.    bInitialized = Initialize
  23.    Exit Function
  24. Error_Handle:
  25.    If Err.Number = 9 Then Debug.Print "Remember to tick 'Remove array boundary check' and compile before using"
  26.    End
  27. End Function
  28.  
  29. Public Function GetByte(ByVal lPtr As Long) As Byte
  30.    If bInitialized Then GetByte = bvHack(lPtr - lHackDelta)
  31. End Function
  32.  
  33. Public Function GetWord(ByVal lPtr As Long) As Integer
  34.    If bInitialized Then GetWord = MakeWord(GetByte(lPtr + &H0), GetByte(lPtr + &H1))
  35. End Function
  36.  
  37. Public Function GetDWord(ByVal lPtr As Long) As Long
  38.    If bInitialized Then GetDWord = MakeDWord(GetWord(lPtr + &H0), GetWord(lPtr + &H2))
  39. End Function
  40.  
  41. Public Sub PutByte(ByVal lPtr As Long, ByVal bByte As Byte)
  42.    If bInitialized Then bvHack(lPtr - lHackDelta) = bByte
  43. End Sub
  44.  
  45. Public Sub PutWord(ByVal lPtr As Long, ByVal iWord As Integer)
  46.    If bInitialized Then Call PutByte(lPtr + &H0, iWord And &HFF): Call PutByte(lPtr + &H1, (iWord And &HFF00&) \ &H100)
  47. End Sub
  48.  
  49. Public Sub PutDWord(ByVal lPtr As Long, ByVal lDWord As Long)
  50.    If bInitialized Then Call PutWord(lPtr + &H0, IIf(lDWord And &H8000&, lDWord Or &HFFFF0000, lDWord And &HFFFF&)): Call PutWord(lPtr + &H2, (lDWord And &HFFFF0000) \ &H10000)
  51. End Sub
  52.  
  53. Private Function MakeWord(ByVal loByte As Byte, ByVal hiByte As Byte) As Integer '[http://www.xbeat.net/vbspeed/c_MakeWord.htm#MakeWord02]
  54.    If hiByte And &H80 Then
  55.        MakeWord = ((hiByte * &H100&) Or loByte) Or &HFFFF0000
  56.    Else
  57.        MakeWord = (hiByte * &H100) Or loByte
  58.    End If
  59. End Function
  60.  
  61. Private Function MakeDWord(ByVal LoWord As Integer, ByVal HiWord As Integer) As Long '[http://www.xbeat.net/vbspeed/c_MakeDWord.htm#MakeDWord05]
  62.    MakeDWord = (HiWord * &H10000) Or (LoWord And &HFFFF&)
  63. End Function

Si saco un poco de tiempo libre hago una clase chuli piruli con este mismo sistema :)

Happy codin' ::)


« Última modificación: 1 Noviembre 2011, 12:24 pm por Karcrack » En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.419


Se siente observado ¬¬'


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #1 en: 31 Octubre 2011, 13:23 pm »

Ejemplo de uso:
Código
  1. Private Sub Form_Load()
  2.    Dim x       As Long
  3.    Dim y       As Long
  4.  
  5.    Call mMemory.Initialize
  6.  
  7.    x = &H1337
  8.    y = 0
  9.    MsgBox x & vbCrLf & y
  10.    y = mMemory.GetDWord(VarPtr(x))
  11.    MsgBox x & vbCrLf & y
  12. End Sub
  13.  
;)


En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #2 en: 31 Octubre 2011, 17:27 pm »

 ;-) ;-) ;-) ;-)
Grande Karcrack!  ;D
lo estudiare, me imagino que es mas rapido que las apis,rtlmovememory?
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.419


Se siente observado ¬¬'


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #3 en: 31 Octubre 2011, 17:35 pm »

Sipi ;D Básicamente son movs en ASM... el compilador se encarga del asunto ;)
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #4 en: 31 Octubre 2011, 18:54 pm »

Karcrack estudie tu code ;D
y pues tengo unas dudas lo segui con el dbg en el ide me las arregle como pude :P
y veo que los haces como en el "aire de la memoria" podria colgarse la app si en el array en las posiciones (-xxxxxx) se encuentre ya ocupada ? :P
En línea

CAR3S?


Desconectado Desconectado

Mensajes: 343


Level xXx


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #5 en: 31 Octubre 2011, 19:28 pm »

Bueno ya, me saco la duda...

¿que podria hacer con esto? :B
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.419


Se siente observado ¬¬'


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #6 en: 31 Octubre 2011, 19:33 pm »

@Raul100: Todas las posiciones ya existen, el array solo ocupa 1 byte... el resto de indices se salen del array, es por eso que hay que indicarle al compilador que no queremos que compruebe si el indice es mayor que el tamaño del array... De esta forma podemos movernos a cualquier posición de memoria utilizando como referencia la posicion del unico byte que hemos reservado en memoria. :)

@nukje:De todo. :xD Básicamente es para eliminar el uso de funciones para el acceso de memoria.. así se pueden crear RunPEs y Invokes indetectables aún más fácilmente :D
En línea

Slek Hacker

Desconectado Desconectado

Mensajes: 35


El Conocimiento nos hace Libres...


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #7 en: 31 Octubre 2011, 19:39 pm »

Dioooss Karcrack!!! Eres el amoo!! +100000
Muchas Graciaas!!
 ;-)

Edit: el PutDWord me da error >,<
« Última modificación: 31 Octubre 2011, 23:44 pm por Slek Hacker » En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.419


Se siente observado ¬¬'


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #8 en: 1 Noviembre 2011, 03:50 am »

¿Podrías ponerme un ejemplo en el que te dé error? Las funciones put las hice un poco rápido y no testee, pero debe ir correctamente :P Comprueba que no estas intentando escribir en una zona no Writeable de la memoria.
En línea

BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 3.144


I'Love...!¡.


Ver Perfil WWW
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #9 en: 1 Noviembre 2011, 06:57 am »

Se me habia ocurrido algo casi igual hace rato cuando vi esa opcion... pero nunca para algo tan asi como lo que te rifaste... esto esta bueno!¡.

Dulces Lunas!¡.
En línea




CScript (Actualizado 26/06/2013).

FileX <-- Re-modelando...
Web Principal-->[ Blog(VB6/C/C++) | Host File | Scan Port) ]

The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilit y el metal mi relig
Páginas: [1] 2 3 4 5 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Split replacement
Programación Visual Basic
cobein 4 1,306 Último mensaje 18 Septiembre 2008, 01:15 am
por BlackZeroX (Astaroth)
CallAPIByName usando solamente rtlMoveMemory
Programación Visual Basic
cobein 9 5,766 Último mensaje 9 Noviembre 2011, 08:52 am
por scapula
[VB-SNIPPET] htons() replacement
Programación Visual Basic
Karcrack 1 2,705 Último mensaje 26 Junio 2010, 23:15 pm
por LeandroA
[VB6+ASM] Alternativa CopyMemory/RtlMoveMemory/CopyBytes
Programación Visual Basic
Karcrack 6 4,381 Último mensaje 30 Julio 2010, 10:05 am
por Psyke1
Problema con MoveMem - Reemplazando RtlMoveMemory.
Programación Visual Basic
Shackles 4 1,904 Último mensaje 23 Junio 2012, 17:19 pm
por Shackles
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines