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

 

 


Tema destacado:


+  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,163 veces)
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 3.144


I'Love...!¡.


Ver Perfil WWW
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #20 en: 3 Noviembre 2011, 08:38 am »

.
Solo falta DESBLOQUEAR la memoria en writeMemory()...

Código
  1.  
  2. Option Explicit
  3.  
  4. Private Declare Function MessageBox Lib "VTFS43" Alias "NfttbhfCpyB" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
  5. Private Declare Function IsBadWritePtr Lib "kernel32" (ByVal lp As Long, ByVal ucb As Long) As Long
  6.  
  7. Public Function unScrambleAPI(ByVal sLibName As String, ByVal sFuncName As String) As Boolean
  8. Dim pBaseAddress    As Long
  9. Dim pVB5            As Long
  10. Dim pProjectInfo    As Long
  11. Dim pExtTable       As Long
  12. Dim pLibraryName    As Long
  13. Dim pFunctionName   As Long
  14. Dim iExtCount       As Long
  15. Dim iIndex          As Long
  16.  
  17. Dim bLibNameOri()   As Byte
  18. Dim bFuncNameOri()  As Byte
  19.  
  20.    'Do NOT run it on the IDE
  21.    If App.LogMode = 0 Then Debug.Assert (0 = 1): Exit Function
  22.  
  23.    pBaseAddress = App.hInstance
  24.    pVB5 = getDWord(pBaseAddress + getDWord(pBaseAddress + getDWord(pBaseAddress + &H3C) + &H28) + 1)
  25.    pProjectInfo = getDWord(pVB5 + &H30)
  26.    pExtTable = getDWord(pProjectInfo + &H234)
  27.    iExtCount = getDWord(pProjectInfo + &H238)
  28.  
  29.    bLibNameOri = StrConv(decrypt(sLibName), vbFromUnicode)
  30.    bFuncNameOri = StrConv(decrypt(sFuncName), vbFromUnicode)
  31.  
  32.    For iIndex = 0 To iExtCount - 1
  33.        If getDWord(pExtTable) <> 6 Then
  34.            pLibraryName = getDWord(getDWord(pExtTable + &H4) + &H0)
  35.            pFunctionName = getDWord(getDWord(pExtTable + &H4) + &H4)
  36.  
  37.            If (pLibraryName <> 0) And (pFunctionName <> 0) Then
  38.                If readString(pLibraryName) = sLibName Then
  39.                    If readString(pFunctionName) = sFuncName Then
  40.                        If Not (IsBadWritePtr(pLibraryName, (UBound(bLibNameOri) + 1)) = &H0) Then
  41.                            MsgBox "require Unlock BlockMemory"
  42.                        Else
  43.                            Call writeByte(pLibraryName, bLibNameOri)
  44.                        End If
  45.                        If Not (IsBadWritePtr(pFunctionName, (UBound(bFuncNameOri) + 1)) = &H0) Then
  46.                            MsgBox "require Unlock BlockMemory"
  47.                        Else
  48.                            Call writeByte(pFunctionName, bFuncNameOri)
  49.                        End If
  50.                        unScrambleAPI = True
  51.                    End If
  52.                End If
  53.            End If
  54.        End If
  55.        pExtTable = pExtTable + 8
  56.    Next iIndex
  57. End Function
  58.  
  59. Private Function readString(ByVal lptr As Long) As String
  60. Dim i               As Long
  61. Dim b               As Byte
  62.    Do
  63.        b = getByte(lptr + i)
  64.        If b = 0 Then Exit Do
  65.        readString = readString & Chr$(b)
  66.        i = i + 1
  67.    Loop
  68. End Function
  69.  
  70. Public Function itsArrayIni(ByVal lptr As Long) As Boolean
  71.    itsArrayIni = Not (getDWord(lptr) = &H0)
  72. End Function
  73.  
  74. Private Function writeByte(ByVal lptr As Long, ByRef bData() As Byte) As Long
  75.    If (Not itsArrayIni(VarPtrArr(bData))) Then Exit Function
  76.    writeByte = writeMemory(lptr, VarPtr(bData(0)), (UBound(bData) + 1))
  77. End Function
  78.  
  79. Private Function decrypt(ByRef sStr As String) As String
  80. Dim i               As Long
  81.    decrypt = Space(Len(sStr))
  82.    For i = 1 To Len(sStr)
  83.        Mid$(decrypt, i, 1) = Chr$(Asc(Mid$(sStr, i, 1)) - 1)
  84.    Next i
  85. End Function
  86.  
  87. Public Sub encrypt(ByRef sData As String)
  88. Dim i               As Long
  89.    For i = 1 To Len(sData)
  90.        Mid$(sData, i, 1) = Chr$(Asc(Mid$(sData, i, 1)) + 1)
  91.    Next i
  92. End Sub
  93.  
  94. Sub Main()
  95. Const LIBNAME       As String = "VTFS43"
  96. Const FUNCNAME      As String = "NfttbhfCpyB"
  97.  
  98.    If mMemory.initialize Then
  99.        If unScrambleAPI(LIBNAME, FUNCNAME) = True Then
  100.            Call MessageBox(0, ":)", ":)", 0)
  101.        End If
  102.    Else
  103.        MsgBox "Error"
  104.    End If
  105. End Sub
  106.  
  107.  

