Erwin.Ried.cl / Documentos / Cracking /
Al cambiar la extensión: ¿el archivo queda inutilizable?

Cuando cambiamos la extensión de cualquier archivo, Windows siempre nos alerta de la posibilidad de que el archivo quede inutilizable, lo cual es ciertamente imposible. Paso a paso veamos como podemos modificar parametros del comportamiento de la interfaz de usuario que no nos gusten. (24/02/2007 01:02 AM)


Nota
Las correcciones de los problemas que se enumeran a continuación no pueden ser publicadas en forma de un archivo modificado o instalador, pues así se violaría el punto cuarto "LIMITACIONES EN MATERIA DE INGENIERÍA INVERSA, DESCOMPILACIÓN Y DESENSAMBLAJE." y el punto seis "SEPARACIÓN DE COMPONENTES." del acuerdo de licencia del sistema operativo Windows, aceptado al momento de la instalación. Sin embargo, mi idea es mostrar las formas en que podrían ser reparadas, en forma de conocimiento computacional general.



1. Primero lo primero

Lo principal es encontrar el archivo que produce el comportamiento indeseado. Esto se aplica para cualquier comportamiento, aunque en este caso en especial será para el siguiente mensaje:



Al ser un mensaje de la interfaz de Windows, no puede estar muy lejos del grupo de conocidos explorer.exe, shell32.dll y otros personajes más del directorio System32.

Lo más simple para encontrar las cadenas de texto, es utilizando una aplicación que pueda realizar búsquedas de cadenas ASCII y Unicode dentro de los archivos como Hex Workshop (La imagen corresponde a un fragmento de Shell32.dll):




2. Analizar el comportamiento

Ahora que ya conocemos el archivo, debemos saber como se genera ese comportamiento. Abrimos la librería con un desensamblador como W32Dasm o OllyDbg, aquí con entender un mínimo de lenguaje ensamblador la secuencia es lógica. Primero buscamos la ubicación de la cadena respectiva:



Aunque hay muchas coincidencias que hacen referencia a la cadena buscada, debemos seguir buscando hasta encontrar una que haga un PUSH a la pila del título, mensaje y tipo de ventana de mensaje a la vez, esto significaría algo (aunque probablemente no en el mismo orden) como:

Código:
PUSH "Cambiar nombre"
PUSH "Al cambiar la extensión, el archivo puede..."
PUSH <mensaje_aceptar_cancelar>
CALL libreria.mostrar_mensaje

La secuencia que debemos buscar es una operatoria similar a la utilizada al programar en las calculadoras HP, en donde los parámetros se toman de la PILA (o STACK), por ejemplo para realizar un ciclo FOR desde uno a cien utilizando una variable VAR sería "1 10 FOR VAR" a diferencia de lo que habitualmente conocemos "FOR VAR=1 TO 10" o más tradicionalmente "for(VAR=1;VAR<=10;VAR++)".

Justamente luego de algunas pruebas encontramos un código sospechoso. Este código se visualiza mucho mejor gracias al analizador de código de OllyDbg:



Si aún no es lo bastante claro, el código se podría interpretar de una forma básica, pero suficiente para darnos cuenta de su funcionamiento:




3. Modificando código

Entonces, ¿Qué pasaría si cambiamos esa llamada por una instrucción NOP la cual significa no realizar nada?

Probablemente resolveríamos el problema, sin embargo no sería una solución elegante, pues la pila quedaría con argumentos no utilizados que podrían provocar excepciones luego. Una mejor solución será que busquemos la bifurcación más arriba en el código en donde se hace el salto a "se cambió la extensión" o "la extensión sigue igual" para forzar esta respuesta siempre a la segunda alternativa.

En la imagen sale resaltada la instrucción que debemos modificar:



Un salto incondicional JMP que le dice a Windows que la extensión no fue modificada, por lo tanto debe cambiar el nombre de archivo sin advertirnos lo que sucederá si cambiamos la extensión:



Guardamos los cambios. Si no hubieramos usado OllyDbg deberíamos haberlos realizado por medio de un editor hexagesimal, pero en OllyDbg es de manera directa:




4. Aplicando los cambios

Ahora reemplazamos el archivo utilizando alguna utilidad como ERD Commander 2005, y posteriormente, reiniciamos el equipo de manera normal:





5. ¿Trabajo terminado?

Finalmente comprobamos el funcionamiento de los cambios realizados a la librería shell32.dll:



Parece que esto sería la despedida de la advertencia de cambio de extensión. Probablemente nunca más la veremos aunque, claro, podría volver en futuras reinstalaciones del sistema.


6. Conclusiones

De una forma relativamente simple, logramos modificar el comportamiento bases del sistema, sin influir en su estabilidad.

Una consideración importante es que la versión utilizada en este artículo fue Windows XP Professional SP2. Las direcciones internas de los archivos como las librerías y otros archivos del sistema cambian entre las versiones Home y Professional, al igual que en las con o sin SP2, SP1 y también otras versiones basadas en el nucleo de Windows NT, como Windows 2000 o Windows 2003. Aunque las modificaciones pueden aplicarse de igual forma, pero las referencias no serán iguales, por ejemplo el salto que debe modificarse en la version Home de Windows XP será 7CAD1997 a diferencia de 7CACFEBF, que es la que modificamos en este artículo.

Haga clic sobre una de las estrellas para calificar este artículo.

Opiniones y comentarios (Escribir un nuevo comentario)
Y sabes dónde estaría en Windows 7 SP1 64 bits? Debería de haber una opción para que no haga la pregunta... Pero si la hay no sé dónde estará PD: No tiene tu web rss? Aunque parece que ya no sigues escribiendo... No has pensado pasarte a wordpress, blogspot u otros y hacerlo más sociable? Tienes entradas muy buenas
Escrito por JoniJnm (11/03/2012 08:24 PM)
Lo he pensado pero es bastante trabajo :(
Escrito por Erwin Ried (16/03/2012 08:25 PM)
amigo erwin yo he leido tu articulo y pues fue para mi un exito,yo se que no me presentara mas problema. por que espero que no... no que no,,, gracias fue de mucha ayuda
Escrito por wil (26/08/2011 09:20 PM)
Me aparecio de repente la dichosa leyenda que no me permitia cambiar el nombre al archivo y tu consejo fue genial, fui a tiro hecho, problema resuelto a la 1ª, un tuto de PM.
Escrito por Juan Miguel (08/12/2010 09:13 PM)
Me parece que no comprendiste el objetivo del artículo, pero me alegro de que te sirva
Escrito por Erwin Ried (10/12/2010 02:58 PM)
antes de hacer todo eso mejor intenten esto: Ve a una ventana del explorador (como documentos o mi pc) - Dale a "Herramientas" - "Opciones de carpeta" - Pestaña "Ver" - Y hasta abajo hay una opcion q dice "Ocultar las extensiones de archivo para tipos de archivos conocidos", fijate q este marcada, si no lo esta, marcala Ahora intenta volver a cambiar el nombre del archivo, aver si te da el mismo error
Escrito por robeegc (23/09/2010 04:28 PM)
Claro que ocultando la extensión no la cambias, pero eso escapa un poco con el objetivo del documento. La idea es mantener las extensiones visibles
Escrito por Erwin Ried (24/09/2010 12:17 AM)
sinceramente trato de entender pero no entiendo!!!!!!!!
Escrito por gimena (03/04/2010 12:53 PM)
de lo mejor tu tutorial solo hay personas que no entienden mucho sobre esto si me gustaria que cuando des un tuto lo des un poco mas sencillo
Escrito por yamakazy21 (20/02/2010 08:33 PM)
Si alguien no entiende bien, probablemente es porque no necesita entenderlo
Escrito por Erwin Ried (21/02/2010 07:05 PM)
Jesus...tu explicacion es muy simple...sencilla...es justo lo q deseaba pa'cambiar de nombre a mis archivos sin escribir su extension...Garaicas..duios te cuide jesus. hi
Escrito por Solito (10/11/2009 11:15 PM)
no entendí nada, siempre las niñas necesitamos a un niño super culto para este tipo de cosas. alguien me lo puede traducir? es más, puedo poner el teamViewer y desde su equipo me raparan el mio, por favor. les mando un beso, gracias Lorenna, Mex DF
Escrito por Lore (22/09/2009 11:04 PM)
Probablemente si no entendiste nada, no necesitas entenderlo
Escrito por Erwin Ried (26/09/2009 01:52 PM)
Felicidades por el tutorial. Le dí vueltas a esa ventana pensando que podría eliminarse desde las directivas de grupo, pero nada de nada. Busqué por todos lados y todavía sin resultado. Parece extraño que no haya una opción par evitar esa dichosa ventana... si encuentro otra solución que no sea modificar shell32.dll lo comentaré hasta entonces he seguido tus pasos. Gracias por el aporte. karmany
Escrito por karmany (22/03/2009 04:59 PM)
No creo que sea posible, si te fijas en Shell32 nunca lee algun tipo de configuración para impedir ese comportamiento
Escrito por Erwin Ried (22/03/2009 05:26 PM)
Claro, seguramente, cuando cambias el nombre, también le cambias la extención (que son las ultimas tres letras del archivo, luego del punto).. Para que las extenciones no salgan mas y puedas cambiar los nombres tranquilamente, tienes q poner "Recordar las extenciones para nombre de archivos conocidos".. En Windows XP, es así: 1 - Menu inicio / panel de control. 2 - Buscas el icono "Opciones de Carpeta" 3 - Una vez alli, buscas la pestaña ver y abajo buscas "Recordar extenciones para nombre de archivo conocido" lo tildas y listo !!! nunca mas te volverá a pasar eso de que el archivo qued eilegible y no lo puedas abrir. Saludos y que no cuenten rollo con lo facil que es .
Escrito por jesus (03/02/2009 01:04 PM)
No me refiero a eso, de hecho desactivo esa opción siempre (estoy constantemente cambiado extensiones) pero la verdad es que Windows Vista y versiones superiores seleccionan sólo la parte del nombre (eso de esconder las extensiones también es un gran problema para la seguridad, en particular para gente inexperta)
Escrito por Erwin Ried (03/02/2009 03:55 PM)
a mi tampoco me quedo muy claro... yo tengo un archivo..por ejemplo hola.exe y le cambio la extencion por ejemplo a hola.jpg el archivo queda inutilizable...porque yo cuando hago click sobre el iconi de "hola.jpg" me dice que no puede leer el archivo que es lo que logro con hacer todo esto???
Escrito por franco (02/11/2007 08:27 PM)
Claro, en ese caso entiendo el motivo por el cual añadieron el mensaje, en tu caso, si te causara confusión es mejor que no toques nada, pero mucho usuarios algo más intrusos nos pasamos cambiando extensiones entre archivos compatibles, lo que a la larga resulta molesto
Escrito por Erwin Ried (03/11/2007 10:26 AM)
JA ja que genial, te haz librado de esa ventana mentirosa de windows! Te felicito. Yo siempre le estoy cambiando la extensión a los archivos por mil y una razones, pero nunca dejo un archivo sin una. No veo en que podría beneficiar... Por eso ocultarlas es terrible para mi. Una vez el gusano Brontox me las ocultó y me impidió ingresar a las opciones de windows xD
Escrito por Alzoph (04/06/2007 08:35 PM)
me gustaria que nombren por lo menos 10 extensiones para saber alfomas
Escrito por amor (21/11/2006 11:30 AM)
¿Diez extensiones?, no entiendo mucho tu comentario, acá hay un catálogo de las extensiones de archivos más conocidas: http://filext.com/
Escrito por Erwin Ried (21/11/2006 12:07 PM)
MMM, todo eso que dices está de pm... pero mi duda no se aclara. Cada vez que quiero cambiar el nombre a un archivo me sale eso de que puede quedar inutilizable.. por tanto me rajo por miedo a perder el archivo, que suele ser una canción de mp3 que está muy bien, pero al final no le puedo poner el títuloque yo quiera al archivito. Todo ese proceso que has relatado paso a paso ¿es la demostración de que si seguimos adelante con el cambio de nombre del archivo, será imposible que quede inutilizable? ¿o es todo lo que hay que hacer para que al cambiarlo de nombre no quede inutilizable, teniendo que meterme en ese follón de ventanas ms2? Si no puede contgestar el autor de este artículo, por favor, que conteste alguien que lo entienda, gracias.
Escrito por Nidea (12/10/2006 06:39 PM)
Lo que realmente te dice ese mensaje es que al cambiarle la extensión a un archivo por otra, puede quedar inutilizable por el hecho de que al hacer doble clic no abrirá la aplicación correspondiente, no entendí muy claramente tu problema con el cambio de nombre, la única posibilidad de colocar cualquier nombre sin tener en cuenta la extensión es estableciendo que se oculten las extensiones para archivos conocidos en opciones de carpeta, pero generalmente no creo que sea recomendable ocultarlas
Escrito por Erwin Ried (12/10/2006 07:23 PM)

Copyright © 2013 por Erwin Ried.