Embaralhamento de código

1 resposta
furutani
Olá Eu estou testando o RetroGuard (sugestão do Lipe) porém não vi diferença nenhuma no código descompilado. Não sei se sou eu que não sei o programa, mas olha só: Codigo original
package teste;

/**
 * @author RJFurutani
 * @01/02/2005
 */
public class CodigoProtegido {
    String senha = "Minha Senha";

    public static void main(String[] args) {
        System.out.println(new CodigoProtegido().geraMinhaSuperSenha());
    }

    public String geraMinhaSuperSenha() {
        String superSenha = "";

        for (int idx = senha.length(); idx > 1 ; idx--) {
            superSenha += senha.charAt(idx-1);
            superSenha += (idx % 2 == 0) ? "a" : "b";
        }

        return superSenha;
    }
}
Código descopilado após o Retroguard
package a;

import java.io.PrintStream;

public class a
{

    public a()
    {
        a = "Minha Senha";
    }

    public static void a(String as[])
    {
        System.out.println((new a()).a());
    }

    public String a()
    {
        String s = "";
        for(int i = a.length(); i > 1; i--)
        {
            s = s + a.charAt(i - 1);
            s = s + (i % 2 != 0 ? "b" : "a");
        }

        return s;
    }

    String a;
}
Estou usando o comando java RetroGuard teste.jar saida.jar

Qual é o problema?

grato

1 Resposta

T

Você queria que ele mudasse o fluxo do seu programa, é isso? Se você quer um produto desses, acho que precisa pagar alguma coisa :wink:
Falando sério, não sei se existe algum programa desses que funcione bem mesmo.

Dois problemas sérios com produtos que alteram o fluxo do seu programa:

  • O HotSpot JIT Compiler fica “doido” com esses arquivos de .class mexidos, e gera um código muito porco nesses casos. É que ele está preparado para otimizar código gerado pelo javac, sem nenhuma otimização do javac (ele na verdade quer o máximo de informação disponível, para ele mesmo fazer a melhor otimização possível no limitado tempo disponível para a compilação Just-In-Time). Então o seu programa fica mais lento…
  • Dependendo do produto, pode ser que o .class não consiga ser corretamente carregado porque o verificador de classes não consegue “verificar” que a classe não tem problemas como “stack underflow” e outras coisas que são habitualmente feitas no carregamento de classes.
Criado 1 de fevereiro de 2005
Ultima resposta 1 de fev. de 2005
Respostas 1
Participantes 2