Boa noite pessoal, sou novo no fórum, estou desenvolvendo um projeto com uma empresa para criar um produto a ser exportado pelo Brasil todo, no caso do projeto estou optando, por enquanto, a utilização do PIC 18f4620. Porém a partir de pesquisas minhas feitas pela internet e conversas com meus colegas, parece haver formas de burlar a segurança para o PIC 18 e adquirir o código do programa, o que seria um grande problema, já que o programa em si é a chave para o produto. Dessa forma meu colega me recomendou a utilização do PIC 24 e PIC32 para maior segurança. Porém o problema da utilização destes seria a necessidade da importação dos produtos, que todos sabem, é complicado no Brasil, não encontrei ainda uma loja para adquirir estes tipos de PIC no Brasil, fácil exportação e com PICs populares dessas famílias.
A minha pergunta seria, o que vocês recomendam que seria a melhor atitude a ser tomada? Uma migração para outra família do PIC, para ter a maior segurança no projeto e enfrentar a problematização das importações de produtos exteriores (caso ninguém conheça um local pelo menos online para compra destes produtos), ou vocês acham que a segurança disposta pelos PIC 18 é o suficiente para ser feita a venda do produto por todo o país? Gostaria de avaliar esses prós e contras para tomada de decisão
Obrigado à quem puder ajudar
Olá @thiagomg95 todo fabricante de MCU se preocupa com segurança e, por isso, até onde eu sei, a maioria (senão todos) os fabricantes disponibilizam, no mapa de memória do seu produto os chamados LOCK BITS e um dos objetivos destes é prevenir que alguém com intuito malicioso, adquira uma cópia do firmware compilado, já que, de posse deste binário, o produto poderá ser clonado, podendo causar prejuízos gigantescos aos clientes do fabricante e arruinando a reputação do mesma.
LOCK BITS de forma bem simples, são bits de configuração do MCU que servem para definir vários comportamentos deste. em MCU’s da Atmel, isto é também chamado de FUSE PROGRAMMING e, como pode ver neste link, é facilmente acessível pela IDE Atmel Studio, quem usa LUFA ou AVR GCC, pode importar um header específico que dá acesso a este tipo de configuração programáticamente.
Para a sua questão específica: Em MCU’s da Atmel, existe um bit chamado Security Bit, para todos os efeitos, ele é um LOCK BIT mas tem um comportamento especial que, se você setar, a memória do MCU ficará travada para acesso externo, não poderá ser feita uma leitura externa do firmware, o chip precisará ser completamente apagado para que possa ser acessível novamente para programação ou leitura externa.
Como isso funciona em PIC, eu realmente não sei, pois, apesar da vontade, nunca peguei um PIC para trabalhar, mas tenho absoluta certeza que a IDE oficial tem métodos bem semelhantes para setar este tipo de proteção.
Existe uma forma de burlar isso? Provavelmente existe, já vi vários artigos referentes a isso, mas não é nada trivial, mas é perfeitamente possível, a placa de desenvolvimento Teensy, por exemplo, tem este tipo de trava setado para proteger o seu bootloader e até hoje não vi clones dela, claro, há produtos que levam o mesmo nome, para se aproveitar da fama, mas não tem o bootloader da Teensy original.
Obrigado pela resposta,
Um dia um professor meu comentou que existe uma maneira de apagar todo o conteúdo do Chip do PIC caso ele fosse retirado do suporte ou placa, vocês sabem alguma coisa sobre isso?
Olá Thiago, a página 249 do Data Sheet do PIC18F4620, diz que ele possui Code Protection. Porém acho melhor usar, se for possível, um microcontrolador de 32 bits como o PIC32MM0064GPL028-I/SP, por ser mais barato, mais moderno e ainda contar com o MPLAB® Harmony que fornece um conjunto de bibliotecas de periféricos de uso facilitado.
Também precisa excluir o conteúdo do chip, use o quadro https://www.allicdata.com/list.html?category_id=1816
Amigo já participei de vários projetos de engenharia reversa e posso dizer que na maioria dos casos a abordagem da engenharia reversa não se dá por estes meios.
Essa de tentar chupinhar código é uma péssima idéia e vou explicar o pq o que está no microcontrolador é o código já compilado. E isso por si se porventura precisar alterar algo ferrou.
A abordagem é á seguinte tem um produto ou uma maquina e vc precisa de outra igual, é feito da seguinte maneira, com uma equipe multidiciplinar o desenvolvedor vai fazer uma (árvore de estados de todas entradas e saidas) ou seja ele entende a lógica de trabalho da maquina ou produto e simplesmente faz uma programação nova que atenda aqueles requisitos da mesma forma que a existente. Posso falar por experiencia própria que é uma perda de tempo seguir a linha de raciocino que vc esboçou. Quem entende o processo de como a coisa funciona seja ela o que for é fácil replicar e muitas vezes nesse processo corrige ou aperfeiçoa muitas coisas do projeto original…
Tem muita gente aqui no furum que vai confirmar o que eu vou dizer agora:
É uma merda tentar arrumar, alterar ou acabar o que foi feito por outra pessoa.
É mais fácil, mas barato, fazer um novo mesmo que o objetivo seja o mesmo.
É claro tudo tem suas exceções.