No, a ver, os explico un poquito. Realmente el programa se puede conseguir, pero es tan complicado que hay gente que se plantea si merece la pena. Me imagino que algún friki tendrá manera de hacerlo fácilmente, pero entre toda la información que encontré por internet nadie daba solución alguna.

Tú no puedes llegar al chip y sacar el .hex o el .bin (lo que viene siendo el programa en código hexadecimal ó máquina) así por las buenas. Existen digamos "contactos internos" o transistores en el microcontrolador que si los quemamos hacen imposible la salida del programa. Y este tipo de chips vienen siempre protegidos de esta manera.

¿Qué es lo que se puede hacer entonces? Recurrir a la ingeniería inversa. Lo que se haría es plantar el chip en un banco de pruebas y someterle a todas las posibles combinaciones de entrada de datos, anotando a su vez todas las correspondientes salidas. Con esto los que conseguimos es una tabla con relación de datos entrada/salida. Lo que nos queda entonces es utilizar alguno de los métodos matemáticos que existen de interpolación, ajustes y demás para deducir una serie de ecuaciones que los relacionen.

Lo más probable entonces es que el programa que hemos obtenido funcione, pero dar por seguro que no será igual al original. Y dado que todo este tipo de cálculos no son exactos, luego tendremos que hacer ajustes a la realidad para poder sacar algo que sea programable. Pero los ajustes podemos hacerlos en una dirección o en otra, y casi nunca en estos casos se puede saber con certeza hacia donde ajustar dada las complejidad de los mapas que se utilizan.

Bueno, un rollazo de la ostia para nada, para decir que sacar la información de un PIC de fácil tiene poco, jajaaj.

Saludetes.