1
resposta

Executável com erro

Caso mude qualquer código no JAVA do executável . Qual seria o erro que apresentaria , seria visível? O que poderia ser feito para reverter este erro , sendo leigo no assunto de JAVA ? Este código seria mestre bloqueado para alteração ,ou qualquer um teria acesso para alteração ?

1 resposta

O executável em sí não é código Java, no sentido de que o compilador traduz o código que você escreve em Java para gerar o executável. Nessa tradução inclusive há perda de muitos elementos estéticos que são característicos de uma linguagem alto nível (mais próxima da linguagem humana) para facilitar a legibilidade para o programador. Então o executável em sí é um código mais baixo nível (mais próximo da linguagem de máquina), que não tem como parâmetro essa legibilidade por ser humano. Se você pegar um arquivo executável qualquer e abrir num editor de texto, vai ver a bagunça que é... realmente é não é praticável "abrir" e "editar" o arquivo já compilado, via de regra.

Há técnicas para "descompilar" (chama repack na verdade) um executável, revertendo de volta a um código semi-legível para edição, um código java funcional. Mas não é um processo trivial e nem é um processo perfeito. Isso em grande parte por conta dessa reorganização do código quando vai ser compilado. Por exemplo, nome de variáveis que usamos no código-fonte e comentários, formatação, etc, não são mantidos na tradução, o computador não precisa dessas informações pro código funcionar conforme comandado, então são descartadas na compilação. O computador não precisa do nome "string minhaNovaVariável" para referenciar a variável, já que guarda o ponteiro pra o trecho de memória onde a variável é armazenada. Então o resultado desse "repack" geralmente traz um código que funcionalmente gera o mesmo executável, mas com legibilidade e etc bastante inferiores a um código bem escrito.

Ainda assim, se você modificar esse código descompilado, a modificação não está sendo feita direta no executável... a modificação foi feita num código traduzido, não é modificação direta no executável... o executável passa por esse processo de tradução, e depois de editado o código, a pessoa pessoa precisa compilar novamente (o que vai gerar um novo executável).

Enfim, para fins práticos, em teoria é fazível, mas é tão pouco prático que para 90% dos casos é mais fácil simplesmente considerar que não é factível. Eu não mexo com engenharia reversa nem entendo horrores sobre compiladores, então pode ter algum detalhe errado nisso aí, mas de forma geral o funcionamento de compilação de código gerando executável é esse aí.