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 代码保护方面可以采取各种可能的方式,不可拘泥于那些条条框框 。
计算机毕业设计程序代码需要检测吗?怎么逃过防抄袭软件的检测?计算机毕业设计会查重吗?
我100%保证, 代码是不会查重的, 毕竟用到的基础框架都类似, 当然,不要买一些太过陈旧的作品, 这个会让老师不舒服
毕业设计关于计算机反向的怎么选题?
尽量选择一些java类型的课题 也可以选择php类型的课题主要原因是由于这两类课题在计算机毕业设计中经常常见, 比如各种复杂的java管理系统, 代码量是比较多的, 能写出不错的有深度有创新的东西
毕业设计不会写代码怎么办?
毕业设计写的代码理论上都不会在本科四年的教学中教你, 所以需要你自学, 不过由于资料比较多, 可以用一些已有的项目去学习修改 比如ssm框架ssh框架的思想都非常相似
如何防止java文件被反编译无法防止 。.class文件java代码反剽窃的标准是公开的java代码反剽窃,无法防止别人反编译你的代码 。
你顶多可以用代码扰乱工具扰乱你的代码,这样反编译的代码就难以阅读 。比如可以试试用proguard来扰乱(“加密”)和反扰乱(“解密”)你的代码 。
但是java有那么多很不错的代码阅读分析工具,即使你用了扰乱器,也不能保证代码的安全 。
怎么防止Java开发出来的程序被别人反编译防止Java开发出来的程序被别人反编译有很多种方法java代码反剽窃 , 下面给java代码反剽窃你介绍几种:
1、隔离Java程序
最简单的方法就是让用户不能够访问到Java Class程序,这种方法是最根本的方法 , 具体实现有多种方式 。例如,开发人员可以将关键的Java Class放在服务器端,客户端通过访问服务器的相关接口来获得服务,而不是直接访问Class文件 。这样黑客就没有办法反编译Class文件 。目前,通过接口提供服务的标准和协议也越来越多,例如 HTTP、Web Service、RPC等 。但是有很多应用都不适合这种保护方式,例如对于单机运行的程序就无法隔离Java程序 。
2、对Class文件进行加密
为java代码反剽窃了防止Class文件被直接反编译,许多开发人员将一些关键的Class文件进行加密,例如对注册码、序列号管理相关的类等 。在使用这些被加密的类之前 , 程序首先需要对这些类进行解密,而后再将这些类装载到JVM当中 。这些类的解密可以由硬件完成,也可以使用软件完成 。
3、转换成本地代码
将程序转换成本地代码也是一种防止反编译的有效方法 。因为本地代码往往难以被反编译 。开发人员可以选择将整个应用程序转换成本地代码 , 也可以选择关键模块转换 。如果仅仅转换关键部分模块 , Java程序在使用这些模块时,需要使用JNI技术进行调用 。
4、代码混淆
代码混淆是对Class文件进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能(语义) 。但是混淆后的代码很难被反编译 , 即反编译后得出的代码是非常难懂、晦涩的,因此反编译人员很难得出程序的真正语义 。从理论上来说 , 黑客如果有足够的时间,被混淆的代码仍然可能被破解,甚至目前有些人正在研制反混淆的工具 。但是从实际情况来看 , 由于混淆技术的多元化发展,混淆理论的成熟,经过混淆的Java代码还是能够很好地防止反编译 。
不同保护技术比较希望能给大家带来参考:
论文java代码怎么降重论文java代码降重方法如下java代码反剽窃:
提前知网论文查重 。论文测谎仪(cnki中国知网学术不端论文检测系统)知网论文查重在一定程度上遏制了明目张胆的学术作假行为,但也助长了造假的水平进化 。为了防止重复率过高,同学们可以提前私自到中国知网查重官网“学术不端网”的“知网查重入口”进行抄袭检测 。
“反抄袭”软件遭遇大学生“反反抄袭”,越来越多的学生已经开动了“脑筋” 。毕竟大家从小就在应试教育中摸爬滚打,大家早就练就了一身超常的反侦察功夫,“道高一尺,魔高一丈”,为了对付“知网论文查重”软件,大学生想出了五花八门的“反反抄袭”密招 。
关键词替换法:核心词块包括:文献检索,教育研究。句子的意思是要表达文献检索的作用 。因此可以修改为“文献检索是研究者进行教育研究所必须掌握的一门技能” 觉得这个改的有点离谱 , 可以改成这样“文献检索是教育研究的重要组成部分”又或“在进行教育研究时,文献检索发挥着十分关键的作用” 。
躲避“知网论文查重”的方法听起来有些笨 , 但却很“实用” , 那就是——改写 。“不是论文不能抄,要看你会抄不会抄!” 。东拼西凑其实并没有过时,关键在于要仔细,不能露出马脚 。首先在不同的资料当中找到java代码反剽窃我需要的东西 , 然后把每句话变变句式,换换说法 , 加一些解释性的扩充,略作增删,最后把这些部分组织到一起,论文就大功告成了 。
虽然繁琐一点,但是最后出炉的论文,绝对就像去韩国做了整容手术,焕然一新!再牛的测谎仪见到我这论文 , 估计也只有哀叹的份儿 。多加参考书目,把脚注一通乱加,那就是双重保险了!”有的时候,东拼西凑出一大段话 , 但是又不知道怎么改写更好,就干脆给这段话原封不动地加上一个引号,然后再给这段话编一个相应的脚注 。
首先,‘引用’部分不算作抄袭,论文测谎仪会自动剔除;其次,老师根本不可能有精力去检查我的每个脚注是否真实 。这样一来,我的抄袭怎么可能被发现呢?
所谓重构法,依然引入核心词块的理念 。具体操作分为三步 , 第一步:读懂原文意思 。第二部,拆解,保留原文核心词块;第三步,结合原文意思,看剩下的词块 , 将其重新造句 。
例如:通常课题确定后,接下来一步就是文献检索 , 即按照课题的目的要求,寻找研究所需要的文献资料 。原文意思大家应该都懂 。直接进入第二步,取出核心词 。主要有:课题、文献检索、课题目的、文献资料。以此为词汇,进行重构 。改为:我们进行课题研究时,需要围绕课题目的,检索与之相关文献资料 。
如何防止JAVA程序源代码被反编译java代码反剽窃我们都知道JAVA是一种解析型语言java代码反剽窃,这就决定JAVA文件编译后不是机器码,而是一个字节码文件,也就是CLASS文件 。而这样的文件是存在规律的,经过反编译工具是可以还原回来的 。例如Decafe、FrontEnd,YingJAD和Jode等等软件 。下面是《Nokia中Short数组转换算法》
类中Main函数的ByteCodejava代码反剽窃:0 ldc #162 invokestatic #185 astore_16 return其源代码是java代码反剽窃:short [] pixels = parseImage("/ef1s.png");
我们通过反编译工具是可以还原出以上源代码的 。而通过简单的分析,我们也能自己写出源代码的 。
第一行:ldc #16
ldc为虚拟机的指令,作用是:压入常量池的项,形式如下ldc index这个index就是上面的16,也就是在常量池中的有效索引,当我们去看常量池的时候,我们就会找到index为16的值为String_info , 里面存java代码反剽窃了/ef1s.png.
所以这行的意思就是把/ef1s.pn作为一个String存在常量池中 , 其有效索引为16 。
第二行:2 invokestatic #18
invokestatic为虚拟机指令,作用是:调用类(static)方法,形式如下
invokestatic indexbyte1 indexbyte2
其中indexbyte1和indexbyte2必须是在常量池中的有效索引,而是指向的类型必须有Methodref标记,对类名,方法名和方法的描述符的引用 。
所以当我们看常量池中索引为18的地方,我们就会得到以下信息:
Class Name : cp_info#1
Name Type : cp_info#19
1 和19都是常量池中的有效索引 , 值就是右边中的值,再往下跟踪我就不多说了,有兴趣的朋友可以去JAVA虚拟机规范 。
这里我简单介绍一下parseImage(Ljava/lang/String;)[S 的意思 。
这就是parseImage这个函数的运行,我们反过来看看parseImage的原型就明白了
short [] parseImage(String)
那么Ljava/lang/String;就是说需要传入一个String对象,而为什么前面要有一个L呢 , 这是JAVA虚拟机用来表示这是一个Object 。如果是基本类型,这里就不需要有L了 。然后返回为short的一维数组,也就是对应的[S 。是不是很有意思,S对应着Short类型 , 而“[”对应一维数组,那有些朋友要问了,两维呢 , 那就“[[”,呵呵 , 是不是很有意思 。
好了,调用了函数,返回的值要保存下来吧 。那么就是第三行要做的事情了 。
【java代码反剽窃 java代码反编译】java代码反剽窃的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于java代码反编译、java代码反剽窃的信息别忘了在本站进行查找喔 。

    推荐阅读