2 u014680022 u014680022 于 2016.05.01 10:34 提问

Java怎么防止反编译?求教

众所周知,Java反编译十分容易,但如何防止反编译呢?如果反编译了,还有什么安全可言呢?

4个回答

zmcmm
zmcmm   2016.05.01 11:47
已采纳

代码混淆,核心代码放服务器

u014680022
u014680022 代码混淆的话维护时看不懂啊
大约 2 年之前 回复
caozhy
caozhy   Ds   Rxr 2016.05.01 13:04

代码混淆是对生成的class目标文件混淆,混淆可以加大反编译和阅读反编译后代码的难度。你的原始源代码不受影响。

a332324956
a332324956   2016.05.01 14:19

代码混淆+加固。混淆时将map保留,后续分析异常需要

CSDNXIAOS
CSDNXIAOS   2016.05.01 10:42

1.proguard,已经下载好,与该文件同目录下。版本为4.7。其原理就是将jar中的包名、类名、属性名、方法名还有代码重新命名、编写一遍,
2.尽量下载最新的proguard,否则混淆代码时可能会报与你的jdk版本不兼容的错误(我使用的是1.7)
3.解压proguard,执行 bin目录下的proguardgui.bat。
    4.运行,点击左边“input/output” 菜单,......
答案就在这里:java防止反编译
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java class防止反编译,最大限度的保护自己的代码
java以其跨平台、免费、安全等特点,被越来越多的应用到大型的系统中。正是由于其代码的跨平台性,是解析型语言才使得它很容易被反编译成源码,从而造成公司代码的泄露,设置时运用框架的泄露。本文从各个方面介绍了防止class被反编译。从而保护自己的知识产权不受侵害。 包括混淆技术,加密技术等。
最简单的 java 防反编译技巧
public class CompileForbid { public static void main(String[] args) { try { System.out.println("-------"); //防止反编译的处理 if (654789 == new Random().nextInt()
JAVA加密 保护源代码 防止反编译的工具
众所周知,java开发语言提供了很方便的开发平台,而且开发出来的程序很容易在不同的平台上面进行移植,现在越来越多的人使用它开发软件。 Java有了它方便的一个方面,但是他同时也带给了开发者一个烦恼,这就是保护的办法不多,而且大多数不是很好用,这样自己辛苦开发出来的程序很容易被人反编译过来而据为己有,一般情况下,大多数的人都是用混编器(java obfuscator)来把开发出来的程序进行打乱以达到没有办法来反编译观看源代码,但是这种办法在网上很容易找到相关的软件来重新整理,那么这个混编只能控制一些本来也没有办法动您的软件的人,而对于一些掌握工具的人几乎是透明的,还有就是利用硬件加密锁,但大多数公司提供的硬件加密锁只是提供了一些dll的连接或简单的api调用,只要反编译他们,就很容易把一些api调用去掉,这样硬件加密锁也就不起作用了,但是现在到底有没有好的办法呢? 市场上现有的几款防止反编译工具其实都是改进了加载过程。但是加载到JAVA虚拟机后一样可以得到CLASS字节码的。 只要懂JAVA原理的人其实很用意破解的. JAVACOMPILE 这款工具就不一样了,javacompile 它是修改了虚拟机内核, 用户目录里没有需要的JAVA字节码,而是当JAVA需要调用函数的时候才通过网络下载相对应的已经二次编译的字节码,就算用户通过 CLASS.getClass 也得不到可以用来反编译字节码。 真正意义上保护了JAVA知识产权。 个人版限制编译30个CLASS文件,文件打包方式下载。
保护你的JAVA / .net 程序,终极避免被反编译方法研究
反编译真的让JAVA / .net 制作者讨厌的东西。你花大量的精力做了一个很好的软件,却有人盗用,盗用都算了人家还用来商业... 就像某文说的.你的软件买 XXXXXXXX大元.人家公司买200元..... 怎么做到呢?就是通过反编译。我们可以看到就算保护很强的reflector4/6 也未能幸免如果你不将你的Application进行保护,它将很容易被反编译
java项目的jar包加密(防止反编译)
最近给公司写了一个项目,需要给其他公司用,为了不让别人看到源码,将项目打成了jar包,但是jar包用反编译工具还是能很轻松的看到源码。所以想到了加密jar包,用的是ProGuard,下载地址:https://sourceforge.net/projects/proguard/files/。       其实jar包加密只是增加了反编译时间,理论上还是能破解的,但是有总比没有好。废话少说,开始吧。
Java加密Jar包和Class文件防止反编译的方法
众所周知,Java编译后的Jar包和Class文件,可以轻而易举的使用反编译工具(如JD-GUI)进行反编译,拿到源码。为了保护自己发布的Jar包和Class文件,采用的方式大多是混淆或加密(混淆工具如ProGuard),本文介绍的是采用jvmti方式对Class文件进行加密,使用C++生成加密和解密库,先用加密库对Jar包进行加密,将加密后的Jar包及解密库文件发布出去,执行时候需要JVM引入解
程序防止反编译(或者说增加反编译的难度)的一些思路
1.代码混淆。 看过关于Javascript代码混淆的文章,当时没仔细看,只是知道了有这么回事。 另外,C#之类的当然也可以混淆。 2.加密程序集,调用时加载解密dll 3.设计“逻辑炸弹”,当一个进程或程序被反复跟踪,就“引爆”整个程序,使程序崩溃,进而无法被反编译。
防止Class类反编译的方法,对Class进行加密
首先在介绍反编译器之前,要提及JDK自带的一个工具 [javap] ,它是一个Java代码反汇编器。 然后其次是有一个sourceforge中开源的一个反编译器 Jode(http://jode.sourceforge.net/download.html) 下载。 反编译对安全构成的威胁是显而易见的,因此源码保护也就必不可少的。其实,反编译和代码保护是一场无停止斗争,双方都在争斗中得以发展。
教大家防止Jar包被反编译
加密的方法就是,向Jar注入无效代码(不合法的,或者根本不是代码的字符串)。 那么无效的代码又怎么能正确运行呢? 答案就是,你要保证你的代码永远不会执行到那一步。 我作一个简单的例子说明: 我们建立一个项目: package com.TestJar; public class Main { public static void main(String[]
防止你的Java程序被反编译的方法
1〉针对windows平台客户 可以考虑使用商用软件如 Excelsior Jet 将你的程序.jar文件转化为一个可执行文件(.exe). This is foolproof: it is impossible to get the .java file back if you use Excelsior Jet (so long for all the people saying "i