前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于反编译的搜索

jad反编译class文件还原成java源码的错码校正求助-CSDN论坛-CSDN.NET-中国最大的IT技术社区 --> 首页 论坛帮助 论坛牛人 论坛地图 CSDN > CSDN论坛 > Java > Java SE 管理菜单 置顶 推荐 锁定 移动 编辑 删除 帖子加分 帖子高亮 结帖 发帖 回复 visitor08 jad反编译class文件还原成java源码的错码校正求助 [问题点数:35分,结帖人visitor08] 不显示删除回复 显示所有回复 显示星级回复 显示得分回复 只显示楼主 收藏 visitor08 visitor08 等级: 结帖率:100% 楼主 发表于: 2009-07-03 14:36:30 分析jad反编译实例错码问题,希望能与大家讨论总结并得到指导. 具体实例反编译后出现错码的地方有: 1.类中的变量与方法错码:部分变量名与方法名使用了java程序中的保留关键字,语法上应该是错误的,部分代码如下 public String new; private String case; private boolean goto; private boolean g; private long try; private boolean else; public boolean ka() { return h.y(); } public boolean if() { return h.void(); } public int for() { return h.l(); } 问题分析:关于此类是一个软件的jar包中的class文件,该软件的运行使用此类文件,证明此类在该软件的运行环境中正常加载,故可断点此类无语法错误。但将此类引用到jdk的classpath环境或ide工具的工作环境,利用集成工具生成此类的实例,在实例中用“.”自动提示实例方法与变量中也与上拷贝代码一样,出现java保留关键字的变量与方法,此类应该在编译生成class文件时报错。如何生成了如前分析的正确jar包。个人分析源代码作者使用的jdk不可能从根本上改写了jdk的关键字,故此问题是否也因jad反编译的问题,加密?请各位兄弟姐妹,帮忙分析分析,谢谢! 用jad.exe反编译命令的某些参数反编译得到的结果稍有不同,命令参数(参考:http://cnnt.blog.ccidnet.com/blog-htm-do-showone-type-blog-itemid-119813-uid-42851.html) -pf <pfx>- 用数字名字给所有的成员变量加前缀 (default: _fld) -pe <pfx>-给没有用到的异常的名字加前缀 -pl <pfx>- 给局部变量用数字名字加前缀 (default: _lcl) -pm <pfx>-给方法用数字名字加前缀 (default: _mth) 得到java代码如下,将下java代码编译成class文件却不可以在原软件运行环境中使用,故代码的解析还原应该有问题,具体反编码得到的部分java源码如下:(截取部分,与上代码进行对照) public String _fldnew; public int _mthfor() { return h.l(); } 2.类中第二类错误代码,粘贴一方法反编码的代码 private String c() throws FioranoException { RandomAccessFile raf = null; String s; raf = new RandomAccessFile(new, "r"); if (raf.length() <= 0L) break MISSING_BLOCK_LABEL_35; s = raf.readLine(); return s; String s1; try { s1 = null; } catch (IOException e) { throw new FioranoException(e.getMessage()); } return s1; local; try { if (raf != null) raf.close(); } catch (IOException e) { } JVM INSTR ret 5; } 出现了break MISSING_BLOCK_LABEL_35;与JVM INSTR ret 5;代码,此部分代码作怎样的还原。关于JVM代码查找相关资料好像由于此部分代码由于jad无法反编译而不确定的部分,可能因为源程序加密。若是如此只能根据相关逻辑,推测改写还原代码了。 java是强制性检验编译的,若仅有上问题一中java代码可否编码生成正常使用的class文件,请大家帮忙分析一下,若能正常编码通过,个人分析在上文中提到的软件环境中应能正常使用,因为根据上面分析此软件的其它相关类中引用的方法与该类中定义的一致。 更多 分享到: 相关主题推荐: 反编译 源码 class java 局部变量 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 回复次数:14 ouyangxiaokang6 ouyangxiaokang6 等级: 结帖率:100% #1 得分:0 回复于: 2009-07-03 16:04:50 1,你的jar包是什么jar,不会是jdk里面的jar包吧。 2,不明白你是什么意思 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 visitor08 visitor08 等级: 结帖率:100% #2 得分:0 回复于: 2009-07-03 16:21:18 谢谢你的答复 1.此class文件在软件的生成包解压出来的,此生成包由安装程序自动生成,格式为zip,软件执行时引用的此包内的class文件了。所以并非jdk的源程序包 2.我要做的是打开此class的源码java文件进行一定的改写,以对此软件进行研究。故中间有个反编译class生成源码,再编译新java文件生成新class文件的过程,现在的问题是:在反编译过程中生成了有错误的java文件,怎样改正此错误,并进行编译成生成新的class(用此替代原包中的文件),达到我目的。 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 visitor08 visitor08 等级: 结帖率:100% #3 得分:0 回复于: 2009-07-03 16:28:07 谢谢你的答复 1.此class文件在软件的生成包解压出来的,此生成包由安装程序自动生成,格式为zip,软件执行时引用的此包内的class文件了。所以并非jdk的源程序包 2.我要做的是打开此class的源码java文件进行一定的改写,以对此软件进行研究。故中间有个反编译class生成源码,再编译新java文件生成新class文件的过程,现在的问题是:在反编译过程中生成了有错误的java文件,怎样改正此错误,并进行编译成生成新的class(用此替代原包中的文件),达到我目的。 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 zzd121333 zzd121333 等级: 结帖率:50% #4 得分:0 回复于: 2009-07-13 19:41:14 出现java保留关键字的变量与方法,是因为代码被混淆过了。这段时间我也在研究JAVA的反编译。不过也没有头绪。 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 oklcy oklcy 等级: 结帖率:0% #5 得分:0 回复于: 2009-12-08 21:00:40 我也在搞这个...头大. 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 oklcy oklcy 等级: 结帖率:0% #6 得分:0 回复于: 2009-12-08 21:47:07 由于jad的bug,它不能够完整的解析出来try-catch-finally 语句,所以编译出来的java文件不能够再次编译。详情他们的官网已经说了。至于java类我们也不必太强求了,仅仅是看它主要的东西就好了。 ------------------------------------------- 网上找的答案.. 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 pdxllr pdxllr 等级: 结帖率:0% #7 得分:0 回复于: 2009-12-16 20:30:25 哎,不知道如何才能还原那个class....有门! 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 xblue3 xblue3 等级: 结帖率:99.32% #8 得分:0 回复于: 2009-12-22 18:52:19 我也遇到了乱七八糟的混淆代码..晕.,... break; /* Loop/switch isn't completed */ } abyte2; JVM INSTR monitorexit ; // a.a("[ProgressInputStream] run(): " + k + " Bytes gelesen"); // a.a("[ProgressInputStream] run(): insges. " + c + " Bytes uebertragen"); _L1: if(!f) goto _L3; else goto _L2 _L2: if(f) { 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 spiniper spiniper 等级: 结帖率:100% #9 得分:25 回复于: 2009-12-22 18:54:08 你反编译器有点落后,或者是你jdk版本不够。 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 heavertear heavertear 等级: 结帖率:75% #10 得分:0 回复于: 2010-02-23 16:15:13 private RBACCallbackHandler _$13370 = null; private static final RBACPolicy _$13371 = new RBACPolicy(); private RBACRequestContext _$5929 = null; static { Policy.setPolicy(_$13371); } 怎么处理? 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 canghaiguzhou canghaiguzhou 等级: 结帖率:100% #11 得分:10 回复于: 2010-02-23 16:22:33 推荐JD-GUI,如果真的被混淆了,估计没啥办法了 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 winner128 winner128 等级: 结帖率:0% #12 得分:0 回复于: 2011-04-15 21:24:14 这个反编译要jdk多少才能用??? 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 sxZeng sxZeng 等级: 结帖率:100% #13 得分:0 回复于: 2011-04-15 23:32:57 该回复于2011-04-16 09:23:00被版主删除 编辑 删除 管理 yang3wei yang3wei 等级: 结帖率:100% #14 得分:0 回复于: 2011-04-16 12:25:36 这个东西很脑袋疼的,你研究源代码还不如研究一下软件功能,然后自己来重写一个~ 关于jd,我测试过一点代码, 有次反编译出来的时候发现while死循环不见了~ 还有就是比较普遍的,io流读写的时候会在循环中加入int **=**,重复定义变量之嫌~ 再个就是内部类的问题,没有仔细研究,看着就烦 不知道楼主有没有客服这些问题? 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 --> --> --> --> --> --> 管理菜单 置顶 推荐 锁定 移动 编辑 删除 帖子加分 帖子高亮 结帖 发帖 回复 写出你眼中的IE11 赢取新年好礼! 勇敢写出你的爱 赢莫文蔚签名大礼 2014年4月微软MVP申请开始了! 陈勇- 敏捷开发现状及发展之路 CSDN高校俱乐部 高校全新改版邀你来学习和挑战 本帖子已过去太久远了,不再提供回复功能。 核心技术类目 全部主题 Java VPN Android iOS ERP IE10 Eclipse CRM JavaScript Ubuntu NFC WAP jQuery 数据库 BI HTML5 Spring Apache Hadoop .NET API HTML SDK IIS Fedora XML LBS Unity Splashtop UML components Windows Mobile Rails QEMU KDE Cassandra CloudStack FTC coremail OPhone CouchBase 云计算 iOS6 Rackspace [关闭] [关闭]