Red de conocimiento informático - Espacio del host - Pensé en una pregunta C y espero que los expertos puedan responderla por mí.

Pensé en una pregunta C y espero que los expertos puedan responderla por mí.

Al escribir programas, la depuración es muy importante. La depuración de virus es en realidad la depuración de programas. La única diferencia es que al depurar programas normales, puede ejecutar el programa a voluntad, pero la depuración de virus es imposible si crea una versión de lanzamiento, creo que no.

Atrévete a ejecutarlo en tu propia máquina.

1. Depurar paso a paso. Nunca empieces a escribir un módulo nuevo cuando todavía tenga errores. Un virus completo puede causar estragos en su máquina y es una buena idea depurar cuidadosamente sus miembros antes de que el virus cobre vida. Un buen momento para la optimización local. Digamos que escribe un módulo de infección, luego primero

simplemente depúrelo hasta que pueda combinar exitosamente su pseudovirus actual (en parte código de virus y en parte código auxiliar para depurar) con el host. Luego, abandonala por el momento y concéntrate en escribir otras partes hasta que finalmente se combine con el virus completo

y luego se sintetice y se depure. No se apresure a idear una nueva idea sólo porque le entusiasma;

Si escribe el virus completo de una sola vez, la depuración será complicada.

2. Las herramientas de depuración actuales son bastante sofisticadas, pero a veces la antigua técnica de imprimir información como "printf" sigue siendo muy útil. En Windows, este "printf" es OutputDebugString (hay TRACE en M

FC, pero es esencialmente lo mismo), que se puede usar para enumerar información en la ventana de salida de la herramienta de depuración y < / p>

Le indica dónde se está ejecutando actualmente el virus.

Indicar la ubicación de ejecución actual del virus. Es posible que las personas que están acostumbradas a utilizar las potentes funciones de depuración de Delphi y VC no comprendan el encanto de esta antigua tecnología, por lo que si no puede depurar errores, también puede intentarlo.

Tenga en cuenta que OutputDebugString envía cadenas al depurador, por lo que necesitará tener un "depurador" que monitoree su virus

para interceptar estas cadenas; por supuesto, puede usar Delphi o VC para adjuntar a su proceso de virus, pero una mejor opción es utilizar un "depurador" que no sea depurador.

Tal vez

R, después de instalar SoftIce, cuando necesite ver la información de salida, presione Ctrl D para abrir SI y verlo en su ventana de salida.

B, descargue y ejecute DbgView, capturará toda la información de depuración. Esta es la mejor manera.

3. Documentos falsos. Durante la etapa de depuración, es obvio que no se puede permitir que el virus encuentre aleatoriamente archivos en la máquina para infectar

y sus acciones deben restringirse. Agregue algunas líneas de código al módulo de infección para permitirle determinar nombres de archivos e infectar solo archivos específicos,

por ejemplo, solo archivos que comiencen con damn. Debemos considerar cuidadosamente la elección de archivos virtuales. Si solo usa un archivo para realizar pruebas, felicidades, su virus fallará con frecuencia en la vida real. Los archivos PE generados por los compiladores Borla

nd y Microshit son completamente diferentes (incluso el compilador Borland, Delphi y BCB

tienen diferencias. El .exe generado por BCB tiene una tabla de exportación , muy especial, y el generado por Delphi no), si no notas la diferencia, tu virus se volverá vulnerable. Necesita encontrar varios tipos de archivos para realizar pruebas. Los programas Del

phi, los programas BCB, los programas VC, los programas TASM, los programas SFX, etc. deben ser todos los objetos de su prueba. Además,

pruebe los programas que su virus no puede infectar pero que sí puede detectar, como los programas de DOS.

Uno de mis virus anteriores (Win32.Loi

cer) estaba lleno de vulnerabilidades porque solo probé virus PE efectivos

4. No dudes de ti mismo. Cuando estás convencido de que tu código es correcto después de probar algunas líneas de código durante unos días, pero aún obtienes errores

, es posible que tengas que dudar del sistema operativo en sí. Algunos expertos extranjeros en ensamblaje (no expertos en virus) no pueden ayudar.

Sólo pueden maldecir a la gente de MShit como a cerdos, porque Windows puede traer errores inesperados a su programa. Podrías probar

algunas API que necesitan manejar cadenas, establecer DF en 1 (usando la directiva std) antes de llamarlas, luego llamar y ver...

.......... ..........

4. Para no ser acosado por M$, tenga mucho cuidado al codificación y asegúrese de llamar Durante la API, Flag es básicamente reconocido por M$, como DF y CF se borran a 0, principalmente DF.

5. Acerca de la depuración de código. Para limitar el comportamiento del virus durante la depuración, es posible que necesitemos agregar algún código de depuración, como código para determinar los nombres de los archivos. Estos códigos no aparecerán en la versión de lanzamiento y solo serán útiles durante la depuración. /p>

