Casa > P > É Possível Converter O Código Da Máquina De Volta Para Uma Linguagem De Programação?

É possível converter o código da máquina de volta para uma linguagem de programação?

O código da máquina pode ser desmontado para a linguagem assembly. E através do reconhecimento de padrões, o código da máquina pode ser compilado de volta para alguma linguagem de programação, que nem precisa ser a linguagem original.

Se houver informações de debug deixadas no executável, até mesmo nomes de funções podem ser recuperados do código da máquina. Caso contrário, o descompilador/desmontador terá que inventar seus próprios nomes.

Se você estiver lidando com código p ou bytecode (Java/.NET) então a descompilação se torna um pouco mais fácil uma vez que estes compiladores tendem a incluir um pouco mais de dados dentro do executável como parte do tipo de informação de tempo de execução que o código poderia usar internamente através de reflection.

No entanto, alguns compiladores incluirão ofuscação do código da máquina após a compilação. Basicamente, isto significa que qualquer informação útil que não seja necessária será removida do executável e o código será embaralhado ou mesmo comprimido com um carregador especial incluído na aplicação para descompactar/descompactar novamente em tempo de execução. Isto torna mais difícil a descompilação, já que você está basicamente descompilando o carregador, não o código da máquina do executável.

Na maioria dos casos, não vale a pena o tempo de qualquer forma. Uma vez descompilado, você ainda precisa ter um bom conhecimento técnico para decifrar o código. Ele simplesmente não parece bonito, não importa o quão bom o descompilador tenha feito seu trabalho.

De Lotus Mellor

Qual é a diferença entre código de bytes e código de máquina e quais são as suas vantagens? :: Qual é a diferença entre o código da máquina e o código binário?