社区
Web 开发
帖子详情
Java 的反编译问题
JE8000TO
2010-06-26 11:23:59
一个Java代码,编译后会生成 A.class B.class C.class等文件(举例子)。但是使用jad命令进行反编译,还原到以前的那个Java代码。好像就有点乱了!只给你.class文件,你如何能完整的写出原代码?对反编译感兴趣的可以发表下看法。
...全文
305
15
打赏
收藏
Java 的反编译问题
一个Java代码,编译后会生成 A.class B.class C.class等文件(举例子)。但是使用jad命令进行反编译,还原到以前的那个Java代码。好像就有点乱了!只给你.class文件,你如何能完整的写出原代码?对反编译感兴趣的可以发表下看法。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wqkjj
2010-06-27
打赏
举报
回复
[Quote=引用 5 楼 je8000to 的回复:]
我的意思是这样的 你先写一个稍微有点复杂的Java代码。里面包含有3个以上的方法,以及相关的子类。但只有一个main()方法。然后你将其编译,编译之后,删除原来的 a.java文件。接下来,你使用仅有的.class文件将程序的结果运行出来,就可以了(不管你使用什么方法)。动手操作下…… 谢了!
[/Quote]
如果这也是问题的话,不知道LZ想问什么问题。
ZangXT
2010-06-27
打赏
举报
回复
如果没有混淆过,反编译还是很容易的。我有一次写了一个一千多行代码的类,不小心把源码丢了,反编译后继续编
水中影子
2010-06-27
打赏
举报
回复
JAVA反编译工具 如:XJad
当然不可能和源代码一模一样,有点差异的
wzju64676266
2010-06-27
打赏
举报
回复
[Quote=引用 7 楼 bao110908 的回复:]
甭想跟源代码一模一样,这是不可能的!
[/Quote]
但jvm如果没有对文件进行优化处理呢?反编译处理的属性一般是在方法之前
JE8000TO
2010-06-27
打赏
举报
回复
[Quote=引用 7 楼 bao110908 的回复:]
甭想跟源代码一模一样,这是不可能的!
[/Quote] 是这样的。
sl514
2010-06-27
打赏
举报
回复
jd-gui Java反编译器
直接把class拖到界面上就行了
chainhou
2010-06-27
打赏
举报
回复
用个工具试下,jd-gui
duben4814
2010-06-27
打赏
举报
回复
[Quote=引用 6 楼 wqkjj 的回复:]
引用 5 楼 je8000to 的回复:
我的意思是这样的 你先写一个稍微有点复杂的Java代码。里面包含有3个以上的方法,以及相关的子类。但只有一个main()方法。然后你将其编译,编译之后,删除原来的 a.java文件。接下来,你使用仅有的.class文件将程序的结果运行出来,就可以了(不管你使用什么方法)。动手操作下…… 谢了!
如果这也是问题的话,不知道LZ想问什么问题。
[/Quote]
用jad这样做了,可以正常运行,和在编译器中运行结果一样,有什么问题想说?
waitdream
2010-06-27
打赏
举报
回复
[Quote=引用 7 楼 bao110908 的回复:]
甭想跟源代码一模一样,这是不可能的!
[/Quote]
在TC没什么不可能的~
火龙果被占用了
2010-06-27
打赏
举报
回复
甭想跟源代码一模一样,这是不可能的!
JE8000TO
2010-06-26
打赏
举报
回复
我的意思是这样的 你先写一个稍微有点复杂的Java代码。里面包含有3个以上的方法,以及相关的子类。但只有一个main()方法。然后你将其编译,编译之后,删除原来的 a.java文件。接下来,你使用仅有的.class文件将程序的结果运行出来,就可以了(不管你使用什么方法)。动手操作下…… 谢了!
JE8000TO
2010-06-26
打赏
举报
回复
你用 HelloWorld.java 程序编译,HelloWorld.class 然后再用你的方法试下
qiheia
2010-06-26
打赏
举报
回复
那直接用java命令来运行你的.class文件就可以啊
java a.class
JE8000TO
2010-06-26
打赏
举报
回复
嗯 这个我知道的 如果只给你3个.class文件(这3个文件是一个applet程序编译的二进制文件),在没有原Java的代码的情况下,你采取方法将其运行出来就可以了……
qiheia
2010-06-26
打赏
举报
回复
直接用反编译工具不就可以吗?
下面是jad命令的解释。。。
JAD命令
首先,看一下jad的帮助提示
-a - 用JVM字节格式来注解输出
-af - 同 -a,但是注解的时候用全名称
-clear - 清除所有的前缀
-b - 输出多于的括号 (e.g., if(a) { b(); }, default: no)
-d <dir> - 指定输出文件的文件目录
-dead -试图反编译代码的dead 部分(default: no)
-disass - 不用用字节码的方式反编译 (no JAVA source generated)
-f - 输出整个的名字,无论是类还是方法
-ff -输出类的成员在方法之前 (default: after methods)
-i - 输出所有的变量的缺省的最初值
-l<num> - 将strings分割成指定数目的块的字符 (default: no)
-lnc - 将输出文件用行号来注解 (default: no)
-nl - 分割strings用新行字符 newline character (default: no)
-nodos -不要去检查class文件是否以dos方式写 (CR before NL, default: check)
-nocast - 不要生成辅助文件
-nocode -不要生成方法的源代码
-noconv - 不要转换java的定义符 (default: do)
-noctor - 不允许空的构造器存在
-noinner -关掉对内部类的支持 (default: turn on)
-nolvt - 忽略局部变量的表信息
-nonlb - 不要输出一个新行在打开一个括号之前 (default: do)
-o - 无需确认直接覆盖输出 (default: no)
-p - 发送反编译代码到标准输出 STDOUT (e.g., for piping)
其次.常用命令
jad -o -r -sjava -dsrc test.class
tree目录下的所有*.class文件
jad -o -r -sjava -dsrc tree/**/*.class
unix可以表示为:jad -o -r -sjava -dsrc 'tree/**/*.class'
指定输出文件的名字的话,用以下的转移命令
jad -p example1.class > myexm1.java
java
反编译
结果不同_通过
Java
反编译
揭开一些
问题
的真相
转自:http://www.importnew.com/20280.html收藏待研究博主在上一篇《
Java
语法糖之foreach》中采用
反编译
的形式进行探讨进而揭开foreach语法糖的真相。进来又遇到几个
问题
,通过
反编译
之后才了解了事实的真相,觉得有必要做一下总结,也可以给各位做一下参考。相信很多朋友刚开始见到
反编译
后的内容的时候,肯定会吐槽:WTF!其实只要静下心来认真了解下,
反编译
也不过如...
Java
反编译
常见
问题
Java
反编译
绝非"一键翻译",而是一场字节码层面的逆向考古。本文系统梳理了编译期常量内联、控制流结构化恢复失败、异常处理变形、Phi节点翻译失效、语法糖脱糖、方法内联展开及命名退化等七大核心
问题
,深入剖析其背后的
java
c优化策略与JVM运行机制,为逆向工程与遗留系统重构提供底层原理支撑。
《
Java
实时
反编译
工具》常见
问题
解决方案
《
Java
实时
反编译
工具》常见
问题
解决方案 项目基础介绍 该项目是一个
Java
实时
反编译
工具,名为"friday"。它主要用于在开发过程中查看修改后的字节码,如在使用pinpoint或skywalking等agent时。该项目使用
Java
Agent方式调用Instrumentation接口的retransformClasses方法,获取JVM返回的字节码,并通过cfr将其反编...
java
反编译
遇到
问题
测试谷歌GTS时,GtsNmgiarcTestCases包遇到错误。虽然后来解决了。 但是中间学习了apk
反编译
。 参考如下链接: https://blog.csdn.net/s13383754499/article/details/78914592 但是GtsNmgiarcTestCases 用dex2jar时,出现了错误。有部分源码无法
反编译
。 报如下错误。
java
.lang....
13、
Java
字节码
反编译
:
问题
、陷阱与误区
本文深入探讨了
Java
字节码
反编译
的技术细节、常见
问题
及解决方案。通过分析代码示例和不同
反编译
器的表现,重点介绍了Dava
反编译
器如何应对类型转换、代码优化、控制流重构等挑战,并详细解析了异常处理和对象锁定的复杂性。同时,文章还展望了
反编译
技术的未来发展趋势,为开发者提供了全面的参考指南。
Web 开发
81,110
社区成员
341,722
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章