Tema destacado: Sigue las noticias más importantes de elhacker.net en twitter!
Autor
|
Tema: Removeable Drive autorun.inf Remover (Leído 2,038 veces)
|
carlitos.dll
Desconectado
Mensajes: 266
|
Este pequeño programa, detecta las unidades removibles, y si encuentra en ellas un archivo autorun.inf lo elimina. #include <Windows.h> #include <string.h> #include <stdio.h> /* Removeable Drive autorun.inf Remover. Escrito por Carlos. */ void go(void) { char letras[513]; GetLogicalDriveStringsA(512,letras); letras[512] = 0; char autorun_inf[15] = "...autorun.inf"; autorun_inf[14] = 0; unsigned short int i=0; for (i=0; *(letras + i) != '\0'; i += 4) { if (*(letras + i) > 'A') { if ((unsigned short int)GetDriveTypeA(letras + i) == 2) { strncpy(autorun_inf, letras + i, 3); FILE* file = NULL; file = fopen(autorun_inf,"rb"); if (file != NULL) { fclose(file); SetFileAttributes(autorun_inf,FILE_ATTRIBUTE_NORMAL); remove(autorun_inf); } } } } } int main() { go(); }
|
|
|
|
« Última modificación: 14 Diciembre 2009, 06:41 por sirdarckcat »
|
En línea
|
|
|
|
The_Judgement
Desconectado
Mensajes: 119
|
Hola buenas, me gusta el programa este, lo encuentro muy útil la verdad. Yo suelo quitar los autorun.inf a mano pero la verdad que siempre viene bien hacerlo de una forma más automática.
Tengo unas dudas acerca de algunas funciones que usas. He estado mirando en internet pero no entiendo bien qué hace exactamente GetLogicalDriveStringsA, según lo que entiendo concatena el nombre de todas las unidades lógicas en la cadena que se le pasa como argumento.
Si en eso tengo razón, no entiendo cómo distingues después todas las unidades con el for, supongo que la variable i la incrementas 4 porque la función GetLogicalDriveStringsA lo almacenará con algún formato.
Tampoco entiendo por qué cierras el archivo si el puntero file es distinto de NULL, por lo que yo se hay que cerrarlo después de usar el archivo y tu lo que haces es abrirlo y acto seguido cerrarlo.
Si me pudieras explicar todo lo anterior te lo agradecería, me gustaría hacer el programa por mi mismo.
Saludos y gracias.
|
|
|
|
|
En línea
|
Sacred Powers, cast your purifying light upon this corrupt souls, rest in peace sinners!, JUDGEMENT!!!
|
|
|
carlitos.dll
Desconectado
Mensajes: 266
|
la lista de letras se almacena así: "A:\ C:\ D:\ E:\ F:\" por eso voy avanzando de 4 en cuatro, y distingo las unidades removibles con: GetDriveTypeA(letras + i) == 2) http://msdn.microsoft.com/en-us/library/aa364939.aspxY abro el archivo, para saber si existe, si existe, el flujo es distinto de null, por lo cual lo cierro, le asigno atributos normales, (por si tiene atributos de sistema, oculto o sólo lectura) y lo elimino.
|
|
|
|
« Última modificación: 5 Septiembre 2008, 02:48 por c.a.r.l.o.s. »
|
En línea
|
|
|
|
The_Judgement
Desconectado
Mensajes: 119
|
Bien, según he visto en msnd, GetDriveTypeA coge la unidad hasta el espacio que las separa o encuentra el carácter de fin de cadena.
Y ahora he entendido lo que haces con el archivo autorun.inf, es que no sabía que las funciones que usas para ponerle los atributos normales para poder borrarlo después no necesitaban tener un stream abierto, por eso mi duda, pero se me acaba de ocurrir.
Muchas gracias por el código y las explicaciones.
PD: Por cierto, cuando declaras la variable autorun_inf, como la inicializas en la declaración no es necesario poner el número de caracteres a reservar ni después poner el carácter de fin de cadena. Esto: char autorun_inf[] = "...autorun.inf";
es equivalente a: char autorun_inf[15] = "...autorun.inf"; autorun_inf[14] = 0;
Saludos.
|
|
|
|
« Última modificación: 5 Septiembre 2008, 14:25 por The_Judgement »
|
En línea
|
Sacred Powers, cast your purifying light upon this corrupt souls, rest in peace sinners!, JUDGEMENT!!!
|
|
|
Nakp
casi es
Ex-Staff
Desconectado
Mensajes: 6.334
he vuelto :)
|
interesante... y yo quería hacer un autorun.inf tweaker 
|
|
|
|
|
En línea
|
Ojo por ojo, y el mundo acabará ciego.
|
|
|
FRAVIER6940
Desconectado
Mensajes: 4
|
pero este programa queda en memoria funcionando hasta que se introduce un pendrive???
|
|
|
|
|
En línea
|
|
|
|
the.adx
Desconectado
Mensajes: 29
Brain kept a rollin' all night long.
|
pero este programa queda en memoria funcionando hasta que se introduce un pendrive???
Creo que sí. De hecho se trata de estar siempre a la espera de que se introduzca el dispositivo. Es un buen método para evitar cualquier intento de malware vía USB. Carlitos.dll, aunque el código está bien, creo que puede mejorarse. Sigue asi  . Saludos.
|
|
|
|
|
En línea
|
 "I was trying to do too many things at the same time, which is my nature. But I was enjoying it, and I still do enjoy it. "Jimi Hendrix
|
|
|
Littlehorse
All the world's a stage
Moderador
 
Desconectado
Mensajes: 2.710
Nie Dam Sie
|
 Teniendo un pmp en H: Estoy interpretando mal o deberia quedarse en memoria? porque no lo hace... El archivo lo borra pero luego de mostrar ese mensaje.
|
|
|
|
« Última modificación: 6 Noviembre 2008, 02:00 por Littlehorse »
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
jdc
Desconectado
Mensajes: 3.253
janito dos cuatro...
|
Esta bueno... claro que no distingue solo borra! Lo acabo de compilar y probar pero solo se borra el autorrun al ejecutar el programa no queda en memoria... Osea abres el .exe y borra los autorun.inf pero si se copia de nuevo el autorun no se elimina  sigue ahi
|
|
|
|
|
En línea
|
|
|
|
Littlehorse
All the world's a stage
Moderador
 
Desconectado
Mensajes: 2.710
Nie Dam Sie
|
Pero es que si no queda en memoria no evitas las opciones del autoplay ya que tenes que ejecutar el removeable antes de elegir cualquier opcion, si no, cargo una aplicacion que resida en memoria para chequear la existencia del archivo y volver a crearlo en caso de eliminado.
|
|
|
|
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
|
|
|
|
Sierpe_777
Desconectado
Mensajes: 25
|
mm bataria con ponerle un while (1) y un Sleep (), para dejarlo en memoria forever jejejeje
|
|
|
|
|
En línea
|
|
|
|
|
|