Protecting executable from reverse engineering

Estive pensando em como proteger meu código C / C ++ contra desmontagem e engenharia reversa. Normalmente eu nunca toleraria esse comportamento pessoalmente no meu código; no entanto, o protocolo atual em que estou trabalhando nunca deve ser inspecionado ou compreensível, para a segurança de várias pessoa

Agora, este é um assunto novo para mim, e a Internet não é realmente uma fonte de recursos para prevenção contra engenharia reversa, mas descreve toneladas de informações sobrecomo fazer engenharia reversa

Algumas das coisas que pensei até agora são:

njeção de código (chamando funções fictícias antes e depois das chamadas de função reaicultação de código (controla a desmontagem do binári

screva minhas próprias rotinas de inicialização (mais difícil para os depuradores se ligare

void startup();  
int _start()   
{  
    startup( );  
    exit   (0)   
}  
void startup()  
{  
    /* code here */  
}

Verificação do tempo de execução para depuradores (e forçar a saída se detectada)

rampolins funciona

 void trampoline(void (*fnptr)(), bool ping = false)  
 {  
   if(ping)  
     fnptr();  
   else  
     trampoline(fnptr, true);  
 }

locações e desalocações sem ponto (a pilha muda muit

hamadas fictícias e trampolins sem ponto (toneladas de saltos na saída da desmontage Toneladas de fundição (para desmontagem ofuscada)

Quero dizer, estas são algumas das coisas em que pensei, mas todas elas podem ser contornadas e / ou descobertas por analistas de código no prazo certo. Existe alguma outra alternativa que eu tenho?

questionAnswers(24)

yourAnswerToTheQuestion