elimine este código en la versión de lanzamiento. Hay dos formas de hacer esto, una es incluir

estos códigos en un ensamblaje condicional (compilación condicional), como

if debug

mov eax, [esi]

cmp eax, 'nmad'

jnz notinfect

endif

En las versiones de lanzamiento, simplemente declarar debug como debug = 0.

El segundo método consiste en eliminar completamente el código en la versión de lanzamiento, que es el método más completo y menos propenso a errores. Personalmente prefiero

ambos métodos, pero para estar seguro suelo utilizar ambos métodos. Para que el código de depuración sea más fácil de identificar, necesitamos algún estilo de código. En ensamblador y C, generalmente aplicamos sangría al código, por lo que para identificar el código de depuración, puede escribir todo el código de depuración

en lo alto para que se destaque y sea fácil de identificar. Mantener un buen estilo de codificación en todas las circunstancias

es un hábito que vale la pena cultivar.

6. Lea atentamente el código. Sólo porque haya probado 1000 escenarios y su virus funcione bien, eso no significa

que tendrá tanta suerte en el escenario 1001. Es muy difícil estar realmente libre de errores, pero podemos trabajar para minimizarlos

Su virus podría sobrevivir perfectamente en un entorno "normal", pero ¿qué pasa en situaciones extremas? Por ejemplo, ¿qué sucede si estás infectado con un archivo PE de tamaño 3G? Tal vez no quieras o no puedas dedicar demasiado tiempo a escribir y depurar virus

y, por lo tanto, no puedas hacer experimentos extremos, pero si aun así no quieres perder la oportunidad de encontrar una vulnerabilidad en su virus bien probado, luego lea atentamente cuál es su código de virus. Es una buena idea. Lo creas o no, los humanos tenemos un pensamiento estereotipado.

Los virus son algo serio, pongamos un ejemplo que todos podemos haber experimentado. Cuando estaba en la escuela, ¿no tenía que hacer exámenes con frecuencia? Yo

a menudo, después de terminar la respuesta, la reviso nuevamente y no encuentro errores y siento que todo está correcto. Luego me siento inquieto y quiero dormir, pero

yo también. perdón por el examen, por mí y por los demás. ........................:-), quería comprobarlo de nuevo, pero luego sentí que Tenía razón. No pude comprobarlo, así que estaba tan confundido que cuando sonó el timbre, al final no obtuve la máxima puntuación.

Lo único que quiero señalar es que cuando miras tu propio código, si aún miras el código fuente, entonces puedes sentir

Es bueno, crees que es Está bien, y hay comentarios para ayudar. No se puede detectar nada. Así que cambiemos el método

Utilice IDA para desensamblar su virus y luego veamos el resultado del desensamblaje como un virus escrito por otros. Debería ser más fácil

luego verifique. el código fuente del área problemática para determinar si se trata de un error. Por supuesto, este método

es efectivo para virus ensambladores, pero para virus en otros lenguajes, es mejor mirar el código fuente.

Ahora que hemos terminado con los conocimientos básicos, echemos un vistazo más de cerca a la depuración de virus

1.

A veces puede resultar útil y divertido acosar otros procesos mientras se ejecuta un virus, y aquí es donde entra en juego la depuración entre procesos.

Por depuración entre procesos no me refiero a depurar realmente el proceso del host, ya que seguiría siendo engorroso e innecesario

. Lo que queremos saber normalmente es qué tan saludable está el virus, entre otros procesos, y si está de buen humor.

En este caso, nada funciona mejor que OutputDebugString. Coloque algunas instrucciones en el código insertado y llame a

Use OutputDebugString para registrar los latidos del virus. Cuando vea toda la información que debería generarse, puede

decir La inserción. El proceso ha sido muy exitoso. La dirección de OutputDebugString se puede codificar.

int 3 también es un buen método, es muy eficiente y la cantidad de bytes necesarios para generar información no es tanto como OutputDebugString,

Solo un byte es suficiente. Es una buena idea agregar algunos int 3 a su código de inserción y asegurarse de que i3here en SoftIce esté activado

2. Depuración de máquina a máquina

Una tendencia importante en el desarrollo de virus es desde la infección de una sola máquina a la infección entre máquinas, y los canales de transmisión de máquina a máquina pueden

Incluyendo LAN, Internet, dispositivos inalámbricos, etc. Al escribir este tipo de virus, asegúrese de depurarlo cuidadosamente. Un virus que se ejecuta bien localmente puede fallar al buscar en la LAN.

3. Depuración del código 0-ring. Me gustan los virus Win32 que pueden sobrevivir en la mayoría de las máquinas, así que hablo principalmente de Ring 3.

Pero a algunas personas les puede gustar ser un poco más técnicos y querer jugar con los virus Ring 0. sobre el Anillo 0 a continuación.

.

Si desea depurar un virus ring-0, prepárese para el sacrificio si lo depura en su propia máquina, porque muchas pantallas azules lo arruinarán.

--