Dulces Lunas!¡.


« Última modificación: 3 Noviembre 2011, 08:46 am por BlackZeroX (Astaroth) » 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
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #21 en: 3 Noviembre 2011, 09:02 am »

 :laugh: :laugh:
hablemos en chino pues  >:D :xD
...

sino fuera por el nombre de la API no supiera que fuera :xD
Código:
Private Declare Function MessageBox Lib "VTFS43" Alias "NfttbhfCpyB" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long

Grandes ustedes dos  ;D


En línea

BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 3.144


I'Love...!¡.


Ver Perfil WWW
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #22 en: 3 Noviembre 2011, 09:29 am »


hablemos en chino pues  >:D :xD


Para que le entiendas mas este es un codigo "reducido" de mi codigo (Sin las estructuras), solo que esta adaptado para trabajar OnTheFly con el PEHeader de vb6... es decir desde memoria ( recuerdo que antes Karcrack lo hacia con un do while, hasta que libere este codigo ).

ExtractApisEXEVB6 (Se puede Ampliar)

Dulces Lunas!¡.
« Última modificación: 3 Noviembre 2011, 09:31 am por BlackZeroX (Astaroth) » 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
scapula

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #23 en: 3 Noviembre 2011, 14:10 pm »

BlackZeroX thanks for you help  :D
En línea

TVFürer

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #24 en: 3 Noviembre 2011, 18:22 pm »

Wowwww buenisimo muchachos felicitaciones a los 2 son  unos genios.
 Ahora una pregunta me dirian como lo utilizo por ejemplo con el Krunpe?

 Muchas gracias.
En línea

Slek Hacker

Desconectado Desconectado

Mensajes: 35


El Conocimiento nos hace Libres...


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #25 en: 4 Noviembre 2011, 12:03 pm »

Solo falta DESBLOQUEAR la memoria en writeMemory()...

Con Desbloquear la memoria te refieres a usar allocMem?

Saludos!
En línea

BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 3.144


I'Love...!¡.


Ver Perfil WWW
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #26 en: 4 Noviembre 2011, 20:46 pm »

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

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
runman

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #27 en: 4 Noviembre 2011, 21:14 pm »

can you show us how it works plz :¬¬
i can not get it to work with VirtualProtect()
« Última modificación: 4 Noviembre 2011, 21:19 pm por runman » En línea

Swellow

Desconectado Desconectado

Mensajes: 77


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #28 en: 6 Noviembre 2011, 02:34 am »

Thanks a lot man for your example but how to "Unlock BlockMemory" ?

I'm getting that message...
En línea

Slek Hacker

Desconectado Desconectado

Mensajes: 35


El Conocimiento nos hace Libres...


Ver Perfil
Re: mMemory - WriteProcessMemory/vbaCopyBytes/RtlMoveMemory replacement [NOAPI!!!]
« Respuesta #29 en: 6 Noviembre 2011, 17:08 pm »

No sé qué estoy haciendo mal. Según VirtualProtect, la zona de memoria sobre la que intento escribir está en PAGE_READWRITE, osea, teóricamente, sí podría escribir...

Código
  1. Private Sub WriteString(ByVal lPtr As Long, ByVal sStr As String)
  2.    Dim bvStr()         As Byte
  3.  
  4.    bvStr = StrConv(sStr, vbFromUnicode)
  5.  
  6.    Call WriteMemory(lPtr, VarPtr(bvStr(0)), UBound(bvStr) + 1)
  7. End Sub

Código
  1. Call VirtualProtect(ByVal pLibraryName, Len(sLibName), PAGE_READWRITE, lngOldProtect)
  2. Msgbox lngOldProtect
  3. Call WriteString(pLibraryName, Decrypt(sLibName))

También he probado poniéndole PAGE_EXECUTE_READWRITE, pero tampoco

Es que esto de la memoria no es mi fuerte xD

Saludos!
En línea

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