前往Shuct.Net首页

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

关于反编译的搜索

jd-core java反编译工具 - 看引擎 KENGINE | 看看新闻网 IT资讯 看看新闻网 看引擎 电视回看 订阅到: 看引擎 &#8211; 看看新闻网 | Kankanews.com IT Channel 浏览 → 首页 服务器 WEB前端 程序开发 开源产品 数据库 视音频 行业新闻 独家新闻 其它 软件资讯 谷歌 IBM Tencent Microsoft 网络 cisco Apple oracle 资讯 返回顶部 ^ 发表于 2014-03-04 0 条评论 jd-core java反编译工具 看看新闻网>看引擎>开源产品 发表于2小时前(2014-03-04 17:45)?? 阅读(24)?|?评论(0) &#013; 1人收藏此文章,&#013; &#013; 赞0 想做一个在线java反编译工具,找了http://jd.benow.ca/?http://varaneckas.com/jad/?这两个工具。 前一个工具比较好,但是jd-core不没有提供下载。详见?http://zhouliang.pro/2010/06/26/jad/? 搜索中发现了这个项目?https://github.com/nviennot/jd-core-java/? JD-Core-java is a thin-wrapper for the?Java Decompiler. This is hack around the IntelliJ IDE plugin. It fakes the interfaces of the IDE, and provides access to JD-Core. Since the Author of JD-Core is not willing to provide a library, as seen on?this thread, and we all want to batch decompilation, this is pretty much our only option. I hope this will motivate the author to release a proper library. 这个是抽取IntelliJ IDE jd plugin的插件中的jd-core来实现的,但是现在只有linux版本的。 受此启示,我下载eclipse的jd插件,应该也是包含的。果不其然,是包含的。 但是,抽取代码的发现了一些问题,就是反编译不完全。不知道是哪里出了问题。 改写了下面的代码: package?jd.ide.eclipse.editors; public?class?JDSourceMapper? { private?final?static?String?JAVA_CLASS_SUFFIX?????????=?".class"; private?final?static?String?JAVA_SOURCE_SUFFIX????????=?".java"; private?final?static?int????JAVA_SOURCE_SUFFIX_LENGTH?=?5; private?final?static?String?JAR_SUFFIX????????????????=?".jar"; private?final?static?String?ZIP_SUFFIX????????????????=?".zip"; private?static?boolean?loaded?=?true; static?{ System.load("d://jd-eclipse.dll"); } public?static?void?main(String[]?args)?{ JDSourceMapper?jd?=?new?JDSourceMapper(); String?s?=?jd.decompile("d:/antlr-2.7.7.jar",?"antlr/ActionElement.class"); System.out.println(s); } public?native?String?decompile(String?basePath,?String?classPath); } 但是反编译出来的结构是这样的: package?antlr; class?ActionElement?extends?AlternativeElement { ??protected?String?actionText; ??protected?boolean?isSemPred?=?false; ??//?ERROR?// ??public?ActionElement(Grammar?paramGrammar,?Token?paramToken) ??{ ????//?Byte?code: ????//???0:?aload_0 ????//???1:?aload_1 ????//???2:?invokespecial?1 antlr/AlternativeElement:<init> (Lantlr/Grammar;)V ????//???5:?aload_0 ????//???6:?iconst_0 ????//???7:?putfield?2 antlr/ActionElement:isSemPred Z ????//???10:?aload_0 ????//???11:?aload_2 ????//???12:?invokevirtual?3 antlr/Token:getText ()Ljava/lang/String; ????//???15:?putfield?4 antlr/ActionElement:actionText Ljava/lang/String; ????//???18:?aload_0 ????//???19:?aload_2 ????//???20:?invokevirtual?5 antlr/Token:getLine ()I ????//???23:?putfield?6 antlr/ActionElement:line I ????//???26:?aload_0 ????//???27:?aload_2 ????//???28:?invokevirtual?7 antlr/Token:getColumn ()I ????//???31:?putfield?8 antlr/ActionElement:column I ????//???34:?return ??} ??//?ERROR?// ??public?void?generate() ??{ ????//?Byte?code: ????//???0:?aload_0 ????//???1:?getfield?9 antlr/ActionElement:grammar Lantlr/Grammar; ????//???4:?getfield?10 antlr/Grammar:generator Lantlr/CodeGenerator; ????//???7:?aload_0 ????//???8:?invokevirtual?11 antlr/CodeGenerator:gen (Lantlr/ActionElement;)V ????//???11:?return ??} ??//?ERROR?// ??public?Lookahead?look(int?paramInt) ??{ ????//?Byte?code: ????//???0:?aload_0 ????//???1:?getfield?9 antlr/ActionElement:grammar Lantlr/Grammar; ????//???4:?getfield?12 antlr/Grammar:theLLkAnalyzer Lantlr/LLkGrammarAnalyzer; ????//???7:?iload_1 ????//???8:?aload_0 ????//???9:?invokeinterface?13?3?0 ????//???14:?areturn ??} ??//?ERROR?// ??public?String?toString() ??{ ????//?Byte?code: ????//???0:?new?14 java/lang/StringBuffer ????//???3:?dup ????//???4:?invokespecial?15 java/lang/StringBuffer:<init> ()V ????//???7:?ldc?16 ????//???9:?invokevirtual?17 java/lang/StringBuffer:append (Ljava/lang/String;)Ljava/lang/StringBuffer; ????//???12:?aload_0 ????//???13:?getfield?4 antlr/ActionElement:actionText Ljava/lang/String; ????//???16:?invokevirtual?17 java/lang/StringBuffer:append (Ljava/lang/String;)Ljava/lang/StringBuffer; ????//???19:?aload_0 ????//???20:?getfield?2 antlr/ActionElement:isSemPred Z ????//???23:?ifeq?+8?->?31 ????//???26:?ldc?18 ????//???28:?goto?+5?->?33 ????//???31:?ldc?19 ????//???33:?invokevirtual?17 java/lang/StringBuffer:append (Ljava/lang/String;)Ljava/lang/StringBuffer; ????//???36:?invokevirtual?20 java/lang/StringBuffer:toString ()Ljava/lang/String; ????//???39:?areturn ??} } 可以看出方法没有反编译出来,但是在jd-gui中出来的结果是好的。不知道哪里出了问题。 &#013; 声明:OSCHINA 博客文章版权属于作者,受法律保护。未经作者同意不得转载。&#013; 相关推荐 android 自定义全局未处理异常捕获器 在windows系统下创建幽灵文件夹 PDGesturedTableView Apache Cassandra 2.0 发布,K/V 存储系统 Hadoop入门(10)_通过java代码实现从本地的文件上传到Hadoop的文件系统 No tags for this post. 除非注明,本站文章均为原创或编译,转载请注明: 文章来自KENGINE | Kankanews.com 分享给朋友: RBT 相关文章 --> 最近发表... PHP合成图片、生成文字、居中对齐、画线、矩形、三角形、多边形、图片抗锯齿、不失真 高性能源码示例 亚马逊击败IBM获美国中情局6亿美元云计算订单 可穿戴设备已成为新品类 但只有iWatch才能让市场繁荣 传苹果助港版iPhone升内地4G 业内指不可思议 Java msgpack 示例 Mozilla Firefox 25.0 Beta 12 发布 (1)乱码之一:$.getJSON方法解析js文件中的json格式数据,中文乱码 PolarSSL 1.3.0 发布,SSL 加密库 查看全部: 89265 篇文章 → 所有评论 评论关闭. 上一篇: 贤心的WEB弹窗挺不错的 下一篇: i/o通信模型 ← 返回首页 标签云abstract Android Chrome;goagent;SwitchySharp cms后台管理界面 GoAgent;https;SSL证书 html5 pagespeed Parallels Desktop 8;Mac;破解版 PD7 PD8 php win7 win8 产品经理 前端 可扩展Web架构 分布式系统 队列 图片 缓存 负载均衡器 索引 后台管理登录界面,软件登录界面,cms登录界面,登陆界面设计欣赏 播放器 flash 系统 热门文章 本月 昨日 张永利:PC没有衰退 Win8销售令人满意 MySQL 5.5 和 5.6 默认参数值的差异 Win8大百科67期:把软件固定到任务栏 PHP和ActiveMQ集成 学英语要灵活 有道词典例句查询更直观 比Win7进步不少 详解Win8任务管理器 解释表达式语法库 LuLPeg [转载]xcode5时代如何设置Architectures和Valid Architectures 关于HTTP Header的讨论 jquery获取浏览器窗口的属性 七周七语言自习——Ruby第二天 android在listView中动态加载图片的一段代码(性能啥的还没考虑) 英国 doodle:圣大卫日 2014 Chrome 开始支持 srcset 标签,依据浏览器窗口大小动态展现不同图片 「Mac首免」时间去哪儿了:Durations 「新游首冰」神之光:God of Light 20年持续创造新就业?人才需学好Linux GitLab Control 热门评论 推荐 英国 doodle:圣大卫日 2014 Chrome 开始支持 srcset 标签,依据浏览器窗口大小动态展现不同图片 「Mac首免」时间去哪儿了:Durations 「新游首冰」神之光:God of Light 20年持续创造新就业?人才需学好Linux GitLab Control 奥斯卡电影启示:人类和科技如何相处? 一张信息图读懂3D打印 「虐心再免」闪亮小星:Gleamer nodejs 服务器进程管理工具 pm2Manage 三星承认Galaxy S5存在指纹传感器量产问题 mybatis笔记1 基本的配置和操作 本站相关版权信息 &copy;2014 KENGINE | Kankanews.com | | 沪ICP备10207042号