
正文
java源代码混乱 java源代码编译之后得到什么
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
【转】如何保护Java代码
以下从技术角度就常见的保护措施 和常用工具来看看如何有效保护java代码:1. 将java包装成exe 特点:将jar包装成可执行文件,便于使用,但对java程序没有任何保护。不要以为生成了exe就和普通可执行文件效果一样了。这些包装成exe的程序运行时都会将jar文件释放到临时目录,很容易获取。常用的工具有exe4j、jsmooth、NativeJ等等。jsmooth生成的exe运行时临时目录在exe所在目录中或是用户临时目录 中;exe4j生成的exe运行时临时目录在用户临时目录中;NativeJ生成的exe直接用winrar打开,然后用zip格式修复成一个jar文件,就得到了原文件。如果只是为了使用和发布方便,不需要保护java代码,使用这些工具是很好的选择。2. java混淆器特点:使用一种或多种处理方式将class文件、java源代码进行混淆处理后生成新的class,使混淆后的代码不易被反编译,而反编译后的代码难以阅 读和理解。这类混淆器工具很多,而且也很有成效。缺点:虽然混淆的代码反编译后不易读懂,但对于有经验的人或是多花些时间,还是能找到或计算出你代码中隐藏的敏感内容,而且在很多应用中不是全部代码都能混淆的,往往一些关键的库、类名、方法名、变量名等因使用要求的限制反而还不能混淆。3. 隔离java程序到服务端特点:把java程序放到服务端,让用户不能访问到class文件和相关配套文件,客户端只通过接口访问。这种方式在客户/服务模式的应用中能较好地保护java代码。缺点是:必须是客户/服务模式,这种特点限制了此种方式的使用范围;客户端因为逻辑的暴露始终是较为薄弱的环节,所以访问接口时一般都需要安全性认证。4. java加密保护特点:自定义ClassLoader,将class文件和相关文件加密,运行时由此ClassLoader解密相关文件并装载类,要起到保护作用必须自定 义本地代码执行器将自定义ClassLoader和加密解密的相关类和配套文件也保护起来。此种方式能很有效地保护java代码。缺点:可以通过替换JRE包中与类装载相关的java类或虚拟机动态库截获java字节码。 jar2exe属于这类工具。5. 提前编译技术(AOT) 特点:将java代码静态编译成本地机器码,脱离通用JRE。此种方式能够非常有效地保护java代码,且程序启动比通用JVM快一点。具有代表性的是GNU的gcj,可以做到对java代码完全提前编译,但gcj存在诸多局限性,如:对JRE 5不能完整支持、不支持JRE 6及以后的版本。由于java平台的复杂性,做到能及时支持最新java版本和JRE的完全提前编译是非常困难的,所以这类工具往往采取灵活方式,该用即时编译的地方还是 要用,成为提前编译和即时编译的混合体。缺点:由于与通用JRE的差异和java运用中的复杂性,并非java程序中的所有jar都能得到完全的保护;只能使用此种工具提供的一个运行环境,如果工具更新滞后或你需要特定版本的JRE,有可能得不到此种工具的支持。 Excelsior JET属于这类工具。6. 使用jni方式保护特点:将敏感的方法和数据通过jni方式处理。此种方式和“隔离java程序到服务端”有些类似,可以看作把需要保护的代码和数据“隔离”到动态库中,不同的是可以在单机程序中运用。缺点和上述“隔离java程序到服务端”类似。7. 不脱离JRE的综合方式保护特点:非提前编译,不脱离JRE,采用多种软保护方式,从多方面防止java程序被窃取。此种方式由于采取了多种保护措施,比如自定义执行器和装载器、加密、JNI、安全性检测、生成可执行文件等等,使保护力度大大增强,同样能够非常有效地保护java代码。缺点:由于jar文件存在方式的改变和java运用中的复杂性,并非java程序中的所有jar都能得到完全的保护;很有可能并不支持所有的JRE版本。 JXMaker属于此类工具。8. 用加密锁硬件保护特点:使用与硬件相关的专用程序将java虚拟机启动程序加壳,将虚拟机配套文件和java程序加密,启动的是加壳程序,由加壳程序建立一个与硬件相关的 受保护的运行环境,为了加强安全性可以和加密锁内植入的程序互动。此种方式与以上“不脱离JRE的综合方式保护”相似,只是使用了专用硬件设备,也能很好地保护java代码。缺点:有人认为加密锁用户使用上不太方便,且每个安装需要附带一个。从以上描述中我们可以看出:1. 各种保护方式都有其优缺点,应根据实际选用2. 要更好地保护java代码应该使用综合的保护措施3. 单机环境中要真正有效保护java代码,必须要有本地代码程序配合当然,安全都是相对的,一方面看你的保护措施和使用的工具能达到的程度,一方面看黑客的意愿和能力,不能只从技术上保护知识产权。总之,在java 代码保护方面可以采取各种可能的方式,不可拘泥于那些条条框框。
相关问答
Q1: 修改java源码解决keys报错
编程错误解决方法
Java入门基础第4天《Java编程规范及编译源代码常见错误的解决方法》

