代码保护(二) 通过Java反编译工具测试加密效果
上节介绍了当下几款代码保护工具,本节介绍反编译工具对加密的软件进行破解。
反编译工具:jd-gui
打包工具:exe4j
脱壳工具:PEID
调试工具:OllyICE
一、未加密状态
测试过程:
1.运行发布的clock.exe文件
2.在C盘AppData\Local\Temp\目录下搜索jar并拷贝到新建文件夹
3.在jd-gui中打开可将.class字节文件反编译得出程序代码
二、测试常用加密软件
1、使用DRMsoft-EXEResPacker加密
(1)进行加密:
(2)得到加密文件并运行
(3)无法正常打开C盘AppData\Local\Temp\目录,双击后闪退
(4)使用PEID查壳工具检测加密外壳 ,未发现程序外壳,提示程序编码语言为:Borland Delphi 6.0 - 7.0 [Overlay],(检索得知:可能是作者自己写的壳。PE头在加密情况下,提取工具提取不到)。
(5)使用OllyDBG载入程序寻找关键(算法)的调用,修改有关汇编语言达到软件破解的目的
(6)但最终失败没能找到明显的函数调用,以及在搜索中也没能找到常用的字符串使用。最终未能破解成功。本软件可以用来进行加密。
2、使用EXECryptor加密
(1)加密程序Clock.exe
(2)设定参数执行文件后出现如下错误,检索未果
(3)查阅帮助文档得EXECryptor未提供支持Java的API
(5)此软件不能对java项目加密
3、使用VProject加密
(1)发现该软件不支持Java文件加密
三、总结及解决方案
由于Java语言面向对象和编译成中间字节码执行的特点,导致在使用Javac编译成class文件后,在编译的过程,不像C/C++或C#那样在编译时能进行加密或混淆,而是直接对其进行符号化、标记化的编译处理,其中间码与机器码之间存在特定的对应关系就可以根据class文件借助反编译工具反向解析出原来的Java文件。所以上述的非针对Java语言的加密软件在加密Java编码的exe文件后出现了不少错误。
之前在寻找加密软件的过程中,未能意识到Java 的语言的特性,导致收集来的不少软件都不能完成对Java可执行文件的加密。进一步了解,得知常用的Java反盗版解决方案有如下几种:
1.绑定序列号
在序列号生成器中使用私钥将用户返回的信息(硬盘序列号,用户名)进行加密得到相应的注册序列号;在序列号合法性判断函数中使用私钥将用户输入的注册序列号解密;在运行时,对TEMP文件夹下做相应的保护处理,由此达到防止盗版的目的。
2.代码混淆
代码混淆是把代码打乱,并掺入一些随机或特殊的字符,让代码的可读性大大降低,进而使得破解的时长变长,其本质是打乱代码的顺序、将各类符号(如类名、方法名、属性名)进行随机或乱命名,使其无意义,降低代码的可阅读性、可理解性。
常用的Java代码混淆器有:ProGuard、RetroGuard、JavaGuard等;以ProGuard为例,在eclipse中可以整合ant,在编译生成.class文件时进行混淆。
3. ExcelsiorJET
ExcelsiorJET是一款通过提前(Ahead-Of-Time(AOT))编译技术增强的Java虚拟机,也含有当前大多数J2SE VM环境中的使用JIT编译技术。AOT编译器能够将Java代码转化为传统的Windows可执行文件(EXE、DLL和NT服务)或Linux二进制文件(可执行文件或共享库),他们如同由C++、FORTRAN或COBOL编写的程序一样,可以直接在硬件上运行。
java代码保护的解决方案:
①.在编译生成.class文件时,使用混淆器增加反编译破解难度;
②.在生成jar转化exe文件时使用Excelsior JET转换为二进制exe文件
③.对exe可执行文件进行加壳加密保护。
代码保护(二) 通过Java反编译工具测试加密效果相关推荐
- Java代码混淆案例(附反编译工具)
我们开发的软件上线后,经常会遇到核心代码不希望给别人抄袭,但系统是用Java开发的,又无法避免被反编译的情况,这样可以用代码混淆的方式来解决. 一.编译 顾名思义,就是将我们写的代码运行一遍,然 ...
- JAVA反编译工具精选
===================================================================== JAVA 语言是 1995 年 5 月由 SUN 公司发布的 ...
- JAVA反编译工具总结
JAVA反编译工具总结 JAVA语言是1995年5月由SUN公司发布的,由于其安全性高.代码优化.跨平台等特性,迅速取代了很多传统高级语言,占据了企业级网络应用开发等诸多领域的霸主地位. 不过,JAV ...
- 一些Java反编译工具/源代码查看工具的介绍
2019独角兽企业重金招聘Python工程师标准>>> 有的朋友抱怨他们在使用他们公司的闭源框架时看不到底层的源代码.那么可以尝试使用一些Java反编译工具. 下面我举个例子介绍具体 ...
- java反编译工具_JDA Java反编译工具的下载和使用手册
JDA(javadecompile analysis)是一款以dex为核心的java反编译工具,同时支持apk.dex.jar文件的反编译,支持动态重命名.该软件主要是用来反编译分析代码而不是反编译出 ...
- java 反编译工具=_JAVA反编译工具精选
目前,比较流行的JAVA反编译工具有近30种,其中有三款堪称精品: 一. 应用广泛的JAD 在众多的JAVA反编译工具中,有几种非常著名的工具使用了相同的核心引擎--JAD,其中主要包括:Front ...
- 介绍一款好用的java反编译工具 - jd-gui
当java应用程序在运行过程中遇到问题时,一般会抛出异常并打印堆栈信息,这些堆栈信息链中常常可以看到一些二方包和三方包.在排查问题时,很多时候我们需要查看这些二方包和三方包的源码.二方包是公司内部其它 ...
- Java反编译工具-JD-GUI下载以及使用
介绍 Java反编译工具-JD-GUI 下载 https://download.csdn.net/download/badao_liumang_qizhi/10798142 使用 下载工具,双击exe ...
- java反编译工具_ReverseTool逆向工具集合
反向工具 逆向工具集合 真棒骇客 Java和Jar(Android) jd-gui jar包浏览工具,对应的IDE插件,JD-Eclipse / JD-IntelliJ Luyten一个用于Procy ...
最新文章
- android radiobutton 分组,Android 第十课——UI RadioButton
- 迁移性好、多用途,港中文提出特征分离的无监督人类三维姿态表征​
- ****题(alb)
- 试题导入mysql乱码_解决Mysql导入乱码问题
- 3306端口的入侵【转】
- 云图说|一张图带你了解华为云分布式数据库中间件
- ES6--Let 和 const 命令
- 基于WinForm的多语言开发之界面加载
- 【前端】javascript判断undefined、null、NaN;字符串包含等
- matlab中pts什么意思,【网安学术】使用PTS和SLM联合技术降低FBMC-OQAM系统的PAPR
- Java、JSP公文流转系统
- TouchGFX如何校准电阻触摸屏
- 读书笔记:《遇见未知的自己》
- 精英问题,大家没事可以做一做
- linux生成checksum,SF2281修改Lic授权ID生成新checksum生成器
- 綾波レイ(II)の詩
- Java 输出全部的希腊字母
- 珍藏的几个学术网站--总有你需要的时候哦!
- GeoGebra入门之一分钟制作光的反射动态仿真模拟课件
- android架构师解压密码,咕泡Java架构师第三期完整版