2014-10-24 16:06 scz
Luyten只是Procyon的GUI前端。Luyten 0.4.2用的是Procyon 0.5.25。Procyon时至
今日的最新版是0.5.26。
由于"Maven Central Repository"中目前只有Procyon 0.5.25,即使自己编译Luyten
源码,仍然只能与Procyon 0.5.25配合使用。如果强行替换Luyten.jar中所依赖的
Procyon的class为0.5.26版,会出错,因为0.5.26与0.5.25相比,有一些类改变过。
我把Luyten与Procyon解耦成Luyten.jar、procyon-decompiler.jar。GUI部分与反编
译部分没必要紧耦合。
附件里的Luyten.jar、procyon-decompiler.jar是Procyon 0.5.26。假设以后有
Procyon 0.5.27,只需要替换procyon-decompiler.jar即可。
procyon-decompiler.jar我做了一些小改变。主要是Procyon 0.5.26引入了新BUG,
在处理一些异常inner class时会触发访问越界。其次Procyon对函数形参、局部变量
的智能重命名有重大BUG,尤其当目标被混淆过的时候,我觉得对于看惯了汇编的同
学们,还不如直接面对param_n、loc_n来得干净。我只针对这两点做了改动。
如果有洁癖,可自行下载官方原版procyon-decompiler-0.5.26.jar,将名字改成
procyon-decompiler.jar即可。Luyten.jar就没办法了,为了解耦,这是从源码重新
编译来的,虽然完全未改源码。
话说我本来雄心勃勃地想在Procyon基础上改改,把它那些稀烂的BUG都改掉,但确实
水平太低,不足以在短时间内完成这个幻想,只能慢慢跟它磨了。解耦Luyten与
Procyon的目的之一就是多拉些人进来测试,肯定有一堆人已经积累了不少测试用例
甚或修补方案。如果有朝一日我又改了它的一堆BUG,还会发出来的。
呃,给作者反馈BUG,人家不理我。要不然我就只提测试用例了,哪用得着自己读代
码来改啊,满目都是泪。
CFR也不错,不过作者没开源,我也懒得在反编译结果上修补CFR的BUG,所以就没拿
它动刀。Krakatau相对BUG最少,是Python写的,个人觉得还是Java写的调试起来顺
手些,所以也没动它。JD-GUI、Fernflower、JAD不开源,没啥好说的。jadx-gui目
前测到的情况是,对synthetic class members及inner class的支持有大问题,估计
与它主要对付DEX有关;它倒是开源,可惜解析class时依赖dx-1.8.jar,后者未提供
源码。jclazz开源,但2009年停止更新。
于是,我只好跟Procyon死磕了。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课