Cambiar un String dentro de un ejecutable .exe a uno de mayor tamaño. Corrupto??

Iniciado por rhp07, 20 Noviembre 2014, 15:11 PM

0 Miembros y 1 Visitante están viendo este tema.

rhp07

Hola, estoy intentando cambiar un String dentro de un ejecutable PE .exe usando XVI32. Sin embargo el string que quiero insertar es mayor que el original y descuadra totalmente el direccionamiento dentro del ejecutable y lo deja corrupto, más específicamente deja corrupta la ImportTable (Encuentra una RVA inválida en LordPE).

Hay alguna forma de reparar la tabla de direccionamiento o el ejecutable o alguna forma de modificar el String sin dejar corrupto el ejecutable?

Más detalle a lo que intento hacer:
El programa usa una llamada a Media Interface mediante comandos String tipo "cdaudio start" (Que empezaría reproducir la música de un CD insertado en el lector), sin embargo intento hacerlo funcionar sin tener que usar un CD usando "waveaudio!nombredelwave.wav" en vez de "cdaudio".

Aquí está el archivo de antes y después de ser modificado, sin embargo el segundo sale cómo corrupto. Alguna solución a ello? Un saludo.
https://mega.co.nz/#!gc1FDDpL!mEMQb8xYrhJc6YcgNQ0ceUyhut0zxQNs-X1Um8scobw

MCKSys Argentina

#1
Hola!

No he visto el ejecutable, pero si no puedes cambiar el string, podrias buscar la parte del codigo que hace referencia al mismo y parchearla para que apunte a otro lugar de la sección .data. En ese lugar colocas tu string.

Con eso deberia funcionar...  :)

Saludos!
MCKSys Argentina

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


rhp07

Gracias eso era.
Para los que tienen el mismo problema aquí un tutorial bastante bueno para hacerlo on OllyDbg..
http://nn.nachtwolke.com/dev/ref/strreloc/