Autor Tema: Desamblar código *.hex  (Leído 8162 veces)

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

Desconectado Picolson

  • PIC10
  • *
  • Mensajes: 16
Desamblar código *.hex
« en: 15 de Julio de 2008, 01:28:33 »
Hola:

Aquí tengo un código que hice muy pequeño.
He intentado desamblar alguno pero grande y no soy capaz de saber que PIC usa, ni configuración, sólo las instrucciones.

Los dejo aquí el código que hice muy pequeño a ver si alguien sabe desamblarlo y hacerlo funcionar en el MPLAB, lo he probado con v8.14. Al menos saber que hace este programa que hice.
Código: [Seleccionar]
:020000040000FA
:1000000083168601FF308500831286018501051C59
:0E0010000C28061386170728061786130728E4
:02400E00F13F80
:00000001FF

Saludos.

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: Desamblar código *.hex
« Respuesta #1 en: 15 de Julio de 2008, 01:45:03 »
Aquí tengo un código que hice muy pequeño.
 Al menos saber que hace este programa que hice.

que es?, un desafio?, como es eso de que haces un programa y no sabes que hace?

no entiendo que es lo que buscas?

  bsf     0x03 , 5
    clrf    0x06
    movlw   0xFF
    movwf   0x05
    bcf     0x03 , 5
    clrf    0x06
    clrf    0x05
    btfss   0x05 , 0
    goto    0x0C
    bcf     0x06 , 6
    bsf     0x06 , 7
    goto    0x07
    bsf     0x06 , 6
    bcf     0x06 , 7
    goto    0x07
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado Picolson

  • PIC10
  • *
  • Mensajes: 16
Re: Desamblar código *.hex
« Respuesta #2 en: 15 de Julio de 2008, 02:04:37 »
Hola, me he explicado mal.

Hice un programa que entiendo, pero doy por hecho que no lo he visto nunca con el motivo de cómo averiguar el código que eso por lo menos si se, pero no la configuración de code proted, etc...ni el pic exacto. Es para saber cómo resuelven ese problema. Digamos, para descompilarlo bien y meter el código que sirva en el MPLAB. Lo que has descompilado está bien pero incompleto, ya que si intentas meter eso así sin saber que PIC usas, pues...

Lo que quiero es aprender como hacerlo.

Gracias.
« Última modificación: 15 de Julio de 2008, 02:07:32 por Picolson »

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: Desamblar código *.hex
« Respuesta #3 en: 15 de Julio de 2008, 14:35:06 »
Si el code protect está activado (cosa problable si quieres leer programa en pic ajeno) no podrás leer ni código,ni fuses,ni nada.
En caso contrario,los fuses los puedes localizar en posiciones de memoria concretas que puedes consultar en el datasheet del micro.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Desamblar código *.hex
« Respuesta #4 en: 15 de Julio de 2008, 14:59:13 »
si el programa es tan corto y lo haz hecho tu, porque no intentas hacerlo nuevamente?

pero bueno, el winpic puede hacer ese truco, pero nose si es tan a ciegas y hasta sin saber para que pic es, porque cuando cargas el .hex, puedes ver el .asm en una de las ventanas.
.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Desamblar código *.hex
« Respuesta #5 en: 15 de Julio de 2008, 17:44:18 »
Uy, uy, uy.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Desamblar código *.hex
« Respuesta #6 en: 15 de Julio de 2008, 22:29:40 »
Cuando descompilas un programa obtienes información sobre el programa, pero para poderlo descompilar correctamente necesitas saber el tipo de micro que es, ya que si no te puede dar errores al decompilarlo (te encuentras con instrucciones que no son soportadas por el micro que creías). Pero lo que tienes que tener claro es que de forma directa no puedes saber el micro y los fuses a partir del código ensamblado.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Picolson

  • PIC10
  • *
  • Mensajes: 16
Re: Desamblar código *.hex
« Respuesta #7 en: 16 de Julio de 2008, 03:17:15 »
¿Aquí no te dirá algo de Fuse o configuración por casualidad? 

 
Código: ASM
  1. ORG 0x2000       ; ID
  2.  
  3.        Data   0x3FFF
  4.        Data   0x3FFF
  5.        Data   0x3FFF
  6.        Data   0x3FFF
  7.  
  8.      ORG 0x2007       ; CONFIG
  9.  
  10.        Data   0x3FF1

