Ну, реверс-инжиниринг как ни крути не бывает простым, как правило нужно хорошо понимать ассемблер, то как именно компиляторы получают этот ассемблер и из какого именно кода, знать особенности аппаратной платформы и т д. В нашем случае вместо ассемблера байткод для виртуальной машины, что всегда единообразно и очень сильно проще