Recomendaciones para evadir heuristica

Iniciado por Vaagish, 12 Abril 2013, 07:27 AM

0 Miembros y 4 Visitantes están viendo este tema.

mr.blood

#10
Creo que te interesara.

Aunque para comprenderlo tendras que conocer el formato PE, porque tendras que hacer tu propio GetProcAddress. Esto se hace leyendo de las DLL la sección de exportacion ;).

Sa1uDoS

Vaagish

#11
Huu buenisimo!! Gracias amigos! Tengo para seguir aprendiendo jejeje

Una consulta.. el codigo de Karc que puso el enlace mr.blood, ese code lo que hace es "cifrar" y "descifrar" la cadena, por ejemplo "MessageBoxA", no??
(Podria ser cualquier otra cadena, no?) O tiene algo que ver con los ordinales de las apis? porque intente con el programita que hizo karc tambien, el HashGenerator, pero no me reconoce los hash el asm.. o por ende,, no lo estaba implementando bien.. :/

Gracias a todos!!




EDITADO: Me faltaba esto ayer, me habia olvidado..

CitarSi que puedes hacer LoadLibraryA("kernel32")

Bien, entiendo que se debe poder.. el problema es que al hacer esto:

invoke loadlibrary, "Kernel32" -> Me dice que no se reconoce loadlibrary, porque loadlibrary esta dentro de Kernel32, con lo que para que la reconozca tendria que declarar Kernel32 al inicio del code :/

Karcrack

Cita de: Vaagish en 16 Abril 2013, 19:22 PM
invoke loadlibrary, "Kernel32" -> Me dice que no se reconoce loadlibrary, porque loadlibrary esta dentro de Kernel32, con lo que para que la reconozca tendria que declarar Kernel32 al inicio del code :/
El nombre de la función es LoadLibraryA() o LoadLibraryW() la primera es ANSI y la segunda UNICODE. El ensamblador no sabe a dónde apuntar si le dices loadlibrary. El nombre de las funciones es sensible a mayúsculas y minúsculas.


El enlace que comparte mDrinky es una muestra de cómo obtener el puntero a la función sin usar GetProcAddress(); recorriendo manualmente la EAT de la librería. Eso sí, el código está algo limitado y no considera funciones con ordinales o forwarding.


Una función hash es aquella que obtiene un identificador único de tamaño fijo de ciertos datos. En el link de mDrinky un tamaño de 4 bytes aunque las colisiones son altas.

Vaagish

Hola Karc!

Gracias por tu tiempo y paciencia.. Pero sigo sin entender,, como puedo llamar a LoadLibraryA, si el ensamblador me pide que incluya a kernel32 para poder hacer un invoke a getmodulehandle, a loadlibrary, o a getprocaddress,, no se si se entiende..

O sea,, cualquier funcion que quiera utilizar para poder cargar a kernel32, esta dentro de kernel32...

Me hace acordar a la pregunta: ¿Que fue primero, el huevo o la gallina?

mr.blood

Por eso en tu exe importas la libreria kernel32 y las funciones necesarias. Lee sobre el formato PE.

Sa1uDoS

Vaagish

CitarPor eso en tu exe importas la libreria kernel32 y las funciones necesarias. Lee sobre el formato PE.

O sea que no safamos de importar a kernel32 de forma estatica, al menos una vez, al inicio del programa,, no?

Ahora leo sobre los PE,, Tnks!!

Flamer

pienso que tienes que compilar tu exe y con un editor PE revisar el IAT para saber la direccion de kernel32 y poderla invocar desde hay

saludos flamer y una cosa nose casi de este tema asi que puede que este equibocado