Un cliente me ha proporcionado un antiguo código de proveedor externo no compatible en un archivo jar y estoy intentando realizar una ingeniería inversa para volver a implementar el mismo protocolo que usé para conectar a un servidor.Ir a declaraciones en el código decompilado causando problemas
Lo he descompilado y una de las clases parece tener etiquetas y declaraciones goto. Mi compilador está haciendo un siseo al respecto porque, según tengo entendido, goto no es compatible con Java.
no puedo publicar el todo el código, debido a cuestiones de propiedad intelectual, pero aquí está el quid de la cuestión (He puesto los errores de compilación en los comentarios):
private void methodName(InputType input)
throws ConfigurationException
{
// initialization code here
_L2:
String x; // The compiler is complaining that "String cannot be resolved to a variable" here
String y; // This line is fine though...
// Some Code here
x = <SOME VALUE> // Compiler complains about "x cannot be resolved to a variable"
y = <ANOTHER VALUE> // Compiler is fine with this.
// Some more code
if(true) goto _L2; else goto _L1 // Multiple issues here see following lines.
// Syntax error on token "goto", throw expected
// _L2 cannot be resolved to a variable
// Syntax error on token "goto", { expected
// Syntax error on token "goto", { expected
_L1: // Syntax error on token "goto", { expected
local; // local cannot be resolved to a variable
// Some more code
JVM INSTR ret 12; // Multiple issues here see following lines.
// JVM INSTR ret 12;
// Syntax error on token "ret", = expected
return;
}
entiendo que las líneas seguidas por dos puntos están las etiquetas, pero no entiendo qué está mal aquí.
la línea con el Goto está probando para cierto por lo que sólo se pudo quitar las etiquetas, ya que son irrelevantes aquí, pero no entiendo lo que significa esta línea:
local;
O esto:
JVM INSTR ret 12;
Cualquier ayuda interpretando esto sería muy apreciada.
Si su decompilador pretende convertir el bytecode de JVM en Java, pero el código que está produciendo no es Java válido, ¿no es eso un error en su descompilador? – Raedwald
nota quisquillosa: tenga cuidado con el código de proveedor de terceros de ingeniería inversa, e incluso publíquelo; puede que el proveedor no lo permita:/ – Christian
Creo que he ocultado el código tanto como sea posible ... –