Modificar cadena en x32dbg

Iniciado por Albertoak, 21 Agosto 2019, 09:56 AM

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

Albertoak

Buenas de nuevo compañeros.

Quiero modificar un numero de serie en en varias direccion con x32dbg. En el cpu me lo modifica(valor de arriba: AH2P83) pero si me quedo encima de la linea me deja el valor antiguo(A1C7Ce59). ¿de que manera puedo modificarlo?? dumpeando??

toda ayuda es muy agradecida.



saludos!!!

s0n1k

Abajo donde pone "DUMP 1" dale "ctrl+g" y pon la dirección "4C2124"
seguido doble clic encima y lo modificas en ASCII

Albertoak

Cita de: s0n1k en 21 Agosto 2019, 12:41 PM
Abajo donde pone "DUMP 1" dale "ctrl+g" y pon la dirección "4C2124"
seguido doble clic encima y lo modificas en ASCII

muchas gracias por contestar compañero.

Si te fijas en la imagen que pongo ahora. Busco la direccion en la dump pero nada que ver tiene a la numeracion A1C7CE59...  :-\


s0n1k

Parece que es un puntero(puente), lee los 4 bytes en Hexadecimal y navega hacia el.

Albertoak

Cita de: s0n1k en 21 Agosto 2019, 18:49 PM
Parece que es un puntero(puente), lee los 4 bytes en Hexadecimal y navega hacia el.

Gracias compañero. Pero me quedo igual... no encuentro el serial por ningun sitio.

MCKSys Argentina

Hola!

Como te han dicho, el string que estás tratando de cambiar se accede por un puntero.

Cambiar el string el tiempo de ejecucion no vale de mucho si el programa lo cambia de nuevo.

El tema es saber que es lo que estas intentando hacer: cambiar un string antes de que se lo compruebe? Despues?

Tu imagen muestra un puntero (direccion de memoria que hace refencia a otra direccion de memoria) a un string, que es el que (al perecer) quieres modificar.

Ademas, para que lo tengas en cuenta, si se trata de un puntero a la sección .data, vas a tener que tener en cuenta las relocaciones (si hay).

Saludos!
MCKSys Argentina

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


EdePC

Saludos,

- Primero tienes que saber que los textos que aparecen en la parte de la derecha, como 4C2124:&L"AH2P83" son solo comentarios, pueden ser propios o automáticos, ayudan a identificar cosas como referencias a Api, Números, Strings, etc.

-- Si haces modificaciones ahí, no afectan al programa en sí, ya que son solo comentarios.

- En la parte central se muestran los detalles de la línea seleccionada.

- También tienes que entender que significa estos detalles o comentarios, en particular te interesa: 4C2124:&L"AH2P83", y esto se lee asÍ:

-- Dirección 4C2124, hay un Puntero (&), es decir, una Dirección donde a su vez hay un String o Texto Unicode* (L) que dice: "AH2P83"

04C2120  00 00 00 00 EC AE 6A 00 7C 39 69 00 00 00 00 00  ....ì®j.|9i.....

-- Ese EC AE 6A 00 es un Puntero a tu Texto, pero recordar también que los datos del Dump se leen de derecha a izquierda (Little Endian) quedando así: 00 6A AE EC o 006AAEEC, ve a esa dirección y deberías encontrar tu Texto, algo así:

006AAEE0  47 00 41 00 54 00 4F 00 53 00 00 00 41 00 48 00  G.A.T.O.S...A.H.
006AAEF0  32 00 50 00 38 00 33 00 00 48 00 4F 00 4C 00 41  2.P.8.3..H.O.L.A


- Me parece que sería mejor usar un Editor Hexadecimal para hacer y guardar la modificación del String, si es que el String no se modifica en tiempo de ejecución ...

* No he encontrado documentación detallada sobre como leer y entender esos símbolos en x64dbg, espero que alguien ponga una referencia, yo entiendo a &L como puntero a un String Unicode XD.

