¿Cómo optimiza y combina el software antivirus más de 100.000 patrones / firmas más sin consumir demasiados recursos?

Bueno, imagine que tiene las firmas almacenadas en una estructura binaria en forma de árbol. Es decir, imagine que cada firma se almacena en un tipo de datos que tiene un par de punteros para subárboles (otras firmas). En términos de memoria para almacenar la firma “base de datos”, esto es muy sencillo y aprovecha las estrategias de carga de fragmentos de archivos implementadas por el sistema operativo.
Entonces, cuando el software antivirus está escaneando, lee algunos datos y los usa para navegar (búsqueda binaria) en el árbol y determinar si hay una coincidencia. Creo que eso da un costo algorítmico de O (n) = log (n) en el caso promedio y O (n) = n en el peor.
Si el árbol está diseñado, ordenado y equilibrado para aprovechar lo que el antivirus espera encontrar (por ejemplo, virus comunes en la “parte superior”), el algoritmo se vuelve aún más rápido.
Ver http://en.wikipedia.org/wiki/Bin…

Espero que pueda ayudarlo hasta que aparezca un ingeniero de software antivirus real.

Una técnica bastante simple es organizar todas las firmas en cubos basados ​​en algunas características comunes. Luego, elige el conjunto correcto de firmas para que coincida.
Las firmas se pueden organizar en cubos en función de algunas características únicas que también comparten con el patrón sospechoso con el que se supone que coinciden. Entonces, identifica algunos rasgos en el patrón y luego elige los mejores cubos que podrían tener una posible coincidencia. Los rasgos pueden ser tan simples como el tipo de archivo, el nombre del archivo, un patrón de bytes en el encabezado del archivo, el vector de entrega, etc.

More Interesting

Si me uno a una compañía que usa C ++ en su desarrollo justo después de graduarse, ¿será difícil unirme a una compañía diferente después de unos años?

¿Por qué los sitios web comenzaron a usar el nuevo reCAPTCHA incluso para las páginas de inicio y los clics por primera vez este año?

¿Qué deben saber todos los ingenieros de software acerca de los compiladores?

Como estadounidense que trabaja en la industria del software, ¿cuál es su opinión honesta sobre los técnicos indios?

Arquitectura de software: ¿Qué datos deben y no deben almacenarse en caché?

¿Cuáles son los pros y los contras de la integración y el despliegue continuo alojados proporcionados a través de un modelo SaaS?

¿Cómo puedo desarrollar mi carrera en pruebas de software y cuál es su alcance? ¿Cuáles son los mejores institutos de capacitación para las pruebas de aprendizaje?

¿Cómo es pasar a la gestión corporativa después de una carrera en ingeniería de software?

¿Cuál es el libro que cubre la mejor ingeniería de software?

¿Conoces alguna herramienta que use un rastreador que simule el comportamiento del usuario para probar aplicaciones?

¿Qué esperarías de un documento de mejores prácticas al desarrollar widgets de formulario de Symfony 1.4?

¿Cuáles son algunos programas heredados (pre 32 bits) que no tienen equivalentes modernos?

¿Cuál es la mejor manera de configurar un entorno de desarrollo profesional para pruebas y desarrollo con equipos remotos que usan Github y tal vez Vagrant o Docker?

¿Cuáles son los atributos de calidad de un buen software?

¿Los mejores ingenieros evitan trabajar en grandes empresas como Google y Facebook?