send
Grupo de Telegram
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]

  • 0 Respuestas
  • 1345 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Karcrack

  • *
  • Underc0der
  • Mensajes: 87
  • Actividad:
    0%
  • Reputación 0
  • Se siente observado ¬¬'
    • Ver Perfil
« en: Junio 16, 2013, 06:28:56 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: Visual Basic
  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' ::)
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer

 

¿Te gustó el post? COMPARTILO!