Albertoak

#7
Cita de: MCKSys Argentina en 22 Agosto 2019, 14:33 PM
Hola!

Como te han dicho, el string que estás tratando de cambiar se accede por un puntero.

Cambiar el string el tiempo de ejecucion no vale de mucho si el programa lo cambia de nuevo.

El tema es saber que es lo que estas intentando hacer: cambiar un string antes de que se lo compruebe? Despues?

Tu imagen muestra un puntero (direccion de memoria que hace refencia a otra direccion de memoria) a un string, que es el que (al perecer) quieres modificar.

Ademas, para que lo tengas en cuenta, si se trata de un puntero a la sección .data, vas a tener que tener en cuenta las relocaciones (si hay).

Saludos!

Me temo que ese es mi problema... Cada vez que arranca el programa carga el mismo serial (A1C7CE59). Pero lo carga en un lugar de memoria diferente. Seria inutil cambiarlo ahi...

Por mas que busco no encuentro de el lugar donde recoge dicha numeracion el .exe... podria ser en alguna .dll del programa???

La idea seria modificar ese serial (A1C7CE59) y poner el de mi cable(AK08LS). Para que cada vez que arranque haga la comprobacion con el serial de mi cable y de el OK. Por que tampoco encuentro el salto en el que hace esa comprobacion... si no seria otra opcion.


Cita de: EdePC en 22 Agosto 2019, 14:51 PM
Saludos,

- Primero tienes que saber que los textos que aparecen en la parte de la derecha, como 4C2124:&L"AH2P83" son solo comentarios, pueden ser propios o automáticos, ayudan a identificar cosas como referencias a Api, Números, Strings, etc.

-- Si haces modificaciones ahí, no afectan al programa en sí, ya que son solo comentarios.

- En la parte central se muestran los detalles de la línea seleccionada.

- También tienes que entender que significa estos detalles o comentarios, en particular te interesa: 4C2124:&L"AH2P83", y esto se lee asÍ:

-- Dirección 4C2124, hay un Puntero (&), es decir, una Dirección donde a su vez hay un String o Texto Unicode* (L) que dice: "AH2P83"

04C2120  00 00 00 00 EC AE 6A 00 7C 39 69 00 00 00 00 00  ....ì®j.|9i.....

-- Ese EC AE 6A 00 es un Puntero a tu Texto, pero recordar también que los datos del Dump se leen de derecha a izquierda (Little Endian) quedando así: 00 6A AE EC o 006AAEEC, ve a esa dirección y deberías encontrar tu Texto, algo así:

006AAEE0  47 00 41 00 54 00 4F 00 53 00 00 00 41 00 48 00  G.A.T.O.S...A.H.
006AAEF0  32 00 50 00 38 00 33 00 00 48 00 4F 00 4C 00 41  2.P.8.3..H.O.L.A


- Me parece que sería mejor usar un Editor Hexadecimal para hacer y guardar la modificación del String, si es que el String no se modifica en tiempo de ejecución ...

* No he encontrado documentación detallada sobre como leer y entender esos símbolos en x64dbg, espero que alguien ponga una referencia, yo entiendo a &L como puntero a un String Unicode XD.

como bien dices lo de la derecha pertenece al comentario de esa linea(modificado por mi). Pero como le comento al compañero. De nada me sirve modificarlo en la memoria. Si cuando abra de nuevo el programa, pega el serial en otro lugar de la memoria....

Ando dentro de un rompecabezas, nunca mejor dicho jejejeje










Descubri algo nuevo. En la llamada que muestro en pantalla. Es justo donde mete en memoria el numero de serie que quiero modificar al hacer dicha llamada...




y mas concretamente dentro de esa llamada y luego en esta:







SOLUCIONADO. Me salto la verificacion del serial number del cable y programa operativo. Listo!!!   ;D