Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Shackles en 21 Junio 2012, 21:55 pm



Título: Problema con MoveMem - Reemplazando RtlMoveMemory.
Publicado por: Shackles 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.


Título: Re: Problema con MoveMem - Reemplazando RtlMoveMemory.
Publicado por: BlackZeroX 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!¡.


Título: Re: Problema con MoveMem - Reemplazando RtlMoveMemory.
Publicado por: Shackles 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.  


Título: Re: Problema con MoveMem - Reemplazando RtlMoveMemory.
Publicado por: BlackZeroX 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 (http://infrangelux.hostei.com/index.php?option=com_content&view=article&id=40:mmemoryex&catid=2:catprocmanager&Itemid=3)

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.  


Título: Re: Problema con MoveMem - Reemplazando RtlMoveMemory.
Publicado por: Shackles en 23 Junio 2012, 17:19 pm
Lo voy a probar, saludos.