Minotauro1:(TEXT_006.001):14/05/1994 << Back To Minotauro1


Vsafe, una alegría :) ------------------------------------------------------------------------------- Idea original de Cyborg Bueno, como todos ya sabrán, el Vsafe no es el programa más seguro del mundo... Hasta ahora con 3 lineas de código, lo desinstalabamos y listo... no había más problema... Para desinstalarlo, no hacía falta mas que tipear: MOV AX, 0FA01h MOV DX, 5945h INT 21h Con esto era suficiente para sacarlo de memoria...... pero si nos cruzabamos con alguien que tenga mas culo que nosotros, podía suceder el caso de que el Vsafe quedase 'abajo' de otro residente, con lo cual el Vsafe haría saltar un feo cartel que dice 'Vsafe no se puede remover ... bla bla bla'. Además, si el tipo este (de pedo obviamente) quisiera entrar al menú de Vsafe y encontrara que no hay mas Vsafe, podría empezar a sospechar algo... Para evitar esto lo que se puede hacer es, en vez de removerlo directamnete a lo bruto, podríamos anular las alarmas mientras infectamos y volver a setearlas cuando terminemos de infectar.. Para esto, estuve analizando algunos sub_servicios del Vsafe y descubrí cosas muy interesantes: MOV AX, 0FA__h ;__ es la subfucion correspondiente MOV DX, 5945h INT 21h Sub_función 00h ^^^^^^^^^^^^^^^ AL <== 00h ;Chequeo de residencia (supongo). Si el Vsafe está ;residente, en BX me devuelve 2F00h y si no lo está, ;lo deja intacto. Si está residente: 2F00h ==> BX Si no lo está: BX ==> BX Sub_función 01h ^^^^^^^^^^^^^^^ AL <== 01h ;Desinstalar el Vsafe... existe la posibilidad de que ;quede 'encerrado' y no pueda desinstalarse. Sub_función 02h ^^^^^^^^^^^^^^^ AL <== 02h ;Esta es la función salvadora... Cuando la ejecuto, BL <== Flags ;en BL necesito los nuevos flags del Vsafe... Flags ==> CL ;Obviamnete no me caliento demasiado en pensar cuál ;necesito apagar y apago todos... ;Una vez que llamo a esta función, en CL me devuelve ;los atributos anteriores (justo lo que necesito para ;después volver a dejarlo como estaba)... Bueno, hasta aca llegué por hoy, mi objetivo ya lo cumplí.... pero igualmente otro día con mas ganas voy a averiguar el resto de las subfunciones. Detalle: ^^^^^^^^ Hay ocasiónes donde el flag de "Protección contra escritura" se torna denso... Por ejemplo: El virus se ejecuta en una máquina 'normal' y funca todo ok, pero que pasa si la máquina tiene un cache de escritura?? El Vsafe salta la alarma, debido a que para el momento que el programa es escrito en el disco, el Vsafe ya está otra vez cargado como antes. Para esto podríamos sacar ESE flag con un AND, por ejemplo: and bl, 11111011b ;Donde el bit 2, es el de Prot. contra escrit. El resto de los flags son los siguientes: Bits 7 6 5 4 3 2 1 0 . . . . . . . 1 Formato HD de bajo nivel . . . . . . 1 . Residente . . . . . 1 . . Protección contra escritura . . . . 1 . . . Verificación de archivos ejecutables . . . 1 . . . . Virus de sector de inicio . . 1 . . . . . Protección de sector de inicio HD . 1 . . . . . . Protección de sector de inicio FD 1 . . . . . . . Protección de archivos ejecutables Enjoy !! Drako..