Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - karmany

#1231
GENERALIDADES:

Ejecutamos el programa "ResHacker.exe".
Vamos a echar un vistazo general a su ventana de inicio:


Imagen06

Observamos primeramente que la pantalla está dividida en dos:
Izquierda en blanco, derecha en un color crema.

Vemos también una sencilla barra de herramientas:
Archivo, Editar, Ver, Acción, Ayuda.
Esto no merece más explicación, no voy a adentrarme en todos sus submenús, ya se irán viendo.

El programa puede abrir archivos .exe .dll .ocx .cpl .scr y .res. Archivos ejecutables win32. Las limitaciones vienen bien explicadas en su página oficial.

Vamos a darle a abrir y seleccionamos el programa "copia.exe":


Imagen07

Nos han salido a la izquierda 9 carpetas. Esas carpetas dependen del archivo y del programa con que ha sido compilado el archivo: Visual Basic, C++ , Delphi, etc., aunque normalmente algunas suelen ser similares.

Estas carpetas contienen lo que el programa llama recursos. (Resource).

Podemos encontrar algunas de las siguientes carpetas con los siguientes recursos:

GIF o AVI:
Aquí encontraremos como su nombre indica los archivos .gif o .avi que encontraremos en el programa. Como ejemplo, en el programa que hemos abierto, vamos a ayuda --> acerca de... y encontraremos un .gif (Un martillo golpeando las letras Resource Hacker).

Cursor y Cursor Group: Son los cursores que hay en el programa. Como ejemplo, pon el puntero del ratón entre la línea que separa la parte de color blanca y la parte de color crema.

Icon e Icon Group: Son los iconos del programa. Como ejemplo, el icono del ejecutable y el icono que vemos en la esquina superior izquierda de la ventana.

Bitmap: Como su nombre indica son los archivos en mapa de bits. Son las imágenes que el programa utiliza. Como ejemplo abrimos la carpeta Bitmap y vamos a SMALLICONS y pulsamos en 0. Ahí encontramos las imágenes de carpeta cerrada, abierta y la imagen de color amarilla o blanca de si estamos viendo un recurso o no.

String Table: Son las frases que aparecen cuando el programa identifica algún error, problema o indica algún aviso. Como ejemplo vamos a String Table y a 4077. A la derecha veremos en 65219: "Los recursos han sido modificados, ¿desea guardar los cambios?". Ésta es la frase que aparecerá cuando modifiquemos un recurso y por ejemplo cerremos el programa sin haberlo guardado.

RCData: Aquí están los cuadros de diálogo. Este apartado es característico de los programas realizados con Delphi (como el Resource Hacker). Como ejemplo vamos a RCData y a TABOUTFORM. Ahí encontraremos en la 6º línea Caption = 'Acerca de'. Este "acerca de" es el título de la ventana que hay en ayuda --> acerca de...

Versión Info: Seguro que se os habrá escapado algún detalle... Cuando pulsáis en el icono del ejecutable con el botón derecho y seleccionáis propiedades o cuando dejáis el icono del ratón sobre el icono del ejecutable, veis que muchas veces se indica nombre del programador versión... etc...pues aquí las tenéis para modificarlas a gusto.

Hasta aquí se ha descrito el contenido de las 9 carpetas, pero como he señalado en el "Resource Hacker" pueden aparecer otras carpetas:

Dialog: En esta carpeta encontraremos los cuadros del diálogo del programa. Pero lo bueno que tiene esto es que en nuestro programa "Resource Hacker" aparecerá al lado del botón "Compilar Script" otro que dice "Mostrar (u ocultar) Diálogo". De esta forma para modificar el tamaño de las ventanas, botones etc... podremos hacerlo gráficamente.

Hay algunas carpetas más que aparecen, algunas con valores hexadecimales que no contienen información aparente. Otras carpetas contienen también información importante, pero explicando las ya descritas yo creo que es más que suficiente para adentrarnos en el programa

#1232
Resource Hacker versión 3.4.0.79 y Resource Hacker (beta) versión 3.5.2

Bueno, antes de todo decir que este editor de recursos ya tiene varios bugs que el autor no quiere solucionar, pero que para explicar el funcionamiento de los editores de recursos, pues es una herramienta muy fácil de utilizar.

