La mayoría de los microcontroladores en estos días tienen métodos específicos de parte o fabricante para proteger el código de firmware incorporado. Esto se hace generalmente bloqueando los circuitos que normalmente permiten leer la memoria de códigos. (Tendrá que 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 usando técnicas normales. Esto proporciona un nivel de protección razonable para evitar que la mayoría de los piratas informáticos vean el código de máquina de su aplicación incrustada.
Muchos dispositivos MCU en estos días tienen memoria FLASH integrada para marcar 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 de FLASH de chip completo para desbloquear el mecanismo de protección. Una vez borrada, la pieza funcionará como lo hizo 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 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 declararán que los sistemas de protección no son 100% seguros. Una de las razones de esto es que existe 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 cualquier persona que quiera pagar. Han diseñado 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 lograr un mejor éxito en algunas familias que en otras. Por lo tanto, tenga en cuenta este hecho e 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 leyó en un microcontrolador, ya sea que se trate de un microcontrolador protegido o no, pueden procesar el código de máquina a través de una herramienta llamada desensamblador. Esto convertirá los datos binarios en un código de lenguaje ensamblador que puede estudiarse para tratar de aprender cómo funcionan los algoritmos de su programa. Hacer un desmontaje preciso del código de la máquina es un trabajo minucioso que puede requerir grandes cantidades de trabajo. Al final, el proceso puede llevar al código del ensamblador como describí. Si su programa fue escrito en un lenguaje de alto nivel como C, C ++ o Basic, el código de ensamblaje solo representará el resultado compilado y vinculado de su programa. En general, no es posible aplicar ingeniería inversa al código robado hasta el nivel de lenguaje de alto nivel. Los hackers experimentados pueden acercarse si se les da suficiente tiempo y experiencia.
Lo que esto significa es que realmente es un beneficio escribir el firmware de su aplicación integrada en un lenguaje de alto nivel. Proporciona otra capa que hace que sea más difícil que su programa tenga una ingeniería inversa completa. Se puede obtener un beneficio aún mayor utilizando el más avanzado estado de la técnica en la optimización de compiladores para compilar la aplicación integrada, ya que los optimizadores de mayor rendimiento literalmente pueden convertir el programa en un gran tazón de espaguetis lleno de decenas de llamadas a subrutinas cortas que son muy difíciles Descifrar en un desensamblador.
La mayoría de los desarrolladores incorporados con experiencia le dirán que siga adelante y utilice cualquier esquema de protección que se ofrezca en la MCU en su aplicación ... pero no dependa de él hasta el final de la ruta para su producto. Le dirán que la mejor manera de adelantarse a la competencia es actualizar constantemente su producto para que las versiones anteriores estén desactualizadas y sean poco interesantes para cuando los hackers hayan clonado su código. Cambie el código, agregue nuevas funciones, gire las placas de su PC de vez en cuando para intercambiar todas sus E / S y cualquier otra cosa que pueda imaginar. De esta manera puedes ganar la carrera cada vez.