Pensé en una pregunta C y espero que los expertos puedan responderla por mí.
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.
--