Su página oficial es:
http://www.angusj.com/resourcehacker/
Realmente la versión con la que he hecho este tutorial es la versión 3.4.0.79, pero el autor hizo una excepción y saco una nueva versión el 19 de diciembre de 2009 (v.3.5.2) para analizar recursos a 64bits.
Resource Hacker v.3.5.2:
http://www.angusj.com/resourcehacker/reshack_setup.exe

Resource Hacker v.3.4.0.79 (original en inglés):
http://delphi.icm.edu.pl/ftp/tools/ResHack.zip

Resource Hacker v.3.4.0.79 en español:
http://www.karmany.net/index.php/ingenieria-inversa/32-herramientas/23-resource-hacker-34079-spanish
Un programa que seguro que va a quitar muchas horas de sueño a muchos.

Para este tutorial he usado la v.3.4.0.79 traducida a español, que te he puesto en descarga.

Para que todo el mundo pueda seguir este tutorial, se me ha ocurrido la idea de trabajar con el mismo ejecutable de este programa. Así pues, lo primero que haremos y es lo que hay que hacer siempre es copiar el archivo a modificar, en este caso "ResHacker.exe" y lo pegamos por ejemplo en el escritorio. Yo le he cambiado el nombre para no equivocarme: "copia.exe".

PD. Quisiera comentar que le mandé al autor de Resource Hacker varios emails pidiendo que siguiera con el proyecto y corrigiera los bugs. Como vi que Angus ha seguido programando, a mediados de marzo de 2007 se lo volví a pedir por última vez y me respondió lo siguiente:
-"No, I have no plans to update Resource Hacker. Sorry.
Angus"
Una lástima, no quiere ni dejar el código fuente para que otros puedan seguir el proyecto. Bueno, respeto su opinión aunque no la comparto y ya no se lo volveré a pedir más.
#1233
¿QUÉ FINALIDAD TIENE MODIFICAR UN RECURSO?

La finalidad que más he oído repetida es para modificar el idioma a un programa. Es una idea interesante. Mi experiencia y la de otras personas que se lo han llegado a tomar también en serio es que es un trabajo muy pero que muy costoso..
El que haya traducido un programa entero y luego haya visto recién sacada una versión posterior a la traducida, sabe de lo que hablo.

Pero hay muchísimas otras finalidades:
-Imaginemos un programa gratuito y sin licencia (que es mío y me acabo de inventar) que cada vez que lo abrimos nos aparece una ventana que dice:


Imagen03

Bastará que podamos encontrar dicha ventana y la suprimamos (y que se pueda claro..).

-Podemos dar a nuestros programas nuestro toque personal.. podemos insertarle alguna imagen que nos guste, nuestro nombre etc...

-Hay mucha gente también que se dedica a modificar la interfaz de un programa y luego hacen suyo el trabajo de los demás..
Voy a explicar esto último con un ej. muy sencillo:
Por ej. tengo este programa:


Imagen04

Muy sencillo que pone que introduzca una password..
Voy a modificarlo rápidamente y queda esto otro:


Imagen05

Impresionante y es el mismo programa de arriba..
-En fin, podéis hacer las cosas que vuestra imaginación proponga y la limitación de estos programas tengan.

¡Vamos a empezar con el primer programa!.

Toda la información de este tutorial es personal y de mi experiencia con los programas, también he añadido algunas cosas de los archivos de ayuda. Todo este link se va modificando y corrigiendo errores enlaces e imágenes.
   
Antes de comenzar:
"Como todos sabemos, los programas son propiedad de sus desarrolladores y éstos conceden autorización para el uso de sus aplicaciones bajo unas condiciones o términos que, normalmente, vienen reflejados en la Licencia del programa. Si en la citada licencia viene expresamente prohibido la traducción del programa, debemos de abstenernos de confeccionarla, salvo que solicitemos (y obtengamos) la pertinente autorización de aquellos que legalmente estén capacitados para concederla."

En definitiva, no hagáis cosas ilegales. karmany
#1234
¿QUÉ SON LOS RECURSOS DE UN PROGRAMA?

