Página 1 de 2

¿Como indetectar estas líneas? VB

Publicado: 22 Feb 2010, 01:28
por lord.of.da.flies
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)

Re: ¿Como indetectar estas líneas? VB

Publicado: 22 Feb 2010, 08:24
por coupe
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.

Re: ¿Como indetectar estas líneas? VB

Publicado: 22 Feb 2010, 11:47
por lord.of.da.flies
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)

Re: ¿Como indetectar estas líneas? VB

Publicado: 22 Feb 2010, 13:02
por KainRazor
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!

Re: ¿Como indetectar estas líneas? VB

Publicado: 23 Feb 2010, 00:37
por lord.of.da.flies
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.

Re: ¿Como indetectar estas líneas? VB

Publicado: 23 Feb 2010, 04:58
por KainRazor
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!

Re: ¿Como indetectar estas líneas? VB

Publicado: 23 Feb 2010, 16:48
por lord.of.da.flies
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??

Re: ¿Como indetectar estas líneas? VB

Publicado: 25 Feb 2010, 23:27
por KainRazor
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

Re: ¿Como indetectar estas líneas? VB

Publicado: 26 Feb 2010, 11:08
por Slek
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!!

Re: ¿Como indetectar estas líneas? VB

Publicado: 26 Feb 2010, 18:39
por KainRazor
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

Re: ¿Como indetectar estas líneas? VB

Publicado: 26 Feb 2010, 21:33
por lord.of.da.flies
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

Re: ¿Como indetectar estas líneas? VB

Publicado: 26 Feb 2010, 22:23
por Slek
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!

Re: ¿Como indetectar estas líneas? VB

Publicado: 03 Mar 2010, 04:35
por Gigabyte
Tambien se podria utilizar Source o API Undetector no?
mas facil

Re: ¿Como indetectar estas líneas? VB

Publicado: 05 Mar 2010, 17:37
por lord.of.da.flies
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?

Re: ¿Como indetectar estas líneas? VB

Publicado: 05 Mar 2010, 22:44
por Slek
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!