Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: registrymaster en 23 Septiembre 2010, 10:22 am



Título: Modificar cadenas en programa compilado en Delphi
Publicado por: registrymaster en 23 Septiembre 2010, 10:22 am
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:

(http://i158.photobucket.com/albums/t94/cabecita/Delphi/23-09-201010-14-17.png)

Muchas gracias


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: LSL en 23 Septiembre 2010, 14:23 pm
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, ...


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: karmany en 23 Septiembre 2010, 16:51 pm
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....


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: registrymaster en 23 Septiembre 2010, 22:29 pm
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.



Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: MCKSys Argentina en 23 Septiembre 2010, 23:11 pm
Si quieres aprender a manejar Olly, fijate aqui: http://ricardonarvaja.info/WEB/INTRODUCCION%20AL%20CRACKING%20CON%20OLLYDBG%20DESDE%20CERO/

La mejor forma de empezar....  :P

Saludos!


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: registrymaster en 24 Septiembre 2010, 14:58 pm
Estoy en ello. Es muy interesante el supertutorial. Pero no veo nada para hacer eso. ¿Me podéis guiar un poco?  :P


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: registrymaster en 28 Septiembre 2010, 09:44 am
Por favor ¿me podéis poner un ejemplo? :-(


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: apuromafo CLS en 5 Octubre 2010, 00:50 am
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


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: registrymaster en 5 Octubre 2010, 21:00 pm
Gracias por la respuesta Apuromafo. A qué tutorial te refieres para poder estudiarlo?


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: karmany en 7 Octubre 2010, 22:25 pm
Apuromafo se refiere a este tutorial que me he encontrado de casualidad  ;):
Descarga (http://www.4shared.com/file/6Gu0a9Fk/solucin_mala.html)

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


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: LSL en 8 Octubre 2010, 00:11 am
vaya lujo de detalles, me lo pillo.
aunque yo pocos programas voy a traducir, pero seguro que me servirá para hacer injertos "inline patching". ;)

gracias karmany.


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: registrymaster en 13 Octubre 2010, 19:28 pm
Muchas gracias por tu tiempo y dedicación Karmany   ;-) ;-) ;-) ;-)

Ahora que ya me he leido un poco el manual del OllyDbg y sé por lo menos donde están las opciones más comunes, me pongo con ello ya mismo.

Te lo agradezco de verdad

Un saludo ;)


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: botticheli en 12 Septiembre 2011, 22:08 pm
Muy buenas,

Karmany, tengo una pregunta sobre el tutorial.
Está muy bien hecho, por cierto, aclara muchas dudas... pero en mi caso no existe ningún "push dirección" (ej: push 640f12)  cuando busco "All referenced text string".

Sale directamente esto: ASCII "File" sin comentarios ni nada.

Hay alguna manera de poder modificar el texto añadiendo una plabra con más caracteres?

(Si lo edito en binario lo puedo modificar, y funciona siempre que no añado más de 4 caracteres)


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: .:UND3R:. en 12 Septiembre 2011, 22:32 pm

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

¬¬


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: apuromafo CLS en 13 Septiembre 2011, 01:48 am
¬¬

karmany es autor tambien de esa tool xD


es bueno aveces recordar post antiguos, pero igual es importante, que uno puede leer las string por wdasm,IDA y mas editores hexadecimales  :)

saludos Apuromafo


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: .:UND3R:. en 13 Septiembre 2011, 02:31 am
karmany es autor tambien de esa tool xD


es bueno aveces recordar post antiguos, pero igual es importante, que uno puede leer las string por wdasm,IDA y mas editores hexadecimales  :)

saludos Apuromafo

Por eso puse eso, por que se regalo publicidad xD


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: apuromafo CLS en 13 Septiembre 2011, 04:37 am
es humildad, no publicidad, es moderador de foro, medita que no tienes a cualquier persona revisando los post de las personas...


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: .:UND3R:. en 13 Septiembre 2011, 06:41 am
que pasa con el sentido del humor hoy en día  :-\, da igual sea quien sea moderador,usuario,administrador a todos se les respeta por igual y se bromea con el mismo sentido


Título: Re: Modificar cadenas en programa compilado en Delphi
Publicado por: apuromafo CLS en 13 Septiembre 2011, 13:38 pm
sip, humor extraño, no lo se, no digo que le faltes el respeto ni broma ni nada, pero igual revivir un tema porque alguien creo una tool no esta mal, pero rescatar lo importante del thread si lo puede ser
:)

pd: si quieres te revivo los primeros toppics del foro, pero si no rescato nada y coloco caritas, a mas de alguno me andara enviando privados que deje tranquilo al foro :)


Saludos apuromafo
pd2:es posible revivir muchos temas , pero mientras no le vea utilidad, prefiero no revivirlos.