Los recursos son elementos de la interfaz que proporcionan información al usuario. Los mapas de bits, los iconos, las barras de herramientas, los cursores son ejemplos de recursos.
Con estos programas pues, lo que podemos hacer es ver, modificar, renombrar, añadir, borrar y extraer recursos de ejecutables EXE (algunos a 32 bits otros a 16), (DLL y OCX). Se pueden ver los cursores, iconos, bitmaps, imágenes GIF, AVI y JPG. También se pueden escuchar los recursos de audio WAV y MIDI y ver o modificar los Menús, Diálogos, Mensajes, Strings, etc.
A veces estos programas no encuentran todos los recursos, y por lo tanto estas veces será imposible modificarlo. Otras veces un programa reconoce un recurso que otro programa no encuentra.

Seguro que habrá alguno que todavía no entiende qué es un recurso, voy a poner el primer ej.:
Imaginemos un programa que tiene un menú y al pulsar en File vemos lo siguiente:


Imagen01

Vemos que el menú File consta solamente de Open...
Podemos hacer una cosa sencilla por ej. que es modificar el idioma a nuestro gusto y queda por ejemplo así:


Imagen02

Ahora ya se entiende mejor, ¿verdad?

¿Dónde se guardan normalmente los recursos?
Normalmente se guardan en la sección de recursos. Si analizas un ejecutable o un archivo PE con un visor de encabezado (visor PE) verás que en la mayoría de ellos aparece una sección con el nombre .rsrc. En esa sección es donde los programas editores de recursos buscan los mismos.

Para los programas hecho en NET es un tanto diferente. Existen editores de recursos capaces de modificar ciertos recursos para estos programas, pero no es tan sencillo como en los de código nativo. Pondremos algún ejemplo.

#1235
INTRODUCCIÓN

Primeramente decir que este tutorial está encaminado principalmente a saber modificar los recursos  del programa que queremos analizar. Sin embargo, a veces modificar un recurso requiere tener conocimientos de ingeniería inversa... pero no siempre...

Hace ya bastante tiempo, en el foro de Uptodown que ya ni existe, hice un sencillo tutorial del manejo de un programa para editar recursos: Resource Hacker 3.4.0.79.
Nada más publicar aquel tutorial, recibí muchos mensajes de gente que me pedía ayuda para modificar los recursos de algunos programas, cosa que a veces era muy complicada y muchas veces imposible (desde un editor de recursos, sin usar debugger y dada mi poca experiencia de entonces).
Ese tutorial lo modifiqué con el tiempo guardándolo en mi ordenador, agregando información también de otros programas y de la experiencia que iba adquiriendo, y hoy después de todo este tiempo, y después de que varias personas hace poco me hayan pedido que les envíe el tutorial vuelvo a reeditarlo para colgarlo aquí.

Todos estos programas son muy parecidos en su manejo, así que con este tutorial lo que pretendo es:

1) Saber qué son los recursos de un programa.
2) Por qué es interesante poder modificarlos.
3) Explicaré con bastante detalle el manejo de un programa y posteriormente explicaré algunas características muy interesantes, de otros dos programas que también utilizo mucho.
4) Cuando un editor de recursos no puede modificar un recurso, ¿qué puedo hacer?


Para que no se pierda ninguna descarga con los hosting gratuitos y temporales, os pongo este enlace a mi Web de un archivo zip bien ordenado con todas las descargas de este tutorial:
Enlace


En los ejemplos 1 y 2, he usado un antiguo packer denominado Embryo Patcher. Dicho software es actualmente considerado por los antivirus como malware, aunque de forma errónea (falsos positivos). Pero como son necesarios para seguir el tutorial y como alguno me lo ha solicitado, os dejo un enlace con un archivo rar cifrado en descarga:
Descarga ejemplo 1 y 2
Contraseña del archivo rar: elhacker.net

karmany
#1236
Ingeniería Inversa / Re: necesito ayuda
3 Agosto 2006, 18:29 PM
Hola xxBIOSxx..
Mira he estado echando un vistazo al programa, y la verdad que no lo he visto nada fácil..

Lo primero porque incluso es complicado saber con qué programa ha sido compilado. Si estuviese por ej. en VB o C o ASM o Delphi u otro conocido, pues ya más o menos te haces una idea, pero está compilado en otro que yo no conozco.

Lo he mirado "por encima" y he intentado buscar la ventana de error: "El número de serie que proporcionó es incorrecto"... Lo he abierto con un programa para modificar los recursos y SI que vienen las string después de registrarlo:"Felicidades! ..." pero no las encuentro en el Olly..

