Professional Documents
Culture Documents
Introduccin
Has utilizado alguna vez un programa y lo has querido traducir a tu propio idioma? Has querido modificar alguna vez la apariencia de una aplicacin?Quieres modificar o cambiar el ttulo de un software, activar o no sus botones, la apariencia o eliminar una ventana que molesta?Tienes un programa antiguo que ya no tiene ni pgina Web y has descubierto un bug que necesitas solucionar?Necesitas ms opciones en una aplicacin?Quieres saber cmo se puede modificar un programa?
De qu hablaremos aqu?
Yo creo que ahora tengo la experiencia necesaria para empezar desde cero y de forma bien ordenada ese mismo tutorial con nuevos consejos y empezando desde un nivel nulo. Me gustara que fuera accesible a todo el mundo, tenga conocimientos o no. No tengo claro si continuar el tutorial de elhacker puesto que no tengo tiempo para actualizar en todos los sitios donde estoy, as que, una cosa s prometo: actualizar esta pgina en cuanto me sea posible. Los tutoriales sobre modificar programas los voy a nombrar con nmeros romanos (I, II, III...), cada tutorial tendr el enlace al anterior y siguiente al final del mismo. Espero que disfrutis paseando por este nuevo camino y espero que el camino sea largo... Intentar comenzar desde lo ms bsico (muy bsico, no me critiquis por esto, con cada tutorial avanzaremos en conceptos) e intentar de igual modo extenderme un poquito ms en las explicaciones. Por supuesto trataremos temas de distinta complejidad pero como digo siempre, lo ms importante son tus sugerencias. Nos ayudarn enormemente a saber qu es lo que os interesa, dnde nos equivocamos e intentar resolver vuestras dudas.
Imagina simplemente que escribes en Visual Basic (VB) lo siguiente: *Nota: Visual Basic es tan sencillo de entender que lo considero oportuno para comprender lo que intento explicar. No pretendo que lo instales, simplemente intenta entender el contenido. Esta primera parte es muy elemental y he obviado muchos detalles para que gente sin ningn conocimiento pueda entenderlo. En tutoriales posteriores iremos explicando conceptos de forma ms precisa y adecuada. a = 1 a = a + 1
Eso que has escrito es cdigo fuente hecho para Visual Basic que es un lenguaje de programacin (vamos a olvidarnos en este momento de compilador y enlazador). Si t quieres crear un programa para Windows que ejecute esas dos lneas anteriores, simplemente tienes una opcin desde un men del mismo VB para generar el ejecutable. Mira esta opcin:
Nada ms que pulses la opcin "Generar ejemplo_karmany.exe", Visual Basic a partir del cdigo fuente te crear un archivo con extensin .exe. A grandes rasgos, te quedarn dos archivos:
1.- Un archivo de texto que contiene las dos lneas anteriores y que denominamos cdigo fuente 2.- Un archivo con extensin .exe que es un ejecutable para Windows.
Si por cualquier motivo quieres modificar tu programa, lo ms lgico y que hace todo el mundo es modificar el cdigo fuente. Imagina que quieres modificar la segunda lnea: a = a + 1 por a = a + 2, pues simplemente lo modificas en el archivo de texto para que quede lo siguiente: a = 1 a = a + 2
Ahora simplemente vuelves a generar el ejecutable desde Visual Basic y se vuelve a crear otro ejecutable (.exe) para Windows. Como ves es muy sencillo pero y si no dispones del cdigo fuente? Cmo puedes modificar lo que acabo de comentar. Cmo se puede modificar ese archivo ejecutable (.exe)? Tambin podemos extrapolar a otros rasgos, por ejemplo, imagina que quieres modificar una imagen o un color o una funcin. De esto va a tratar estos tutoriales, de modificar programas, libreras, controles ActiveX ya compilados que no disponen de cdigo fuente y solamente tenemos el exe, dll, ocx etc...
Como sabes, existen muchsimos lenguajes y entornos de programacin y los ejecutables finales pueden ser muy distintos unos de otros. Iremos conociendo los ms utilizados y en distintos niveles de dificultad. La idea es que cuando tengas en tus manos por ejemplo una librera dll, sepas si est comprimida, empacada, protegida, sepas con qu lenguaje de programacin ha sido compilada y qu debes hacer para modificarla. Ya hemos dado el primer paso, vamos a empezar por lo que considero ms bsico: saber qu son los recursos de un programa, dnde estn y cmo se pueden modificar...
Qu recursos hay ah? Pues fjate: men, botones, la imagen del cuadrado amarilla... todo lo que ves. Como Add PE bytes lo he programado yo, pues simplemente te voy a mostrar una imagen de cmo program los recursos y vers todos los que us:
Por ejemplo, DialogoPrueba es la ventana general de Add PE bytes, la primera imagen que he puesto. Cuando se programan los recursos, muchos programas te permiten hacerlo de una forma visual muy sencilla. Mira:
Por ejemplo, si quieres aadir un botn, slo tienes que pulsar a la derecha en "Button" y seguidamente dibujas el botn en el dilogo.
Observa la seccin .rsrc que he pintado en azul. Ah se suelen guardar los recursos de un programa generalmente! Y te dirs... por qu se que estn ah? Primero por la experiencia pero para asegurarme voy a mirar en la seccin que ves como Header (lo miro desde OllyDBG):
00400160 00C00200 DD 0002C000 ;Resource Table address = 2C000 00400164 48130000 DD 00001348 ;Resource Table size = 1348 (4936.)
Ya te habr quedado claro no?.
Otros formatos
Este simple ejemplo es un programa con formato PE, pero existen otros formatos diferentes (en Java, Flash etc...) que vers que no se corresponde con esto que acabamos de ver e incluso sin ir muy lejos, los recursos en un programa realizado con tecnologa NET tampoco es exactamente as y modificarlo nos puede llevar mucho ms trabajo. Sin embargo, vamos a ir poco a poco y empezar con lo ms bsico. Poco a poco nos iremos adentrndo en otros formatos.
Si el botn Abrir no te gusta que est arriba lo pones abajo Si el fondo tiene un color negro lo puedes cambiar a blanco Si el tamao de la ventana de un programa crees que es demasiado pequea, la haces ms grande Te aparece una ventana molesta que es publicidad con contenido no adecuado... la eliminas Existe un enlace que te enva a una pgina con malware. Puedes borrar y/o modificar el link. Puedes aadir informacin, por ejemplo en forma de texto, si crees que el programa lo necesita. Aades en la interfaz el grfico que ms te guste Al ejecutar un programa en tu nuevo S.O. actualizado, tu programa ya no se ve como antes y tienes que modificar la posicin de algunos recursos Hiciste hace varios aos un programa y has perdido el cdigo fuente y necesitas cambiar la apariencia Y posiblemente la que ms veces he visto nombrada es: la traduccin de un programa a tu idioma.
Realmente la traduccin de un programa a tu propio idioma suele ser un trabajo complejo. Primero porque no todos los programas permiten la modificacin de todos los recursos y si no vas haciendo copias de seguridad es posible que tengas que empezar de nuevo. An cuando has traducido la mayora de texto o todo el texto que existe en forma de recursos vers que hay otro que te aparecer y no se encuentra en la seccin de recursos. Para modificar esto ltimo tendrs que hacerlo desde un editor hexadecimal o hacer uso de ingeniera inversa, como veremos. Pero vamos a centrarnos en lo ms bsico haciendo un simple ejemplo.
antojo. No ofrezco, por supuesto, ninguna garanta y lo que realices ser bajo tu responsabilidad. Su interfaz, que por cierto la he hecho muy fea (pero eso es lo de menos, no?), es la siguiente:
En el apartado de ingeniera inversa veremos la resolucin de este sencillo programa, hoy vamos a estudiar su interfaz. Qu recursos podemos ver? pues los siguientes:
Una imagen de color negra con unos ojos, nariz y boca. Esa imagen tiene dos textos en su parte superior. Debes entender que esas dos frases corresponden a la imagen, no son textos independientes aadidos como recurso!. La ventana principal que engloba todos los controles que ves. Tres botones, una caja de texto (donde he escrito www.karmany.net). Y el icono de la aplicacin.
As a simple vista, no se ve nada ms. Lo primero que vamos a hacer, muy sencillo, es cambiar el texto Probar por Aceptar. Voy a usar Resource Hacker en su ltima versin en ingls (pero pondr su traduccin), as que, echa un vistazo a los editores de recursos en el enlace del principio de este artculo y descrgatelo. Ejecutas Resource Hacker, abres en l el programa asm02.exe y te dirijes a Dialog -> 101 -> 1033. All vers la palabra Probar y la sustituyes por Aceptar. Te quedar as:
Como puedes observar, segn la numeracin de la imagen: 1. Me he dirigido a Dialog -> 101 -> 1033 He modificado Probar por Aceptar Pulso el botn Compile Script (En espaol saldr como Compilar Script). Selecciono men: File -> Save As (En espaol es: men Archivo -> Guardar como). Y lo guardas con el nombre que quieras SIN OLVIDARTE de la extensin exe.
2. 3. 4.
Ya est todo, si ahora ejecutas el programa que has guardado podrs comprobar los resultados. Voy a hacer un simple video para que veas como se hace en tiempo real: A partir de este momento y tomando como ejemplo lo que acabamos de hacer, realiza tus propias modificaciones de recursos y comprueba resultados. Como digo siempre, haz copias de seguridad para no perder tu trabajo.
Imgenes:
Ficha resumen
Licencia: Freeware Sistema Operativo: Windows 95 - Windows 7 ltima actualizacin: 16 de septiembre de 2011 (versin 3.6.0) Para: 64 y 32 bits. Pgina web: http://angusj.com/resourcehacker/
Qu es Resource Hacker?
Como he dicho en la primera frase, Resource Hacker (TM: Trade Mark, marca registrada) es el programa gratuito por excelencia para la edicin de recursos. Yo le he dedicado muchsimas horas, hace aos... Est muy relacionado con la Ingeniera Inversa y con l se han modificado y crackeado -s, con un simple editor de recursos- muchas aplicaciones. Me viene por ejemplo a la mente cuando se modific un Messenger (no recuerdo si era la versin 7) para poder usarlo, ya que sali una nueva versin y esta anterior no se poda ejecutar, algo que a m me pareca algo arriesgado hablando en trminos de seguridad.
Este software no se va a distribuir a travs de cualquier dominio del sitio web o cualquier otro medio sin la previa autorizacin por escrito del propietario del copyright. Este software no ser usado, bajo ningn concepto, para modificar un software de forma ilegal.
Sus caractersticas:
Voy a hacer una traduccin lo ms aproximada que pueda de lo que pone en su pgina web: 1.- Permite visualizar los recursos en archivos ejecutables Win32, Win64 (*.exe, *.dll, *.cpl, *.ocx) y en archivos de recursos (*.res) tanto en sus formatos compilados o descompilados. 2.- Permite extraer (guardar) los recursos en archivos en: formato *.res, como un binario, o como imgenes o scripts de recursos descompilados. Los iconos, mapas de bits, cursores, mens, dilogos, tablas de cadenas, tablas de mensaje, aceleradores, formularios de Borland y los recursos de version info pueden ser descompilados completamente en sus respectivos formatos, ya sea como archivos de imagen o archivos de texto *.rc. 3.- Es posible modificar (renombrar o reemplazar) los recursos en archivos ejecutables. Los recursos de las imgenes (iconos, cursores y mapas de bits) pueden ser reemplazados por una imagen desde un archivo de imagen correspondiente (*.ico, * .cur, *.bmp), un archivo *.res o incluso otro archivo *.exe. Los dilogos, mens, tablas de cadenas, aceleradores y los scripts de recursos de mesagetable (tambin los formularios de Borland) se pueden editar y volver a compilar mediante el interno script editor de recursos que incorpora Resource Hacker. Los recursos tambin se pueden reemplazar con los recursos de un archivo *.res siempre y cuando el recurso reemplazado sea del mismo tipo y tenga el mismo nombre. 4.- Agrega nuevos recursos a los ejecutables. Es posible habilitar un programa para admitir mltiples idiomas, o aadir un icono personalizado o mapa de bits (logotipo de empresa etc.) al dilogo de un programa. 5.- Elimina los recursos. La mayora de los compiladores agregan recursos que nunca son utilizados por la aplicacin. Eliminar estos recursos no utilizados puede reducir el tamao de la aplicacin. -------------------------------------------------Nota acerca de WinXP - Win 7 y estilos visuales: --------------------------------------------------
Aadiendo un recurso manifest a Resource Hacker, puede causar problemas intermitentes a la hora de ver o editar dilogos. No se recomienda su uso.
El botn "Compile Script" donde se encuentra el cursor, permite compilar de nuevo los recursos con las nuevas modificaciones que hayas hecho, para mi una excelente opcin por la cual destaca Resource Hacker. El botn "Show Dialog" muestra el dilogo.
Como te podrs imaginar, existen muchsimos editores de recursos para Windows pero curiosamente muchos han dejado de desarrollarse. En general, los editores gratuitos no tienen nada que envidiar a los de pago aunque algunos tienen caractersticas interesantes. Los que voy a mencionar aqu te permiten editar los recursos que se hallan en la seccin que he comentado antes. Es necesario entender esto y la forma de trabajar de estos programas porque seguramente en esa seccin no encuentres determinados recursos que quieres modificar y para esto usaremos otras alternativas. Un ejemplo sencillo para que lo entiendas: si abres con un editor de recursos un programa que haya sido compilado en Visual Basic 6, no vers casi ninguno y esto es porque, en este caso, la mayora de los mismos se encuentran en otra seccin. Se entiende? Una de las principales limitaciones de estos programas es que (lgicamente) no pueden analizar ni modificar ejecutables comprimidos, empacados o encriptados. Si no tienes mucha experiencia es mejor que analices con un detector de packer/compilador tu archivo y puedas orientarte. Vamos a conocer los que considero ms destacados y una muy breve descripcin:
Resource Hacker
Gratuito. Versin: 3.6.0 (16 de septiembre de 2011) Descripcin: He hablado mucho sobre este programa. Es, por excelencia, el programa para la edicin de recursos. Muy usado hace aos pero que su autor dej de desarrollar, aunque actualmente ha sacado alguna nueva versin. Tiene bugs y seguramente no permitir la edicin de recursos a programas compilados con las ltimas versiones de Delphi (ver enlace anterior para ms info). Sirve para analizar aplicaciones (etc.) a 32 y 64 bits. Descata principalmente su flexibilidad y no pone impedimentos a la hora de agregar nuevos recursos. Yo lo sigo utilizando. Solicit a su autor si me permita la descarga desde mi web de Resource Hacker en espaol y accedi: Resource Hacker en espaol. Pgina Web: http://angusj.com/resourcehacker/ Valoracin: (8,5 de 10). Aunque tiene limitaciones es excelente y gratuito.
Resource Editor
Gratuito (a fecha de este artculo) Versin: 0.9.0.834 beta (10 de septiembre de 2011) Descripcin: Buena herramienta realizada en Delphi que corrije el error principal que tiene Resource Hacker. Est todava en fase beta y tiene tambin bastantes limitaciones que no tiene el anterior. Por ejemplo, no te permite directamente modificar un formulario (texto) de un programa en Delphi. Tiene un editor grfico, reconoce bastantes tipos de recursos y lo mejor es que est en continuo desarrollo. Me llama la atencin que el autor comenta en su web que todava no tiene claro si en un futuro har o no el programa de pago. Pgina web: http://melander.dk/reseditor/ Valoracin: (5 de 10). Est en estado beta todava. Tiene que mejorar.
XN Resource Editor
Gratuito Versin: 3.0.0.1 ( 17 de diciembre de 2005)
Descripcin: Excelente programa gratuito compilado con Borland Developer Studio 2006 y que tiene a tu disposicin el cdigo fuente. Diseado especficamente para Windows 98, 2000 y XP (lo he testeado en W7) sigue siendo recomendable y al igual que Resource Hacker tiene bastante flexibilidad en su manejo. Tal vez la mayor dificultad para usuarios que empizan a conocerlo sea tras una modificacin de un recurso, cmo guardar los cambios. Soporte para UNICODE. Pgina web: http://www.wilsonc.demon.co.uk/d10resourceeditor.htm Valoracin: (8,5 de 10). Otro recomendable programa que no debe faltar junto a tus herramientas.
Explorer Suite
Gratuito Versin: III (03 de diciembre de 2010) Descripcin: Muy buen programa que permite analizar aplicaciones a 32 y 64 bits y los recursos .NET. Aparte de todo esto es capaz de editar UNICODE, muy til para programas en estos lenguajes. Es de destacar que posee muchas herramientas incorporadas como un editor hexadecimal y muchsimas utilidades. Es muy completo y destaca la usabilidad. Complementado con los anteriores, no habr formato PE que se te resista. Pgina web: http://www.ntcore.com/exsuite.php Valoracin: (6,5 de 10). Pongo un 6,5 valorando nicamente la edicin de recursos, que no es tan completa como los anteriores.
Exescope
De pago (20$) Versin: 6.50 (23 de mayo de 2004) Descripcin: Para aplicaciones a 32 bits con las aplicaciones anteriores tendrs suficiente. Pongo este programa ya que es de los pocos que permiten la edicin de recursos a aplicaciones de 16 bits. Fue muy conocido. Pgina web:http://hp.vector.co.jp/authors/VA003525/emysoft.htm#6 Valoracin: (8,5 de 10). Bastante completo y destaca por permitir 16 bits.
Resource Tuner
De pago (39,95$) Versin: 1.99 R6 (October 20, 2009) Descripcin: Es bastante completo. No es posible saber el camino que llevar porque hace ms de dos aos que no se actualiza. Un programa fcil de utilizar que destaca por la posibilidad del uso de plugins, por ejemplo tiene el plugin de descompresin de UPX pero que, a mi modo de ver, sus desarrolladores lo han querido realizar tan sencillo que tiene muchas limitaciones que no tiene por ejemplo Resource Hacker ni XN Resource Editor, por ejemplo, no es posible aadir cdigo a un formulario Delphi. Si hubiera tenido esta opcin, tal vez incluso lo hubiese comprado en su da. Aunque es bueno prefiero las aplicaciones gratuitas que no tienen nada que envidiar. Pgina web: http://www.restuner.com/ Observaciones: Esta empresa tiene otra aplicacin llamada PE Explorer muy interesante y con muchas opciones que lleva incorporado este editor de recursos.
Restorator 2007
De pago (87$) Versin: 2007 Update 2 (julio de 2007) Descripcin: Viendo las dems aplicaciones es un programa caro. Lleva tambin mucho tiempo sin actualizarse ya que incluso las imgenes de su web corresponden a Windows XP pero la verdad que es muy completo. Permite el uso por linea de comandos y tiene muchas caractersticas y un excelente y trabajado manual de uso. La verdad que no he encontrado una caracterstica importante que no tengan los editores de recursos anteriores y que pueda justificar un precio tan elevado (en comparacin con los dems). Pgina web:http://www.bome.com/products/restorator Valoracin: (8,5 de 10). Aunque es muy buen programa no lo recomiendo porque me parece un precio muy elevado.
Existen muchos ms programas. De algunos de ellos no hablo porque sus caractersticas son limitadas (por ejemplo Anolis Resourcer). Tampoco, y como coment al principio, no he hablado de programas para la edicin de recursos en programas hechos con compiladores especficos (por ejemplo Visual Basic 6 o programas para la edicin de recursos en la programacin como ResEdit) que quiero tratar como temas aparte. Ir actualizando este tutorial o lo enlazar con otro/s con las nuevas versiones o nuevos programas que aparezcan y que puedan resultar tiles.
Tiene una versin portable y otra instalable. Permite abrir cualquier tipo de archivo independientemente de su tamao Tiene una simple opcin para comparar archivos y buscar diferencias Exporta el cdigo en distintos formatos (pascal, HTML etc.) dependiendo del documento. Es posible insertar bytes, pegarlos o sobrescribirlos. Una opcin que no todos tienen y a veces muy necesaria Permite realizar bsquedas de texto (ANSI, UNICODE), valores hexadecimales, nmeros enteros, de punto flotante etc. Podemos especificar el nmero de bytes por fila Se puede editar los bytes o el cdigo directamente
Puede leer procesos de memoria Pues deshacer cuantas veces quieras Compatible con Windows NT/2000/XP/2003/Vista/7 Est disponible en muchos idiomas Usabilidad
Aparte de todo esto es capaz de leer y escribir datos por ejemplo en un disco duro o en otra unidad: disquetes, discos ZIP, unidades flash USB, CD... Esto es posiblemente lo que ms puede llamar la atencin y para hacerlo ms sencillo, la modificacin de estas unidades o la lectura de la memoria se hace del mismo modo que cuando abrimos un archivo. Imagina que tienes una comnmente llamada memoria USB. Formatea esa unidad con el sistema de archivos FAT32 y ah crea un archivo llamado karmany.net (por ejemplo). Realmente, lo que un usuario ve es un slo archivo: karmany.net. Sin embargo, esto es algo verdaderamente interesante sobre todo para las personas que nos gusta ver y estudiar es contenido real de un disco, conocer y entender por ejemplo el sistema de archivos o simplemente intentar extraer informacin del mismo. Has perdido alguna vez informacin en un disco? Tal vez examinndolo con este programa puedas encontrarlo. Seguramente hayas odo muchas veces que cuando se elimina un archivo realmente no se borra del todo. Haz esta prueba que acabo de hacer: crea en una memoria USB un archivo de texto y escribe dentro algo caracterstico que recuerdes. Observa con HxD que ese texto existe. Ahora desde Windows elimina el archivo y tras esto vuelve a ejecutar HxD y busca el mismo texto. Seguro que te sorprenders:
Su pgina web donde tendrs ms informacin y podrs descargarlo es sta: Pgina web de HxD
En resumen...
Es un excelente editor hexadecimal con las opciones ms comunes que se le pueden pedir a un programa de este tipo. Es rpido, potente, sencillo, con un diseo de interfaz intuitivo, est en espaol, permite leer la memoria de los procesos y como caracterstica ms destacable es capaz de leer y modificar los datos en los sectores de un disco. Por contra no tiene ayuda.