Uso estándar de la biblioteca de C ++ en malware

1

Recientemente estuve analizando las fuentes de ZeuS, ZeroAccess, Carberp y otros programas maliciosos profesionales y había una cosa que me pareció extraña:

Los autores no usaron la biblioteca estándar std:: -functions con mucha frecuencia cuando podían hacerlo. Me refiero a cosas como std::fstream / std::string / std::cout (para depuración).

Mi pregunta es ¿por qué? Se podrían realizar muchas tareas más fácilmente si usaran estas funciones. No creo que la eficiencia fuera su preocupación, ya que el aumento de la velocidad no valdría la pena.

Ejemplo de fuente aquí

    
pregunta PePePlusPlus 04.06.2017 - 15:00
fuente

2 respuestas

2

Al escribir un malware, debe hacer la menor cantidad posible de suposiciones en las bibliotecas existentes en la máquina objetivo (víctima). Como las fuentes que muestra en el comentario son para Windows, todo lo que puede asumir con seguridad es que las funciones para las llamadas WINAPI estarán disponibles, porque cualquier dependencia adicional de los bits redistribuibles para cualquier sistema C o C ++ puede estar presente o no: muchas máquinas de Windows tienen no hay herramientas de desarrollo instaladas, y solo tienen las bibliotecas (DLL) requeridas por otro software.

Eso significa que para poder usar funciones de la biblioteca C ++ (o incluso C), el desarrollador debe vincular estáticamente la biblioteca estándar utilizada, lo que resulta en una aplicación pesada, cuando un malware debe ser pequeño para no programar luz. debido a su tamaño.

Esa es una posible razón por la que los desarrolladores de Zeus hacen un uso intensivo de las llamadas WINAPI y evitan las llamadas a la biblioteca estándar de C, sin hablar de C ++, que agregaría una nueva capa y algo de sobrecarga de tamaño.

    
respondido por el Serge Ballesta 20.09.2017 - 16:53
fuente
-1

Se debe a la necesidad de ejecutar el proceso en silencio. ¿Qué sucede cuando intentas ejecutar un ejecutable con dll faltante? Se activará un mensaje de error o un escudo de instalación. El programador no quiere esto porque el objetivo principal es ejecutar en la mayor cantidad de máquinas posible. Al utilizar la biblioteca "std", el codificador evita algunos problemas de dependencia y se asegurará de que el software se ejecute en todas las máquinas.

    
respondido por el frank 20.09.2017 - 15:17
fuente

Lea otras preguntas en las etiquetas