Me he fijado que tras poner el nombre tienes que pulsar en siguiente y después cuando pulsas los dígitos y pones el último, si es incorrecto sale una nag, es decir, que me imagino que tecla que pulsas tecla que comprueba...

Para mí es complicado, puede llevar muchas horas, yo de momento lo dejo aquí...
Un saludo
#1237
Te voy a dar otra solución que no busca el vbCrLf, así te aparecerá tal como lo pusiste en el textbox..
1 formulario, 1 botón y un textbox:

Lo primero yo he dibujado un textbox con esto:
height 1575
left 480
top 480
width 2175.

El interesante código es el siguiente( así te evitas buscar vbCrLf, ya que muchas veces no cabe en una linea de un textbox):
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Sub Command1_Click()
    Dim i As Long, nlineas As Long
    Dim inicio As Long, longitud As Long
    Dim frase As String
   
    ' Constantes SendMessage:
    Const EM_GETLINECOUNT = &HBA
    Const EM_LINELENGTH = &HC1
    Const EM_LINEINDEX = &HBB
   
    ' Calcula el número de líneas del textbox
    nlineas = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0, 0&)

    For i = 0 To nlineas - 1
        ' Calcula el primer carácter de la linea actual:
        inicio = SendMessage(Text1.hwnd, EM_LINEINDEX, i, 0&) + 1
        ' Calcula la longitud de la línea actual
        longitud = SendMessage(Text1.hwnd, EM_LINELENGTH, inicio, 0&)
        frase = frase + Mid$(Text1.Text, inicio, longitud) + "%0A"
    Next i
   
    Call ShellExecute(Me.hwnd, "Open", "mailto:xxx@xx.com?bcc=&subject=Probando Mailto&body=" + frase, "", "", vbNormalFocus)
End Sub

Private Sub Form_Load()
Text1.Text = "Quijote 2006:" + vbCrLf + "En un lugar de" + vbCrLf + "la mancha, de cuyo nombre no quiero acordarme..."
End Sub


Así que al ejecutar el programa aparece esto:


Y al pulsar el botón:


Ya contarás, un saludo..
#1238
Mira, la verdad que el código es algo complicado a primera vista para intentar ver dónde puede estar el problema.. pero bueno he probado el programa y...
A mí no me da ninguna clase de error..

Es decir, he cogido un ejecutable que tenía un .ico de 32x32 a 256 colores.
-Se lo he cambiado por otro de 32x32 a 256 colores y sin problema.
-Se lo he cambiado por otro de 16x16 a 256 colores y sin problema.
-Se lo he cambiado por otro de 32x32 a 16 colores y sin problema.
-Se lo he cambiado por otro de 16x16 monocromo y tampoco me ha dado problemas..

Después he cambiado el icono original de 32x32 y le he puesto uno de 16x16 a 256 y he hecho un montón de cambios también y no me ha dado ningún problema..

Tal vez esté equivocado pero se trata de cambiar el icono del ejecutable no?? (esque da ambigüedad eso que dices de editar el icono ...)

PD. Lo que sí he comprobado por ej. es que si un programa como suele ser normal tiene varios iconos, se pierden todos y los modifica por el del ejecutable..
#1239
Software / Re: Grabar audio de internet
24 Julio 2006, 22:25 PM
Lo acabo de probar y no sé configurarlo para que grabe por ej. el domingo desde las 9:00 hasta 10:30.. de verdad que se puede?

PD. para edición de audio yo utilizo el soundforge..
#1240
Software / Re: Grabar audio de internet
24 Julio 2006, 22:04 PM
He revisado el programa que tengo y sí es gratuito, pero tiene un incoveniente.. y es que no puedes seleccionar el día de la grabación. Puedes grabar el programa con 24h solamente de adelanto.
El programa es este SoundCopy, que es un programa muy sencillo para grabar temporizando y lo puedes descargar gratuito de aquí:
http://www.measureandconvert.com/prod07.htm

Lo acabo de probar y para grabar lo que quieres pues va bien y te lo graba pero lo que te comento con 24 horas..
Estoy seguro que tiene que haber otro programa por ahí, yo otro ya no conozco pero voy a echar un vistazo..

PD.No he utilizado el programa que dice the UnKnOwN cHaRa, podrías mirar a ver..