社区
Java SE
帖子详情
JVM相关,.Class文件格式问题
devie
2008-12-28 06:19:56
今天看一个框架,反编译类文件的时候提示不是有效的.Class文件,察看文件起始的内容并不是0xCAFEBABE,但是,这个类却能被JVM很好的识别,哪位高人能告诉这是用的什么原理。
...全文
241
20
打赏
收藏
JVM相关,.Class文件格式问题
今天看一个框架,反编译类文件的时候提示不是有效的.Class文件,察看文件起始的内容并不是0xCAFEBABE,但是,这个类却能被JVM很好的识别,哪位高人能告诉这是用的什么原理。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
devie
2008-12-30
打赏
举报
回复
研究明白了,用了ClassLoader进行解码载入,对于保护自己将软件是一个很好的思路!!
qinaldo
2008-12-29
打赏
举报
回复
呵呵,新人学习中!!
devie
2008-12-29
打赏
举报
回复
谢谢各位了,启发很大。
其实我也是想了解一些加密的技术,不破解别人的,也得保护自己的呀!
filec75
2008-12-29
打赏
举报
回复
友情up
success000
2008-12-29
打赏
举报
回复
友情up
云上飞翔
2008-12-29
打赏
举报
回复
[Quote=引用 12 楼 ZangXT 的回复:]
研究反编译和破解的人好多。
[/Quote]
答:呵呵。。,大家只是互相讨论,互相聊聊,互相启发。我一直相信的是:三人行必有我师。像:2楼、4楼的兄弟观点都是对我有启发的。我又学到新东西,这才是最主要的。别人可能达到了“研究的水平”,我是差得远的。我是说的真心话:越学习讨论JAVA,发现不懂的反而越来越多,只好继续努力了。
真心地向大家学习与讨论而已。
ZangXT
2008-12-29
打赏
举报
回复
研究反编译和破解的人好多。
老紫竹
2008-12-29
打赏
举报
回复
你直接运行那个类,或者你写一个Test类直接使用看看,如果不能用,则肯定被加密了。
云上飞翔
2008-12-29
打赏
举报
回复
[Quote=引用 9 楼 ahlon 的回复:]
引用 3 楼 jiangnaisong 的回复:
引用楼主 devie 的帖子:
生成的.class字节码跟运行是加载的classloader没有直接关系吧
[/Quote]
答:有关系啊.JVM装载入框架自定义的classloader之后,用自定义的classloader来读入这些非标准的"篡改的"class文件,然后就在内存中当时就(on the fly)进行"反变换成"正常的class字节码,交由JVM去运行啊.这不很正常吗.
xiaoxuanfengsyn
2008-12-29
打赏
举报
回复
不懂,学习一下
devie
2008-12-29
打赏
举报
回复
[Quote=引用 11 楼 java2000_net 的回复:]
你直接运行那个类,或者你写一个Test类直接使用看看,如果不能用,则肯定被加密了。
[/Quote]
不能被使用,编译都通不过!!
ahlon
2008-12-28
打赏
举报
回复
[Quote=引用 3 楼 jiangnaisong 的回复:]
引用楼主 devie 的帖子:
今天看一个框架,反编译类文件的时候提示不是有效的.Class文件,察看文件起始的内容并不是0xCAFEBABE,但是,这个类却能被JVM很好的识别,哪位高人能告诉这是用的什么原理。
答:显然,这个框架,自定义了自己的ClassLoader,然后使用自己的ClassLoader来装载这些"特殊的class文件",这是基本的加密手段.JAVA混淆器有些也是基于这一原理对JAVA类文件进行"篡改的".
[/Quote]
生成的.class字节码跟运行是加载的classloader没有直接关系吧
ZiSheng
2008-12-28
打赏
举报
回复
[Quote=引用 7 楼 wangbin3961 的回复:]
不懂up
[/Quote]
一样不懂,up
胡须棉花糖
2008-12-28
打赏
举报
回复
不懂up
java小小兵
2008-12-28
打赏
举报
回复
原来如此。
shuaiAWP
2008-12-28
打赏
举报
回复
不懂,顶顶
zijiyiren
2008-12-28
打赏
举报
回复
为了防止Class文件被直接反编译,许多开发人员将一些关键的Class文件进行加密,例如对注册码、序列号管理相关的类等。在使用这些被加密的类之前,程序首先需要对这些类进行解密,而后再将这些类装载到JVM当中。这些类的解密可以由硬件完成,也可以使用软件完成。
云上飞翔
2008-12-28
打赏
举报
回复
[Quote=引用楼主 devie 的帖子:]
今天看一个框架,反编译类文件的时候提示不是有效的.Class文件,察看文件起始的内容并不是0xCAFEBABE,但是,这个类却能被JVM很好的识别,哪位高人能告诉这是用的什么原理。
[/Quote]
答:显然,这个框架,自定义了自己的ClassLoader,然后使用自己的ClassLoader来装载这些"特殊的class文件",这是基本的加密手段.JAVA混淆器有些也是基于这一原理对JAVA类文件进行"篡改的".
ahlon
2008-12-28
打赏
举报
回复
也许是编译.class文件的时侯加了混淆器混淆了。
好像Jbuilder可以混淆编译之后的字节码,当然也有其他的工具。
JVM
(一)-类的加载
JVM
基础
JVM
即JAVA Virtual Machine,是运行java字节码的java虚拟机,用来将编译好的字节码文件加载到操作系统的内存中。
JVM
是一个跨语言的平台,支持Java、Scala、Kotlin、Groovy、Clojure、Jython、Jruby等一百多种语言,此外,
JVM
本身是一个规范,可以运行在不同操作系统并由操作系统去实现。所以,
JVM
与Java语言无关,与
class
文件有关。 JDK、JRE、
JVM
Class
文件格式
二进制字节流(OS内存中的最终形式)
JVM
刨析
1.常见
JVM
实现 Hotspot:目前使用的最多的 Java 虚拟机。 Jrocket:原来属于BEA 公司,曾号称世界上最快的
JVM
,后被 Oracle 公司收购,合并于 Hotspot J9: IBM 有自己的 java 虚拟机实现,它的名字叫做 J9. 主要是用在 IBM 产品(IBM WebSphere 和 IBM 的 AIX 平台上) TaobaoVM: 只有一定体量、一定规模的厂商才会开发自己的虚拟机,比如淘宝有自己的 VM,它实际上是 Hotspot 的定制版,专门为淘宝准备的,阿里、天
被
JVM
虐千万遍,终于把这些
JVM
知识点笔记整理清楚了,我太难了
Java内存区域笔记 运行时数据区域(程序计数器、堆、栈等) 站在线程角度来看堆和栈 深入辨析堆和栈 方法的出入栈 虚拟机中的对象 堆参数设置和内存溢出实战
JVM
的执行子系统
Class
类文件本质,
Class
文件格式
字节码指令 类加载机制 栈桢详解 方法调用详解 基于栈的字节码解释执行引擎 性能优化笔记 常用的性能评价/测试指标 常用的性能优化手段 详细了解应用服务性能优化 垃圾回收器笔记 判断对象的存活 辨析强、弱等
面试官:String长度有限制吗?是多少?还好我看过
点击上方“java大数据修炼之道”,选择“设为星标”优质文章和精品资源, 第一时间送达关注公众号后台回复资源获取实战教学资料+视频哈喽,各位新来的小伙伴们,大家好!由于公众号做了改版,为...
JVM
_01
Class
文件格式
JVM
知识体系 图1
jvm
结构
问题
1: Java 是编译执行的还是解释执行的? 解释 + 热点代码编译 执行 (混合执行) **解析:**其实
JVM
主要对
class
文件中的字节码使用 字节码解释器 进行解释并执行。但是当某一方法调用次数达到即时编译定义的阈值时,就会触发即时编译,这时即时编译器会将IR进行优化,并生成这个方法的机器码,后面再调用这个方法,就会直接调用机器码执行
相关
参数: -Xmixed 混合执行 -Xint 解释执行模式 -Xcomp 编译执行模式 图2 j...
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章