Solución:
La mayoría de los microcontroladores en estos días tienen métodos específicos de partes o fabricantes para proteger el código de firmware integrado. Esto generalmente se hace bloqueando los circuitos que normalmente permiten que se lea la memoria del código. (Deberá buscar detalles específicos de la pieza en la hoja de datos o en el sitio web del fabricante en las notas de aplicación correspondientes).
Una vez bloqueado, no es posible leer la memoria del código utilizando técnicas normales. Esto proporciona un nivel razonable de protección para evitar que la mayoría de los piratas informáticos vean el código de la máquina para su aplicación incorporada.
Muchos dispositivos MCU en estos días tienen memoria FLASH incorporada para registrar el código del programa. Un programa previamente almacenado y protegido almacenado en FLASH generalmente se puede reemplazar con un nuevo código, pero se necesita una operación de borrado FLASH de chip completo para desbloquear el mecanismo de protección. Una vez borrada, la pieza funcionará como lo hacía antes del bloqueo de protección original. Si se carga un nuevo programa, generalmente es posible volver a bloquear la pieza para proteger el código de máquina recién cargado.
Cualquier discusión sobre la protección del código en los microcontroladores no estaría completa sin mencionar que generalmente no hay garantía de que cualquier esquema de protección ofrecido por el fabricante de la pieza sea infalible. Los fabricantes incluso afirmarán que los sistemas de protección no son 100% infalibles. Una de las razones de esto es que existe toda una industria del mercado negro en la que, por una tarifa, los piratas informáticos diligentes leerán el código de una parte protegida para cualquiera que quiera pagar. Han ideado varios esquemas que permiten leer el código de las ROM o FLASH en microcontroladores protegidos. Algunos de estos esquemas son increíblemente inteligentes, pero funcionan para tener más éxito en algunas familias que en otras. Así que tenga en cuenta este hecho y luego intente proteger su programa de miradas indiscretas.
Una vez que alguien tiene en sus manos la imagen binaria del código de máquina que se ha leído de un microcontrolador, ya sea un microcontrolador protegido o no, puede procesar el código de máquina a través de una herramienta llamada desensamblador. Esto convertirá los datos binarios nuevamente en código en lenguaje ensamblador que se puede estudiar para tratar de aprender cómo funcionan los algoritmos de su programa. Desmontar con precisión el código de la máquina es un trabajo minucioso que puede requerir una gran cantidad de trabajo. Al final, el proceso puede conducir al código ensamblador como lo describí. Si su programa fue escrito en algún lenguaje de alto nivel como C, C ++ o Basic, el código ensamblador solo representará el resultado compilado y vinculado de su programa. Por lo general, no es posible aplicar ingeniería inversa al código robado hasta el nivel de lenguaje de alto nivel. Los piratas informáticos experimentados pueden acercarse si se les da suficiente tiempo y experiencia.
Lo que esto significa es que, en realidad, es beneficioso escribir el firmware de su aplicación integrada en un lenguaje de alto nivel. Proporciona otra capa que dificulta la ingeniería inversa completa de su programa. Se puede obtener un beneficio aún mayor utilizando el más alto estado de la técnica en la optimización de compiladores para compilar la aplicación integrada porque los optimizadores de mayor rendimiento pueden convertir literalmente el programa en un enorme cuenco de espagueti lleno de docenas de llamadas a subrutinas cortas que son muy difíciles. descifrar en un desensamblador.
Los desarrolladores integrados más experimentados le dirán que siga adelante y use cualquier esquema de protección que se ofrezca en la MCU en su aplicación … pero que no dependa de él hasta el final del camino para su producto. Le dirán que la mejor manera de mantenerse por delante de la competencia es actualizar constantemente su producto para que las versiones anteriores estén desactualizadas y no sean interesantes para cuando los piratas informáticos hayan clonado su código. Cambie el código, agregue nuevas funciones, haga girar sus placas de PC de vez en cuando para intercambiar todas sus E / S y cualquier otra cosa que se le ocurra. De esta forma puedes ganar la carrera siempre.
Creo que la respuesta de Michael es suficiente para esta pregunta, pero agrego estos dos enlaces: Hackear el PIC 18F1320 y Todo lo que hacen, ¡podemos romper! Ambos me resultaron muy interesantes.