Modificação de código - Code morphing
A transformação de código é uma abordagem usada em software ofuscante para proteger aplicativos de software de engenharia reversa , análise , modificações e cracking. Essa tecnologia protege o código de nível intermediário, como compilado a partir das linguagens Java e .NET ( Oxygene , C # , Visual Basic , etc.), em vez de código de objeto binário . A transformação do código divide o código protegido em vários comandos do processador ou pequenos fragmentos de comando e os substitui por outros, mantendo o mesmo resultado final. Assim, o protetor ofusca o código no nível intermediário.
A transformação de código é uma tecnologia multinível que contém centenas de padrões exclusivos de transformação de código. Além disso, essa tecnologia transforma alguns comandos da camada intermediária em comandos de máquina virtual (como p-code ). A transformação do código não protege contra o rastreamento em tempo de execução, que pode revelar a lógica de execução de qualquer código protegido.
Ao contrário de outros protetores de código, não há conceito de descriptografia de código com esse método. Os blocos de código protegidos estão sempre no estado executável e são executados (interpretados) como código transformado. O código intermediário original está ausente até certo grau, mas a desofuscação ainda pode dar uma visão clara do fluxo do código original.
A transformação de código também é usada para se referir à tecnologia de compilação just-in-time usada em processadores Transmeta como o Crusoe e Efficeon para implementar a arquitetura do conjunto de instruções x86 .
A transformação de código é frequentemente usada para ofuscar a proteção contra cópia ou outras verificações que um programa faz para determinar se é uma instalação válida, autêntica ou uma cópia não autorizada , a fim de tornar a remoção do código de proteção contra cópia mais difícil do que seria de outra forma Seja o caso.