Cómo modificar programas III

Tamaño de letra:

¿Qué son los recursos de un programa?

Es importante que conozcas a qué llamamos recursos. Los recursos son elementos de la interfaz que proporcionan información al usuario. Cuando un programador realiza un software, tiene que (si quiere) diseñar la interfaz, los menús, las imágenes, el texto, el título de su programa entre otros y cuando compila su programa, esta interfaz, menú, imágenes, texto, título se guardan también dentro del ejecutable.

Hay muchos tipos de recursos como: cursores, iconos, bitmaps, imágenes, audio, menús, diálogos, mensajes, cadenas de texto, ventanas, controles etc.y esto es lo que vamos a intentar modificar en un principio. Vamos a ver una simple imagen de la interfaz de un programa cualquiera:

Add PE bytes 011

¿Qué recursos hay ahí? Pues fíjate: 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 cómo programé los recursos y verás todos los que usé:

Recursos en Add PE bytes

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:

Programar recursos

Por ejemplo, si quieres añadir un botón, sólo tienes que pulsar a la derecha en "Button" y seguidamente dibujas el botón en el diálogo.

¿Dónde se guardan los recursos?

Como dije antes, cuando un programador compila su software y usa recursos, éstos se guardan dentro del archivo ejecutable. Como sabes existen cientos de compiladores y cada uno trabaja de un modo diferente: no es lo mismo un programa hecho en Visual Basic 6 que uno hecho en Delphi 6 ya que cada uno guarda determinados recursos en sitios diferentes. Un programa ejecutable para Windows tiene un formato denominado PE (Portable Executable) y se compone de secciones. Hay muchos programas que te permiten ver las secciones, por ejemplo, voy a usar uno propio llamado File Location Calculator v0.3.2 y voy a abrir con él un programa cualquiera para ver sus secciones:

Sección rsrc

Observa la sección .rsrc que he pintado en azul. ¡Ahí se suelen guardar los recursos de un programa generalmente! Y te dirás... ¿por qué se que están ahí? Primero por la experiencia pero para asegurarme voy a mirar en la sección 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 verás que no se corresponde con esto que acabamos de ver e incluso sin ir muy lejos, los recursos en un programa realizado con tecnología NET tampoco es exactamente así y modificarlo nos puede llevar mucho más trabajo. Sin embargo, vamos a ir poco a poco y empezaré con lo más básico. Poco a poco nos iremos adentrándo en otros formatos.

Cómo modificar los recursos

Como te puedes imaginar existen muchos programas que te permiten ver, modificar, renombrar, borrar, extraer y añadir recursos. Todos estos programas se denominan editores de recursos. Como ya dije, podemos encontrarnos con muy diversos programas y lo que un editor de recursos puede modificar otro tal vez no.

Antes de seguir con el tema de los editores de recursos es necesario que sepas que es posible que un programa sea modificado, comprimido, protegido (que veremos y explicaremos más adelante) y por tanto los recursos no se podrán editar tan fácilmente.

En el siguiente tutorial veremos los distintos editores de recursos.

Última actualización: Domingo, 10 Julio 2011
Comentarios  
0 # Alberto !! 27-04-2020 00:20
Buena tarde amigo !! Una pregunta que espero no sea de alguna manera , Tonta !! En Resource Hacker, en cierto programa de mi interes, visualizo una pantalla de este mismo programa, que no la localizo con depuradores Como X64dbg, L pregunta seria , Como seria posible que a partir de lo que veo en Resource Hacker, encontrar el area exacta en X64dbg, cuando lo utilizo para debuguear !!Recuerdo que tu , en un escrito, lograbas encontrar el area especifica usando un solo NUMERO que te mostraba Resource Hacker, y lo mostrabas en el Debbuger , en esa ocasion creo que era el OllyDbg !! Saludos amigo,, espero que me apoyes con algun Tip !! PD: Lo que quiero hacer es que aparezca esa misma pantalla que veo en el Resource hacker de el programa de mi interes, que es una opcion que trae el mismo programa, pero en forma normal, no lo muestra !! Gracias
0 # Editor 27-04-2020 01:21
Depende de muchos factores y si el programa está en .NET o es Windows nativo u otros casos. Si te deja abrirlo con Resource Hacker es porque casi seguro que no tiene packer, así que (seguramente) ya tienes un gran trabajo realizado: no tienes que desempacar. Buscar la ventana depende del compilador. Normalmente lo que se suele hacer es buscar en un depurador x64dbg usas tú, las 'string' referencias y estas te suelen llevan al código de la zona 'caliente'.
Mira a ver primero cómo ha sido compilado y luego echa un vistazo a los tutes de Ricardo Narvaja.
Un saludo.
0 # braverwolf 10-02-2016 22:38
hola, se ve bueno eso de poder modificar la visualización de un programa y agregarle mas cosas. yo tengo, por ejemplo un programa 3d que uso para editar objetos en 3d respectivamente . lo que necesitaría es, saber como coloco mas descripciones a los botones. cuando te acercas a cierto botón te aparece por arriba las teclas de acceso rápido o una descripción.. eso quisiera hacer, y hay opciones q te traen ventanas emergentes, algo que no me gusta porque en la propia interfaz tiene mucho espacio libre q se pudiera aprovechar para colocar ese cuadro allí sin que haya que clickear el botón derecho y tomarlo del menú que se despliega. esto se podrá?? -gracias-
0 # Luis 10-02-2016 23:53
Realizar muchos cambios en un programa puede hacer que falle al utilizarlo.
Lo primero de todo es ver con qué ha sido compilado y programado, ya que de ese modo se puede saber qué herramientoas utilizar para su edición.
0 # dajani 16-01-2016 13:59
Hola karmany. Tengo una pregunta. ¿cómo puedo modificar el software de un equipo electrónico para por ejemplo cambiar la fecha, idioma etc etc? (no es un ordenador ni móvil) Algún tipo de programa que deje modificar el software de aparatos industriales via usb no sé.

Un saludo.
0 # Editor 16-01-2016 20:01
En ciertos casos puede ser complejo. En muchos casos estos programas tienen una puerta abierta para que los programadores de ese sistema puedan modificar la configuración. Yo buscaría información, en nuestro idioma y sobre todo en inglés sobre si es posible acceder de alguna forma.
Observa la placa electrónica, tal vez te muestre quién la hizo y puedas llamar, si existe, a la empresa y preguntarles directamente.

No tiene privilegios para responder a los comentarios.


 
Visitas: 8567582