Ofuscação de código C #1 : Trígrafos
OBS : Esse post foi destinado a usuários linux, porem usuários do windows , bsd , mac e etc... podem adaptar esse post para seus respectivos sistemas operacionais!
PS: É necessário um conhecimento básico de programação C para o entendimento desse post ... tambem se faz necessário ter instalado o gcc na sua maquina ...
Trígrafos ...
Bem , em muitos países , com diferentes linguas , as vezes o tipo de teclado utilizado não contem alguns caracteres importantes para se programar em C , e então foi criado os "Trígrafos" , que são nada mais que simbulos que simbolizam cada um desses caracters...
Aqui abaixo vai uma lista de trígrafos para diferentes caracters, cada um equivale a um caracter ... "??/" equivale ao caracter "\" por exemplo !
------------------------------------------------------------------
??= = #
??/ = \
??' = ^
??( = [
??) = ]
??! = |
??< = {
??> = }
??- = ~
Bom, mas isso hoje em dia já é inutil , tanto que o gcc já não deixou o uso de trígrafos por default ... para usar trígrafos no seu programa , terá que utilizar o parametro "--trigraphs" no gcc ...
Para que vou utilizar isso então ? Simples ! para "bagunçar" o código !!!
Veja o seguinte exemplo de um programa comun e um utilizando trígrafos...
<--code
* Nome do programa : trigrafos.c
* Para compilar use : gcc trigrafos.c -o trigrafos --trigraphs
*/
#include <stdio.h>
char buffer[20] = "Ola mundo-unix";
printf("%s\n",buffer);
}
-->code
Bom , um programa simples não ??
Vamos ver como ele fica utilizando trígrafos agora...
<--code
/*
* Nome do programa : trigrafos.c
* Para compilar use : gcc trigrafos.c -o trigrafos --trigraphs
*/
#include <stdio.h>
void main(void)??<
char buffer??(20??)="Ola mundo-unix";
printf("%s??/n",buffer);
??>
-->code
Meio confuso haha ... bom se vocês olharem a lista de trígrafos que eu passei acima vera que estamos apenas substituindo caracteres pelos trígrafos equivalentes , não tem nada de mais !!
Isso é uma idéia de como você poderia ofuscar seu programa , mas existe várias outras formas :)
Aliás , vamos ver outro exemplo utilizando trígrafos! mas dessa vez mais simples ainda !
Nem vamos colocar códigos , apenas a parte que queremos analizar !
Digamos que a gente tenha o seguinte código "if(1==1 || 2==2){exit(0);}" , dê uma olhada como ficaria utilizando trígrafos ...
"if(1==1 ??!??! 2==2)??<exit(0);??>"
Isso confunde muito a cabeça então usem com cuidado !
Bom pessoal não vou enrrolar muito , era básicamente isso que queria trazer para vocês ... vou tentar postar outra coisa ainda hoje ... veremos...
Notou algo errado ou incorreto nesse post ? Nos informe > Aqui!
Até um outro post galera !!!
2 comentários:
❤ Boa
<3
Postar um comentário