2020-07-15 – Pensando em criar um Obfuscador de código-fonte C++, em C++
Uma imagem que partilhei a 15 de Julho, em que referia a decisão de um dia criar um obfuscador de código C++, e contei algumas recordações dos anos 80, com descrição da altura abaixo:
«Isto faz-me recordar os editores de hexadecimal que usava nos anos 80 para alterar coisas como o command . com do MS-DOS.
E para dar ideia de algo que vou criar no Futuro, um obfuscador de C++.
Eu partilho isto porque é para mostrar que um ficheiro executável, mesmo em C++, terá lá strings visíveis (se não forem encriptadas), o que é falha de segurança, PODE ter nomes de métodos e outras coisas, visíveis, etc. Isso pode aumentar o tamanho do executável.
Terei depois de colocar de lado as cenas Cisco (num ficheiro de configuração), encriptar strings, esconder métodos, etc, e tudo isso reduzirá o tamanho do executável.
Estou a pensar criar um obfuscador de código C++ (não do executável que isso já existe). Porquê? Não tanto para esconder código, porque alguém realmente experimente conseguirá fazer reverse-engineering mesmo ao executável (duvido é que compense lol não vale assim tanto porque não esconde segredos), mas mais para encurtar ainda mais o tamanho, etc.
Mas também para obfuscar, porque inicialmente, vários não serão Open Source porque só compensa ser Open Source se houver pessoas que vão trabalhar nele, se não existirem, não serve de muito perder tempo a colocar o código bonito para o meter Open Source.
Ou seja, vou deixar o código organizado, mas sem muitas instruções, de modo a que eu compreenda mas sem perder tempo a fazê-lo ser compreendido por outros. Assim farei as coisas mais depressa.
Se algum dia quiser tornar algo Open Source (por me fartar e outros quererem continuar a desenvolver), perderei tempo a meter tudo mais bonito e compreensível, e até a simplificar código de forma a que outros compreendam, como reduzir abstracção, etc.
Até lá, parece mal meter Open Source algo que não é especificamente criado para ser fácil de ler, mesmo para pessoal experiente em C++, por isso será apenas Freeware.
MAS, para certas distribuições aceitarem adicionar aos repositórios as aplicações, e para certos organismos conseguirem de forma mais fácil averiguar se não há vírus (LOL) dentro do executável, ou coisas malignas, convém existir um código fonte disponível.
E com o obfuscador, reduzirei espaços a mais, linhas extra, comentários, tamanho de funções e variáveis, no fundo ficará obfuscado, mas poderão averiguar dentro que não terá nada de mal.
Em simultâneo poderá ser usado para encriptação de strings, etc.
Por isso talvez nos próximos meses comece a desenvolver um obfuscador de código fonte em C++.
Dizem que é apesar de game engines serem das coisas mais difíceis de desenvolver, obfuscadores de código e interpretadores podem ser mais ainda, por isso ficar-me-á bem no portfólio depois. E porque o que fiz em PHP há 9 anos nunca o tornei público…
Mas é giro na mesma ver algo em hexadecimal, a recordar o debug dos anos 80 (que foi usado como provas de acesso ao MI6 para candidatos de cyber-security há uns anos).
É mais fácil ler algo em hexadecimal (e texto real à direita) do que em 1s e 0s, não é verdade?
Parece que vou criar uns quantos softwares nos próximos 2 ou 3 anos, é para compensar os 10 anos em que não criei nenhum (público), e em que me divertia a dobrar barras de aço ou outras coisas.
PS: Dados errados no subnetting porque estava a experimentar.
2020-07-15.»