A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Igreaterik 中级黑马   /  2014-3-29 22:28  /  1102 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class文件反汇编的原理是什么,class文件要怎么加密?

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

6 个回复

倒序浏览
反射   通过反射来操作类的字节码。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
我写的一篇入门文章,楼主可以参照着看看

反射.zip

28.33 KB, 下载次数: 49

评分

参与人数 1技术分 +2 收起 理由
朱神必 + 2

查看全部评分

回复 使用道具 举报
本帖最后由 haixian 于 2014-3-30 08:49 编辑

你问题问错了吧,应该是反编译不是反汇编。java文件编译成的class文件是和平台无关的。由java虚拟机解释执行。它应该也像java一样有一定的语法吧,
而c语言它是先翻译成汇编,然后汇编成机器码,它是和平台相关的。可能一个指针他是指向一个具体的内存地址,应该也有反编译的可能吧,只是难度很大。
class文件加密,你只需要对class文件的字节加密就行了,比如对每个字节进行位移或异或操作。进行加密。类加载的时候使用自己写的类加载器进行解密,这个在老师的基础视频里面有例子的。
这只是个人理解。仅供参考。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 haixian 于 2014-3-30 08:50 编辑

class文件加密,你只需要对class文件的字节加密就行了,比如对每个字节进行位移或异或操作。
回复 使用道具 举报
反编译的流程,就是虚拟一个执行环境,看程序执行了那些指令,翻译成相应的语句一般的流程是先把程序调入到数据段,虚拟运行环境,一般这分配文件头部,从纪录指令程序数据段,载入到虚拟环境中,纪录指令,遇到跳转指令,压入栈,形成树结构(看数据结构),遍历每个节点的指令。形成完整程序。
class加密就是用一个加密算法对class文件中的字节进行一定的操作,比如异或、位移等,当然这只是最简单的方法,具体想了解 ,建议你看张孝祥老师的java基础加强中“编写对class文件进行加密的工具类”这节课

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
class加密:兄弟你会先IO操作不? io输出流的读取每个字节后,加密,再io输入流写入新的class文件。
对加密class的文件解密,只有用自己定义的ClaasLoader进入加载类节码。如果要生成对象,就用反射操作这份类节码。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马