爱笑的陈sir
原创
关注
10点赞·484人阅读
大家傍晚好呀!通过学习Java入门基础第3天我们了解了怎么用记事本编写运行Java程序,但是这两天我收到了很多大家的一部分问题?说一下问的最多的吧。如,我的程序运行不了,一行代码,5个报错,编写、编译错误、编码格式错误等等,总之五花八门。
根据所述问题,今天聊聊Java编程规范。方便大家观看,把之前的文章整合了。
Java入门基础第1天(什么是Java?)
Java入门基础第2天(java jdk下载与安装教程)
Java入门基础第3天《使用记事本编写运行Java程序》
Java编程规范及编译源代码常见错误的解决方法
一、编程规范
二、命名规则
三、编码格式规定
四、javac 编译器编译源代码文件常见的问题
五、 解释执行.dass文件常见问题
一、编程规范
我们先简单了解一下什么是编程规范?
编程规范是对编程的一种约定,主要作用是增强代码的可读性和可维护性,便于代码重用
二、命名规则
基本要求是,程序中的各个要素都遵守命名规则,
然后在编码中严格按照编码格式编写代码。
命名规则包括以下几点:
► 包的名称由一个小写字母序列组成。
► 类的名称由大写字母开头,其他字母都由小写的单词组成。
► 类的实例的名称由一个小写字母开头,后面的单词由大写字母开头。
► 常量的名称都大写,并且指出完整含义。 参数的名称无其他具体规定。
► 数组的命名使用“类型[] 数组名”的形式。
三、编码格式规定
► 程序最开始编写导入包和类语句,如 import 语句。
import 语句可以有多行,编写完 import 语句后空一行。
► 定义 public 类,顶格书写。类的主体左括号{不换行书写,右括号}顶格书写。
► 定义 public 类中的变量,缩进书写。
► 定义方法用缩进书写,方法的左括号{不换行书写,右括号}和方法首行第一个字符对齐。方法体要再次缩进书写,最后一个变量定义和第一个方法定义之间、方法和方法之间最好空一行。
四、javac 编译器编译源代码文件常见的问题
我们在使用javac 编译器编译源代码时文件时,会出现几个常见的报错问题。
错误描述1、Error:cannot read:HelloJava.java javac。 工具程序找不到指定的 java文件
解决方法:这个需要检查一下你的文件是否存储在当前目录中,或文件名是否错误。
错误描述2、 HelloJava.java:4:class HelloJava is public,should be declared in a file named MyApplication.java。
解决方法:这是你的源文件中类的名称和源文件名称不符,
需要确定源文件名称和类名称是否相同。
错误描述3、 HelloJava.java:6:cannot find symbol。
解决方法:可能是你的源程序文件中某些代码部分输入错了,
最常见的原因可能是没有注意到字母的大小写。
错误描述4、Javac 不是内部或外部命令、可执行程序或批量文件。
解决方法:这是你的 path 设置有误或这你没有在 path 系统变量中加入 JDK 的 bin 目录。
五、 解释执行.dass文件常见问题
我们在解释执行 .dass 文件时,可能会出现以下几个常见的错误报错问题:
错误描述1、 Exception in thread “main” java.lang.NoClassDe£FoundError。
报错出现在Java 工具程序找不到所指定的 .class 类,
需要确定指定的类是否存储在当前目录中,名称是否正确。
错误描述2、 Exception in thread “main” java.lang.NoSuchMetliodError:main。
问题出现在没有指定 Java 程序的入口。
Java 工具程序指定的类必须有一个程序入口,
也就是必须包括 main(String args[]) 这个方法。
鼓励: 如果你觉得博主的文章的不错或者对你有帮助,
可以点一个免费的关注支持一下博主,
如果三连收藏支持就更好了吖,嘿嘿嘿,谢谢。
Q2: java反编译后得到的源码 很混乱 怎么办
不是每个反编译都能完美java源代码混乱的java源代码混乱,用eclipse规范下代码,然后不符合的语法的方法,自己换成适合当前jdk版本支持的就可以java源代码混乱了,反编译还是得花力气在代码的上,偷懒有限啊。
关于java源代码混乱和java源代码编译之后得到什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。





