如何覆写URLClassLoader 动态解密des加密过的jar包

流子 服务器负责人  2010-12-17 11:45:09
项目本来是用混淆java代码的方式去处理的,这样可以防止源代码外泄,但是经过混淆后的代码一旦抛出异常,堆栈的行数却完全和原先的不一致,查错会非常麻烦,不知各位有什么更好的加密方法?
我打算对jar包进行DES加密,然后类载入时再进行动态解密,不知各位有什么经验或者办法,希望得到高手指教,谢谢咯!
...全文
192 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
树成 2010-12-25
你只要自己实现一个ClassLoader就可以了,实现其实很简单,就是把类全限定名变成本地路径,然后查找class文件并载入内存中,你在其中嵌入解密过程即可。
这样加密其实是有意义的,你可以将密钥分离出来,只有拥有密钥的情况下程序才能运行,通过这种授权,可以更好的保护代码。
回复
辛鹤 2010-12-25
http://hi.baidu.com/fan8888/blog/item/25f5ad01aae9f180e950cd94.html
回复
abc130314 2010-12-25
曾经我做过,用native方法写的。
回复
龙四 2010-12-25
这种方法太垃圾了,稍微懂点java的人只要反编译你的classloader,立马就可以解密你的jar,然后反编译
回复
DES 解密需要密钥,这个密钥肯定存在某个地方,因此这种保护源代码的方法无济于是!
回复
night__cat 2010-12-24
感谢eswn
回复
Jlins 2010-12-24
很好 .学习了[Quote=引用 1 楼 eswn 的回复:]

楼主看下这个:
http://hi.baidu.com/fan8888/blog/item/25f5ad01aae9f180e950cd94.html

XML code





<!-- 保持所有的属性(过时的方法,文件名,行号、本地变量表),在系统允许过程中,可能会发生错误信息,
……
[/Quote]
回复
流子 2010-12-18
感谢eswn
回复
eswn 2010-12-18
[Quote=引用楼主 jiangguilong2000 的回复:]
我打算对jar包进行DES加密,然后类载入时再进行动态解密,不知各位有什么经验或者办法,希望得到高手指教,谢谢咯!
[/Quote]
如果你让程序有自解密功能,那用户就会把解密后的包从内存中取出,然后就和没有加密是一样了。
回复
eswn 2010-12-18
楼主看下这个:
http://hi.baidu.com/fan8888/blog/item/25f5ad01aae9f180e950cd94.html






<!-- 保持所有的属性(过时的方法,文件名,行号、本地变量表),在系统允许过程中,可能会发生错误信息,
如果不保存这些信息,出错时很难跟踪代码,为方便调试保留了这些信息 -->
<attribute name="Deprecated, SourceFile, LineNumberTable, LocalVariableTable">
<patternset refid="catic" />
</attribute>


这个问题也没有很好的解决方法:如果混淆后有问题,那么拿没混淆的代码再现时,就知道了,像有的卫星或设备,发射一个,还要在地面有同样的一个做调试一样的道理。
回复
相关推荐
发帖
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2010-12-17 11:45
社区公告
暂无公告