quarta-feira, 26 de outubro de 2016

Ofuscação de código C #1 : Trígrafos



                                  Ofuscação de código C #1 : Trígrafos


Eae pessoal ! tudo na paz ? bom faz alguns dias que eu não posto nada no blog ... bom primeiro quero me desculpar por isso , bom eu não vou enrrolar muito , creio que muitos aqui não vieram para ler a introdução disso aqui ... então vamos direto ao assunto ! Esse é um recurso interessante para se utilizar na ofuscação de código ( observem que eu digo interessante e não que recomendo... ) isso pode confundir muito a leitura do código e cabe a você decidir se vai utilizar e como vai utilizar...

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>

void main(void){

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:

Postar um comentário

Tecnologia do Blogger.

Popular Posts