Modificar cadenas en programa compilado en Delphi

Iniciado por registrymaster, 23 Septiembre 2010, 10:22 AM

0 Miembros y 2 Visitantes están viendo este tema.

registrymaster

Hola a todos los foreros

Lo primero presentarme, pues soy nuevo en el foro.

Veréis tengo un problema al traducir un programa compilado en Delphi. Ya he traducido todas las pantallas, pero me falta por traducir los mensajes de error o advertencia que muestra el programa en su ejecución.

Por ejemplo intento traducir el siguiente texto: "MAME XML file not set or found!" por "¡No se encontró o no se estableció el archivo XML de MAME!"

La pregunta es: ¿Como puedo añadir mas bytes para traducir todos esos mensajes que no te muestran los editores de recursos, tipo Resource Hacker o Restorator 2007?

Aquí pantallazo:



Muchas gracias

LSL

puedes buscar espacio vacio o añadirle mas bytes o sección con http://foro.elhacker.net/programacion_general/add_pe_bytes_v011-t272401.0.html

en el nuevo espacio, escribes el texto de los mensajes, y con el Ollydbg en el programa desensamblado cuando utiliza la llamada a la direccion offset del mensaje original, cambias esa dirección por la del offset del mensaje traducido.

Quizás tambien tengas que cambiar antes de la llamada, el tamaño hexadecimal de la cadena a leer, ...
Saludos.

LSL.

karmany

Totalmente de acuerdo con LSL, yo haría lo mismo. Yo cambiaría el puntero con OllyDBG de ese mensaje y lo pondría en otro sitio que cupiera, así además tampoco modificas las restantes cadenas.

Y ese programa también me gusta (Add PE bytes) jaja. Muy bueno....

registrymaster

Gracias por vuestras respuestas.

Hasta ahora lo que había hecho era traducir sin tener que añadir más bytes. Esto es nuevo para mí, y me gustaría saber como hacerlo con el Ollydbg. Lo he instalado y bueno, ya he localizado la cadena del ejemplo anterior. ¿Cómo se cambia la dirección del offset? y ¿donde hay que añadir más bytes?

Soy novato en esto, pero siempre que me he encontrado con un archivo compilado en Delphi he tenido el mismo problema.


MCKSys Argentina

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


registrymaster

Estoy en ello. Es muy interesante el supertutorial. Pero no veo nada para hacer eso. ¿Me podéis guiar un poco?  :P

registrymaster


apuromafo CLS

modificar cadena

veamos
401000 hola

si la cadena se muestra gracias a
mov eax,401000
puedo colocar  40102 y dira:  "la"

ahora para modificar una cadena debes diferenciar 2 cosas, es Unicode o es Ascii?
esta comprimido o no?

hay muchas variables que se van aprendiendo en el camino, lo que te comparten es la teoria y luego la practica llega sola,
ahora vamos denuevo

que pasa si coloco
mov eax,500000

pues envio a otra parte, por ende si tu cadenas es mas larga que la original  , pues aprovechas eso,

te apuesto que puedes hacer el primer tutorial de PE , creado por izhelion, donde muestra un mensaje, intenta cambiar el valor del messagebox y de ahi aprenderas como hacerlo..

ahora el como y donde encontrar justo el momento indicado es porque debes aprender a leer..debes leer todo lo escrito y luego opinar .muchos bajan toda la informacion y ni la leen, y despues dicen , pero si ahi estaba.




animo saludos
Apuromafo

registrymaster

Gracias por la respuesta Apuromafo. A qué tutorial te refieres para poder estudiarlo?

karmany

#9
Apuromafo se refiere a este tutorial que me he encontrado de casualidad  ;):
Descarga

PD. Es muy trabajoso modificar el lenguaje de un programa, lo digo por experiencia. Y si dentro de unos días el programa se modifica, ¿Volverías a modificarlo?
Personalmente pienso que el autor tendría que poner algún archivo de lenguaje porque si no dentro de 3 versiones más puedes estar un poco harto de traducir...
En el tutorial donde digo: Le pongo 1000 bytes por section alignment... quiero decir, le pongo 1000 bytes por ser múltiplo de File alignment
Espero te sirva, un saludo.
karmany