Sto scrivendo un plug-in per un'applicazione Java. Potrei offuscare il plugin, ma sarebbe comunque facilmente reversibile.Posso usare la compilazione nativa come offuscamento Java
Credo che se potessi compilare questo plugin in una libreria condivisa, che utilizza pesantemente JNI per comunicare con l'applicazione principale, sarebbe molto più difficile decodificare. Sono disposto a sacrificare alcune prestazioni in JNI e l'applicazione su cui sto codificando supporta il caricamento della libreria condivisa. L'unico problema è che io non sono a conoscenza di uno strumento che fa il lavoro: gcj sembra dipendere proprio runtime e IKVM.NET - su .NET
Per essere precisi:
public class PluginImpl implements Plugin {
@Override
public void startPlugin(PluginContext ctx) {
ctx.helloWorld();
}
}
dovrebbe essere convertito in
public class PluginImpl implements Plugin {
@Override
public native void startPlugin(PluginContext ctx);
}
e il corpo del mio metodo startPlugin è compilato in una libreria condivisa.
(beh, sì, lo so, avrei potuto scrivere questo plugin in C in primo luogo)
perché dici che il bytecode offuscato può essere facilmente decodificato? – hhafez
Chiunque abbia il tempo e la pazienza per de-offuscare il tuo bytecode può fare lo stesso con il codice nativo, dato più tempo. Stai sacrificando le prestazioni, l'incapacità di eseguire il debug, l'affidabilità (quando il Java compilato-nativo si comporta invariabilmente in modo diverso rispetto a quello eseguito nella JVM) e giorni del tuo tempo per un "guadagno" molto basso e un prodotto di gran lunga inferiore. ** Abbandona ora ** mentre non hai investito così tanto tempo nella confusione che ritieni di avere * solo * di spedire il prodotto in questo modo ... – SimonJ
Forse dovresti portare la tua app a Perl ;-) – helpermethod