黑马程序员技术交流社区

标题: 这个问题我疑惑了很久 [打印本页]

作者: Igreaterik    时间: 2014-3-29 22:28
标题: 这个问题我疑惑了很久
class文件反汇编的原理是什么,class文件要怎么加密?

作者: 向阳泪无痕    时间: 2014-3-29 23:50
反射   通过反射来操作类的字节码。
作者: lwy0319    时间: 2014-3-30 02:38
我写的一篇入门文章,楼主可以参照着看看

反射.zip

28.33 KB, 下载次数: 46


作者: haixian    时间: 2014-3-30 08:22
本帖最后由 haixian 于 2014-3-30 08:49 编辑

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

作者: haixian    时间: 2014-3-30 08:28
本帖最后由 haixian 于 2014-3-30 08:50 编辑

class文件加密,你只需要对class文件的字节加密就行了,比如对每个字节进行位移或异或操作。
作者: Saner    时间: 2014-3-30 11:00
反编译的流程,就是虚拟一个执行环境,看程序执行了那些指令,翻译成相应的语句一般的流程是先把程序调入到数据段,虚拟运行环境,一般这分配文件头部,从纪录指令程序数据段,载入到虚拟环境中,纪录指令,遇到跳转指令,压入栈,形成树结构(看数据结构),遍历每个节点的指令。形成完整程序。
class加密就是用一个加密算法对class文件中的字节进行一定的操作,比如异或、位移等,当然这只是最简单的方法,具体想了解 ,建议你看张孝祥老师的java基础加强中“编写对class文件进行加密的工具类”这节课
作者: 清风木扬    时间: 2014-3-30 13:44
class加密:兄弟你会先IO操作不? io输出流的读取每个字节后,加密,再io输入流写入新的class文件。
对加密class的文件解密,只有用自己定义的ClaasLoader进入加载类节码。如果要生成对象,就用反射操作这份类节码。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2