Pesquisadores Kumatori Accelerator-driven Test Facility Reactor (KART) (artigo Economist, se você se inscrever) descobriram uma maneira de resíduos radioactivos forçosamente decadência (neptunium, plutônio, amerício, cúrio, etc.) em isótopos menos letais de elementos que só estão radioativo por ano, em vez de dezenas de milhares ou dezenas de milhões de anos.
Essencialmente, eles batem resíduos radioactivos com um feixe de nêutrons que adiciona em massa para os resíduos radioactivos, fazendo-a transmutar em outro elemento, que por sua vez faz com que ele se deteriorar mais rapidamente. Isso me fez pensar, se você pode bater um elemento com um feixe de nêutrons com a criar um novo elemento, bem, talvez você pode fazer a mesma coisa em um arquivo, a fim de evitar "traquina Anti-Virus"? Bem, parece que você pode. Um bom exemplo disso é Morphine Santo Padre. Morfina funciona incluindo o seu próprio carregador de PE.
Isto permite-lhe colocar imagem de origem inteira para a seção .text de novo arquivo PE. Ele também contém um motor polimórfico que sempre cria decryptor absolutamente diferente para o novo arquivo PE cada vez Morphine é executado. A morfina foi lançado em março de 2004, e as grandes empresas de antivírus não tinha um método de detecção de genericamente executáveis "Morphined" até Q4 2005. A versão privada de morfina ainda cria verisons de binários que são indetectáveis para todos os fabricantes de antivírus no mercado.
Outras idéias são simplesmente para reorganizar o executável para que ele faz essentally "a mesma coisa", mas modificar as instruções subjacentes do binário. Um exemplo seria para mover o valor do registrador edx no registrador EAX. Normalmente, o programa faria uma edx mov, instrução eax para alcançar este objetivo. Bem, um eax impulso seguido por um edx pop vai efetivamente fazer a mesma coisa que um mov edx, eax --- tomar o valor em EDX e colocá-lo em EAX. Você vê onde estou indo aqui, podemos modificar totalmente a assinatura estática do binário neste processo. Mas, não é trabalhar .... ..
.. Bem, não realmente. Se eu tomar uma instrução byte 3 (mov edx, eax) e substituí-lo por duas instruções 2 bytes (push eax e pop EDX), eu mudei o deslocamento dentro do programa por um byte. Isto significa que cada salto, todas as chamadas no programa será desativado por um byte, ou seja, o programa deixará de funcionar. Três possíveis soluções para esse problema: 1. substituir Só instruções igual tamanho 2. Recalcular todos os salto