elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 01:04  


Tema destacado: Únete al Grupo Steam elhacker.NET

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


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


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

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
'---------------------------------------------------------------------------------------
' Module    : mMemory
' Author    : Karcrack
' Date      : 20/09/2011
' Purpose   : Work with memory withouth using any API
' History   : 20/09/2011 First cut .....................................................
'---------------------------------------------------------------------------------------

Option Explicit
 
Private bvHack(0)               As Byte
Private lHackDelta              As Long
Private bInitialized            As Boolean
 
Public Function Initialize() As Boolean
   On Error GoTo Error_Handle
 
   bvHack(-1) = bvHack(-1) 'Error check
   lHackDelta = VarPtr(bvHack(0))
 
   Initialize = True
   bInitialized = Initialize
   Exit Function
Error_Handle:
   If Err.Number = 9 Then Debug.Print "Remember to tick 'Remove array boundary check' and compile before using"
   End
End Function
 
Public Function GetByte(ByVal lPtr As Long) As Byte
   If bInitialized Then GetByte = bvHack(lPtr - lHackDelta)
End Function
 
Public Function GetWord(ByVal lPtr As Long) As Integer
   If bInitialized Then GetWord = MakeWord(GetByte(lPtr + &H0), GetByte(lPtr + &H1))
End Function
 
Public Function GetDWord(ByVal lPtr As Long) As Long
   If bInitialized Then GetDWord = MakeDWord(GetWord(lPtr + &H0), GetWord(lPtr + &H2))
End Function
 
Public Sub PutByte(ByVal lPtr As Long, ByVal bByte As Byte)
   If bInitialized Then bvHack(lPtr - lHackDelta) = bByte
End Sub
 
Public Sub PutWord(ByVal lPtr As Long, ByVal iWord As Integer)
   If bInitialized Then Call PutByte(lPtr + &H0, iWord And &HFF): Call PutByte(lPtr + &H1, (iWord And &HFF00&) \ &H100)
End Sub
 
Public Sub PutDWord(ByVal lPtr As Long, ByVal lDWord As Long)
   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)
End Sub
 
Private Function MakeWord(ByVal loByte As Byte, ByVal hiByte As Byte) As Integer '[http://www.xbeat.net/vbspeed/c_MakeWord.htm#MakeWord02]
   If hiByte And &H80 Then
       MakeWord = ((hiByte * &H100&) Or loByte) Or &HFFFF0000
   Else
       MakeWord = (hiByte * &H100) Or loByte
   End If
End Function
 
Private Function MakeDWord(ByVal LoWord As Integer, ByVal HiWord As Integer) As Long '[http://www.xbeat.net/vbspeed/c_MakeDWord.htm#MakeDWord05]
   MakeDWord = (HiWord * &H10000) Or (LoWord And &HFFFF&)
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 por Karcrack » En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


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

Ejemplo de uso:
Código
Private Sub Form_Load()
   Dim x       As Long
   Dim y       As Long
 
   Call mMemory.Initialize
 
   x = &H1337
   y = 0
   MsgBox x & vbCrLf & y
   y = mMemory.GetDWord(VarPtr(x))
   MsgBox x & vbCrLf & y
End Sub
 
;)


En línea

RHL


Desconectado Desconectado

Mensajes: 968


mental


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

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


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


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

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

RHL


Desconectado Desconectado

Mensajes: 968


mental


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

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: 331


Level xXx


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

Bueno ya, me saco la duda...

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


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


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

@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: 29


El Conocimiento nos hace Libres...


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

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

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

Karcrack


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


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

¿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: 2.831


I'Love...!¡.


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

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

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
Slek Hacker

Desconectado Desconectado

Mensajes: 29


El Conocimiento nos hace Libres...


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #10 en: 1 Noviembre 2011, 09:05 »

Código
Public Sub PutDWord(ByVal lPtr As Long, ByVal lDWord As Long)
   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)
End Sub

Arreglado :D

Saludos!
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #11 en: 1 Noviembre 2011, 12:23 »

Puse el low donde iba el hi y viceversa jaja gracias Slek :) Lo corrijo :-*
En línea

Swellow

Conectado Conectado

Mensajes: 36


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #12 en: 1 Noviembre 2011, 17:13 »

Thanks so much for this, I've tried to use it on your PatchAPI function but I can't get it working :( Could you give us a sample please?
En línea
Karcrack


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #13 en: 1 Noviembre 2011, 18:59 »

You won't be able to write there because the memory section isn't writeable... you must use VirtualProtect() first...
En línea

scapula

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #14 en: 2 Noviembre 2011, 20:42 »

hello i have a problem with this function

Código:
Private Sub WriteString(ByVal lPtr As Long, ByVal sStr As String)
    Dim bvStr()         As Byte
    bvStr = StrConv(sStr, vbFromUnicode)
    Call WriteProcessMemory(-1, ByVal lPtr, bvStr(0), UBound(bvStr) + 1, ByVal 0&)
End Sub


i have use PutByte but i have an error Overflow you can help me please.
En línea
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines