Tengo este código en una de las clases de mi crypter, especificamente la rutina de encriptación/desencriptación del stub. Es lo único detectado por avira, ¿habrá alguna manera de sacarlo en el source? gracias

Código: Seleccionar todo

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Any, ByVal Source As Any, ByVal Length As Long)
Private Declare Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Hola amigo, definitivamente esa lib es dificil de indetectar, yo te recomiendo en vez de usar rtlmovememory uses esta otra CopyBytes, te dara mejor resultado. y brincaras esa firma molesta que se te esta dando dolor de cabeza.

Hasta luego.
Muchas gracias por tu respuesta.

Había intentado eso, pero no logré hacerlo funcionar, ¿Reemplazo los dos con dos Copybytes? ¿o solo pongo uno? ¿Tengo que cambiar más código?

Código: Seleccionar todo

Private Declare Sub CopyBytes Lib "MSVBVM60.DLL" Alias "__vbaCopyBytes" (ByVal Size As Long, Dest As Any, Source As Any)
lord.of.da.flies escribió:Muchas gracias por tu respuesta.

Había intentado eso, pero no logré hacerlo funcionar, ¿Reemplazo los dos con dos Copybytes? ¿o solo pongo uno? ¿Tengo que cambiar más código?

Código:
Private Declare Sub CopyBytes Lib "MSVBVM60.DLL" Alias "__vbaCopyBytes" (ByVal Size As Long, Dest As Any, Source As Any)
Como estás declarando una Sub y no una API, tenés que especificar que esa sub va a tener privilegios de API, y además, necesitás especificar de donde sale ese vbaCopyBytes. Por lo que la declaración correcta sería:
Public Sub vbaCopyBytes(ByVal Length As Long, ByVal dest As Long, ByVal Src As Long)
DeclareAPI AddressOf ModuleTal.vbaCopyBytes, "__vbaCopyBytes", "msvbvm60.dll"
vbaCopyBytes Length, dest, Src
End Sub
Edit: Me olvidé, después tenés que "acomodar" los valores de RtlMoveMemory por el orden que trae vbaCopyBytes (Length, dest, Src)

Un Saludo!
Imagen
Muchas gracias por tu respuesta, he estado probando ahora con esto y parece que funcionará. Otra duda, en el archivo original hay dos declaraciones, una con copymemory y otra con copymem, ¿las dos las reemplazo con una de vbcopybytes? ¿Cual es la diferencia entre las dos?

Creo que es por eso que no me funciona, pues reemplazo solo copymemory con vbcopybytes y me rompe el server cuando encripto.
Cambiaste cada linea por esto?:
RtlMoveMemory ByVal lPtr, &H59595958, &H4: lPtr = lPtr + 4
vbaCopyBytes ByVal &H4: lPtr = lPtr + 4, lPtr, &H59595958
Creo que había que modificar el orden Dest Src y Lenght por Lenght Dest y Src (Además de la función)

Saludo!
Imagen
Me refiero a las dos declaraciones:

Código: Seleccionar todo

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Any, ByVal Source As Any, ByVal Length As Long)
Private Declare Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Mi duda es si tengo que borrar las dos y cambiarlas por la que me pasaste, o solo quitar una y la otra cambiarla con otra cosa.... no sé.

Gracias.

P.D: ¿Como declaro ModuleTal??
Creo que ambas son iguales, fijate que las variables son las mismas, el llamado es el mismo...

ModuleTal = Nombre del Módulo RunPE donde hiciste la Declaración

Un saludo y disculpas por no estar conectado XD
Imagen
Error!

Código: Seleccionar todo

Private Declare Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

RtlMoveMemory ByVal lPtr, &H59595958, &H4: lPtr = lPtr + 4
Cambialo por esto:

Código: Seleccionar todo

Private Declare Sub CopyBytes Lib "MSVBVM60.DLL" Alias "__vbaCopyBytes" (ByVal Size As Long, Dest As Any, Source As Any)

CopyBytes &H4, Byval lPtr, &H59595958: lPtr + 4
Saludos!!
github.com/Slek-Z
La declaración que dije es más indetectable =P

Y lo de CopyBytes tenés razón Slek! Se necesita especificar en CopyBytes primero el bloque de bytes en memoria a mover (Que es la constante &H4 declarada en el módulo). Después el destino y el origen del movimiento

Como dije no se manejar bien las constantes =S

Un saludo
Imagen
Muchas gracias por todas sus respuestas, KainRazor y Slek. (estarán en los créditos :D )
Run-time error '9':

Subscript out of range
Igual seguiré probando variantes de los códigos que me han estado pasando. Si saben porque aparece este error agradecería muchisimo.

Creo que es problema propio del mismo crypter, no de los códigos, una disculpa y les seguiré informando
Ese problema no es del uso de la api.
Seguramente el error este en el split, revisalo.

Si fuese de copybytes, no saltaria error, simplemente no ejecutaria en memoria. En el peor de los casos saltaria el debugger de windows (VB6 detecto un problema y debe cerrarse...)

Saludos!
github.com/Slek-Z
Tambien se podria utilizar Source o API Undetector no?
mas facil
Imagen

Pitbull Security Labs Team
¿No estas Registrado Aun,Que esperas? Hazlo Ya!
Muchas gracias por las respuestas (:

Si tenía algo el split, pero igual el copybytes da el mismo error. Ejemplo:

ésta es la línea original:

Código: Seleccionar todo

CopyMemory VarPtr(bytOut(lCount)), VarPtr(bytTemp(0)), 32
Y la cambio por ésta:

Código: Seleccionar todo

CopyBytes 32, VarPtr(bytOut(lCount)), VarPtr(bytTemp(0))
Recuerden que lo que quiero indetectar es un módulo de encriptación rijndael.

¿Qué estoy haciendo mal?
Cydonia, es absurdo usar API Undetector o CallAPI, ya que esa misma función necesita RtlMoveMemory, o CopyBytes en su defecto.

@lord.of.da.flies

Pues sinceramente no se que puedes estar haciendo mal.
Te funciona con RtlMoveMemory?

Saludos!
github.com/Slek-Z
Responder

Volver a “VB/.NET”