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)
| | | | |-+  Problema con MoveMem - Reemplazando RtlMoveMemory.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con MoveMem - Reemplazando RtlMoveMemory.  (Leído 2,675 veces)
Shackles

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Problema con MoveMem - Reemplazando RtlMoveMemory.
« en: 21 Junio 2012, 21:55 pm »

Buenas tardes.
Me he encontrado con un problema a la hora he reemplazar el rtlmovememory en una cierta funccion. En otras si me funciona correctamente, creo que es porque trato de mover 8bytes. (El resto fueron 4)

Código:
Private Sub RTL(ByVal dest As Long, ByVal src As Long, ByVal lLen As Long)
Dim i As Long
For i = CLng("0") To lLen - CLng("1")
    bvHack(dest + i - lHackDelta) = bvHack(src + i - lHackDelta)
Next i
End Sub
Las declaraciones de bvHack y tal estan declaradas. Solo que no hace falta pegar mas codigo.

Este es el que trato reemplazar.

Código:
RtlMoveMemory c(i), b(i * 8), 8
Lo pongo asi.
Código:
RTL varptr(c(i)), varptr(b(i * 8)), 8
y nada, tambien he probado asi:
Código:
RTL c(i), b(i * 8), 8


Saludos y gracias de antemano.


En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Problema con MoveMem - Reemplazando RtlMoveMemory.
« Respuesta #1 en: 22 Junio 2012, 12:57 pm »

Pon el código tal cual los tipos de c y de b pueden afectar en tu resultado, ya que cada tipo ocupa una longitud dada de bytes.

Dulces Lunas!¡.


En línea

The Dark Shadow is my passion.
Shackles

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Problema con MoveMem - Reemplazando RtlMoveMemory.
« Respuesta #2 en: 22 Junio 2012, 12:58 pm »

Esta es la funcion, de iCodeinVB6

Código
  1. Public Declare Sub RtlMoveMemory Lib "kernel32" (dest As Any, src As Any, ByVal lLen As Long)
  2.  
  3. Public Function ShellcodeToCurrency(ByVal sShellCode As String) As Currency()
  4. Dim c()  As Currency
  5. Dim b()  As Byte
  6. Dim lLen As Long
  7. Dim i    As Long
  8.  
  9. ReDim b(0 To (Len(sShellCode) / 2) - 1) ' Modifica el tamaño del byte arrar
  10.  
  11. For i = 0 To Len(sShellCode) - 1 Step 2 ' Loop por el Shellcode
  12.    b(i / 2) = CByte("&H" & Mid$(sShellCode, i + 1, 2)) ' Convierte shellcode a bytes
  13. Next i
  14.  
  15. lLen = UBound(b) + 1
  16.  
  17. If lLen Mod 8 = 0 Then GoTo Jump ' Si el shellcode es un multiplo de 8 salta este paso
  18.  
  19. Do
  20.    If lLen Mod 8 = 0 Then Exit Do
  21.    lLen = lLen + 1 ' Detrmina longitud del byte array que es un multiplo de 8
  22. Loop
  23.  
  24. ReDim Preserve b(0 To lLen - 1) ' Modifica el tamaño del byte array a una nueva longitud
  25.  
  26. Jump:
  27.  
  28. ReDim c(0 To ((UBound(b) + 1) / 8) - 1) ' Modifica el tamaño del Array.
  29.  
  30. For i = 0 To UBound(c)
  31.    RtlMoveMemory c(i), b(i * 8), 8 'Copia 8 bytes de byte arrar a nueva valor currency
  32. Next i
  33.  
  34. ShellcodeToCurrency = c ' Devuelve un array de Currency
  35. End Function
  36.  
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Problema con MoveMem - Reemplazando RtlMoveMemory.
« Respuesta #3 en: 22 Junio 2012, 20:50 pm »


Puedes usar mi alternativa que usa el mismo método de "Ignorar limites de un array".

Alternativa a CopyMemory

solo una modificacion:

Código
  1.  
  2. Public Function copyMemory(ByVal lpDst As Long, ByVal lpSrc As Long, ByVal lLn As Long) As Long
  3. '   //  By BlackZeroX.
  4. Dim i       As Long
  5.  
  6.    If not bInitialized Then exit function
  7.  
  8.    If (lpSrc = &H0) Or (lpDst = &H0) Or (lLn = &H0) Then Exit Function
  9.  
  10.    i = (lLn Mod 4)
  11.    If ((i And &H2) = &H2) Then
  12.        Call putWord(lpDst, getWord(lpSrc))
  13.        lpDst = (lpDst + 2)
  14.        lpSrc = (lpSrc + 2)
  15.        copyMemory = (copyMemory + 2)
  16.        lLn = (lLn - 2)
  17.    End If
  18.    If ((i And &H1) = &H1) Then
  19.        Call putByte(lpDst, getByte(lpSrc))
  20.        lpDst = (lpDst + 1)
  21.        lpSrc = (lpSrc + 1)
  22.        copyMemory = (copyMemory + 1)
  23.        lLn = (lLn - 1)
  24.    End If
  25.    For i = 0 To (lLn - 1) Step 4
  26.        Call putDWord(lpDst + i, getDWord(lpSrc + i))
  27.    Next
  28.  
  29.    copyMemory = (copyMemory + lLn)
  30.  
  31. End Function
  32.  
  33.  
En línea

The Dark Shadow is my passion.
Shackles

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Problema con MoveMem - Reemplazando RtlMoveMemory.
« Respuesta #4 en: 23 Junio 2012, 17:19 pm »

Lo voy a probar, saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
CallAPIByName usando solamente rtlMoveMemory
Programación Visual Basic
cobein 9 6,623 Último mensaje 9 Noviembre 2011, 08:52 am
por scapula
Hacer setfocus reemplazando TAB
Programación Visual Basic
WHK 3 5,572 Último mensaje 17 Octubre 2009, 16:06 pm
por cassiani
ayuda reemplazando archivos protegidos de XP
Seguridad
octanus 1 3,037 Último mensaje 19 Mayo 2010, 08:18 am
por Arcano.
[VB6+ASM] Alternativa CopyMemory/RtlMoveMemory/CopyBytes
Programación Visual Basic
Karcrack 6 5,335 Último mensaje 30 Julio 2010, 10:05 am
por Psyke1
[HELP] Using MoveMem and Removing Types
Programación Visual Basic
Swellow 7 3,365 Último mensaje 20 Mayo 2012, 05:13 am
por Swellow
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines