Это легко сделать, используя дизассемблер, например Кракатау (раскрытие, я написал).
Преимущество использования дизассемблера перед декомпилятором заключается в том, что он гарантированно работает.Не весь код может быть декомпилирован, но он всегда может быть разобран.
Например, возьмите такой класс.
public class A{
public static void main(String[] args)
{
System.out.println("true");
}
}
После разборки его с помощью Кракатау вы получите что-то вродеthis.
.version 51 0
.class super public A
.super java/lang/Object
.method public <init> : ()V
.limit stack 1
.limit locals 1
aload_0
invokespecial java/lang/Object <init> ()V
return
.end method
.method static public main : ([Ljava/lang/String;)V
.limit stack 2
.limit locals 1
getstatic java/lang/System out Ljava/io/PrintStream;
ldc 'true'
invokevirtual java/io/PrintStream println (Ljava/lang/String;)V
return
.end method
Измените строку ldc 'true'
на ldc 'false'
, соберите ее, и теперь она будет печатать false вместо true.