En el Hex está el CD, WDT, PWRT, oscilador, etc porque a parte que lo he comprobado cargando los pic, se coloca en la configuración donde lo había guardado en los ic-prog por ejemplo.



He encontrado algo, espero que de paso os sirva de algo.

http://www.geocities.com/dinceraydin/pic/djdasm/djdasm.html

« Última modificación: 16 de Julio de 2008, 03:31:46 por Picolson »

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Desamblar código *.hex
« Respuesta #8 en: 16 de Julio de 2008, 04:03:06 »
Uy, uy, uy.

Echo: Uy, uy ,uy. :D :D :D

El Hex puede contener la configuración de los fuses. Pero hasta donde se, no contiene para qué PIC ha sido generado.

"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Picolson

  • PIC10
  • *
  • Mensajes: 16
Re: Desamblar código *.hex
« Respuesta #9 en: 16 de Julio de 2008, 07:39:23 »
Uy, uy, uy.

Echo: Uy, uy ,uy. :D :D :D

El Hex puede contener la configuración de los fuses. Pero hasta donde se, no contiene para qué PIC ha sido generado.



Hola Uy, uy , uy:

La verdad es que si y también una pena, porque así no hacemos casi nada, solo investigar.

Este PIC es el popular de siempre, 16F84A

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: Desamblar código *.hex
« Respuesta #10 en: 16 de Julio de 2008, 15:40:20 »
Ok a los comentarios, ok a los fuses, yo lo que hice, fue levantar el .HEX con el winpic 800, pero cargué a mano y "supuse"  que era un F84, ya que como dice Bruno, el "tipo" de micro, no esta especificado en el .hex, y en la pagina que nos colocas el link dice claro "Dincer's JavaScript PIC Disassembler for 16F84 v1.02"

cuando en el winpic ingrese a la ventana de wdt, osc , code protec etc... estos están seteados segán tu hex...  :-/

pero si tienes un hex, tienes que conocer a que micro se lo vas a cargar... sino... sera cualquier cosa  :mrgreen:

Un abrazo

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado Picolson

  • PIC10
  • *
  • Mensajes: 16
Re: Desamblar código *.hex
« Respuesta #11 en: 17 de Julio de 2008, 01:25:33 »
pero si tienes un hex, tienes que conocer a que micro se lo vas a cargar... sino... sera cualquier cosa 

Lo único son los PIC que no dicen que son, los fuses si los guardas.

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Desamblar código *.hex
« Respuesta #12 en: 05 de Agosto de 2008, 09:03:47 »
Si el code protect está activado (cosa problable si quieres leer programa en pic ajeno) no podrás leer ni código,ni fuses,ni nada.
En caso contrario,los fuses los puedes localizar en posiciones de memoria concretas que puedes consultar en el datasheet del micro.

Cuando descompilas un programa obtienes información sobre el programa, pero para poderlo descompilar correctamente necesitas saber el tipo de micro que es, ya que si no te puede dar errores al decompilarlo (te encuentras con instrucciones que no son soportadas por el micro que creías). Pero lo que tienes que tener claro es que de forma directa no puedes saber el micro y los fuses a partir del código ensamblado.

Uy, uy, uy.

Echo: Uy, uy ,uy. :D :D :D

El Hex puede contener la configuración de los fuses. Pero hasta donde se, no contiene para qué PIC ha sido generado.

Ok a los comentarios, ok a los fuses, yo lo que hice, fue levantar el .HEX con el winpic 800, pero cargué a mano y "supuse"  que era un F84, ya que como dice Bruno, el "tipo" de micro, no esta especificado en el .hex, y en la pagina que nos colocas el link dice claro "Dincer's JavaScript PIC Disassembler for 16F84 v1.02"

cuando en el winpic ingrese a la ventana de wdt, osc , code protec etc... estos están seteados segán tu hex...  :-/

pero si tienes un hex, tienes que conocer a que micro se lo vas a cargar... sino... sera cualquier cosa  :mrgreen:

Te lo voy a repetir una vez más, por si no entendiste.

En la palabra de CONFIGURACION, no se guarda para que tipo de micro es el programa. ¿No nos crees?, fijate el datasheet de cualquier PIC, y fijate si se puede guardar el tipo de PIC.

La palabra de configuración, solo trae la configuración del micro, si trabajas con oscilador interno o no, que tipo de oscilador, si trabajas con el MCLR o no, etc. Wue irán variando según el pic. Y como te dijeron, si no sabes de que pic es el programa, no te sirve para nada descompilrlo.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.