`

Java代码加密与反编译(一):利用混淆器工具proGuard对jar包加密

 
阅读更多

文章来自:http://m.blog.csdn.net/blog/DianaCody/38585047

 

Java 代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候。所以一个按照正常方式编译的 Java .class 文件可以非常轻易地被反编译。通常情况下,反编译可以利用现有的工具jd-gui.exe或者jad.exe。

(这两个反编译工具在我的资源里有下载:

jd-gui.exe: http://download.csdn.net/detail/dianacody/7760019

jad.exe: http://download.csdn.net/detail/dianacody/7760093

       有些情况下,为了保护java源码不被别人看到,通常会使用加密手段对java源码进行加密,加密的方式可以利用加密工具(比如java代码混淆工具)、使用加密算法(如DES算法)修改classloader对编译好的.class文件进行加密。

(注:这里推荐一款java代码混淆器,可以混淆函数变量、类、方法名以实现代码加密:proGuard: http://download.csdn.net/detail/dianacody/7760089

 

一、用java混淆器工具proGuard实现加密

这里使用proGuard对jar包进行加密。

1. 解压下载的proguard,解压后进入lib文件把proguard.jar拷贝到自己新建的文件夹里如图:

2. 把需要混淆的jar和jar所依赖的包也放到新建的文件夹,都放在一起,如下图。

3. 写一个配置文件,名称自己定,例如”a”文件,举个简单配置文件例子(那个proguard.map是过后自己生成的),内容如下,其中-injars: 是你需要混淆的jar,-outjars:是你混淆后输出的jar,-libraryjars:是你混淆的jar需要所依赖的jar包,后面的不在一一说 明,可以参考proguard文档,配置文件可以参考文档来对自己混淆的需求来写配置文件。

-injars       TheFirstDesktopApplication1.jar

-outjars      TheFirstDesktopApplication1_out.jar

-libraryjars  <java.home>/lib/rt.jar

-libraryjars appframework-1.0.3.jar

-libraryjarsswing-worker-1.1.jar

-printmappingproguard.map

-overloadaggressively

-defaultpackage ''

-allowaccessmodification

-dontoptimize

 

-keep public class*

{

 public protected *;

}

 

-keep public classorg.**

 

-keep public classit.**

 

4.   把配置文件保存到你建的文件夹下,如下图。

5.点击开始,运行,输入cmd,进入你建的文件夹下,如下图。

6.   然后输入命令语句:java   -jarproguard.Jar  @a 然后回车,如下图。

 

7.   混淆成功,在产生TheFirstDesktopApplication1_out.jar如下图。

8.      混淆器后,利用反编译器jad对没TheFirstDesktopApplication1_out.jar反编译,多了好多a,b,c之类的类文件,对反编译的java文件是很难编译的,即说明混淆成功。

 

        用上面方法试了一下,发现其实混淆效果并不好,使用jd-gui反编译工具就可以轻易看到源码。总结一下,网上找了几个代码混淆工具效果都不好,其实现成工具看来也并不是那么好用。

        然后想想,就换了一种方式,直接使用加密算法对java代码进行解密。在下篇文章里再写。

分享到:
评论

相关推荐

    对java jar包实现混淆加密

    总结,Java jar包的混淆加密是提升代码安全的重要手段,通过ProGuard等混淆工具和加密技术,可以有效降低源代码被逆向工程分析的风险。然而,安全是一个持续的过程,开发者应始终保持警惕,及时更新和优化保护策略。

    SpringBoot项目Jar包加密防止反编译详细讲解(值得珍藏)

    通过使用像ProGuard这样的混淆工具,开发者可以将源代码中的类名、方法名、变量名等替换为无意义的随机字符串,同时调整代码结构,使得反编译后的代码变得难以阅读和理解。在SpringBoot项目中,可以将混淆工具集成到...

    利用混淆器ProGuard混淆java类,防止反编译

    本篇将详细讲解如何使用混淆器ProGuard来混淆Java类,以增加反编译的难度,从而保护你的知识产权。 ProGuard是一款开源的Java字节码混淆、优化和预校验工具。它能够重命名类、方法和字段,使其变得难以理解,同时还...

    最新java jar包混淆工具

    "最新Java JAR包混淆工具"提及的ProGuard正是一种广泛使用的解决方案,它能够对Java字节码进行混淆、优化和压缩,以防止未经授权的反编译和逆向工程。 **ProGuard** 是一个免费的Java类文件混淆器、优化器和 ...

    实现对jar包的混淆加密

    总之,通过对Java jar包进行混淆和加密,我们可以有效提升程序的安全性,防止源代码被轻易反编译和分析。不过,这并不是绝对的安全保障,还需要配合其他安全措施,如服务器端验证、用户权限控制等,才能构建一个全面...

    springboot工程jar包加密

    除了xjar,还有其他一些工具和方法也可以用来加密Java jar包,如ProGuard、JARfuscator等,它们提供混淆、优化和加密等功能,增加逆向工程的难度。 在实际项目中,为了提高安全性,通常会结合使用多种保护措施,...

    ProGuard混淆与dex2jar反编译工具

    为了保护应用程序不被恶意篡改或逆向工程,开发者通常会采用一系列技术手段,其中就包括使用`ProGuard`进行代码混淆以及利用`dex2jar`进行反编译。本文将详细讲解这两个工具的工作原理、使用方法及其在实际应用中的...

    java 混淆、加密js代码

    Java混淆和加密JavaScript代码是保护Web应用程序源代码安全的重要手段,尤其是在公开发布或者与第三方共享时,能够防止恶意用户分析和篡改代码。本压缩包包含的资源专注于这个主题,让我们详细了解一下相关知识点。 ...

    java防反编译jar

    为了防止Java代码被反编译,开发者通常会采用混淆工具,如ProGuard、Allatori、Zelix KlassMaster等。这些工具的主要功能是将可读性强的代码转换为难以理解的形式,使得反编译后的结果变得模糊且难以阅读。混淆过程...

    Java+IDEA+maven混淆打包

    在Java开发过程中,为了保护代码安全和防止反编译,我们常常需要对代码进行混淆处理。本教程将详细介绍如何在IntelliJ IDEA(IDEA)中利用Maven进行混淆打包的步骤,确保整个过程顺利且有效。 首先,我们需要了解...

    java 代码混淆 proguard5.3.3

    ProGuard是Erwin tenholt开发的一款强大的Java字节码处理工具,它能够对Java类文件进行优化、压缩、混淆和预校验,从而提高程序运行效率,减小应用程序大小,并且增加反编译的难度。混淆过程主要是将类、方法和变量...

    Java代码混淆工具proguard

    经典的Java代码混淆工具,可以混淆class,jar类型的文件,防止被反编译,对需要进行源码保护的代码很有用。

    最新的加密混淆工具proguard6.0.3

    **ProGuard**是一款广泛使用的Java代码混淆、优化和压缩工具,尤其在Android开发中起着至关重要的作用。它能够帮助开发者保护应用程序的源代码,防止反编译和篡改,同时也能减小程序体积,提高运行效率。ProGuard ...

    代码混淆—关于android被反编译的两种解决方案

    dex2jar是一款常用的Android反编译工具,它能够将DEX(Dalvik Executable)文件转换为JAR文件,然后使用JD-GUI或者JD-Core等Java反编译器将JAR文件反编译回Java源码。为了防御这种情况,开发者可以采用以下方法: 1...

    jar代码混淆器最新版5.3.3

    **Java代码混淆与ProGuard工具详解** 在Java开发中,为了保护源代码不被轻易反编译和理解,开发者通常会使用代码混淆技术。代码混淆是将可读性强的源代码转换为难以阅读和理解的形式,它能提高软件的安全性,防止...

    Jar包保护加密解决方案

    总的来说,"Jar包保护加密解决方案"是一个涵盖开发、部署和运行全过程的技术实践,涉及到Java编程、加密算法、混淆技术、自定义Class Loader以及JVM的深入理解和应用。通过综合运用这些技术,可以有效提高jar包的...

    Java字节码加密工具

    然而,Java的字节码(.class文件)虽然相对于源代码(.java文件)有所混淆,但仍可以直接通过反编译工具如JD-GUI或JAD进行解析,暴露程序的内部实现。因此,为了防止恶意用户窃取或篡改代码,使用Java字节码加密工具...

    proguard4.6 代码混淆器

    在Android开发中,代码安全和优化是至关重要的环节,而ProGuard 4.6正是这样一个工具,专为Java代码提供混淆、优化、压缩和预检查等功能。它能有效地保护你的应用程序源代码,避免恶意用户反编译,同时减小程序包...

    proguard,代码混淆

    代码混淆是将源代码中的类名、方法名和变量名转换为无意义的短标识符的过程,以此来增加反编译的难度。ProGuard通过重命名类、方法和字段,以及删除未使用的代码,使得逆向工程变得极其困难。这对于保护知识产权、...

    安卓、Java反编译工具

    反编译结果可能与原始源代码有所不同,特别是当应用使用了代码混淆技术时,还原出的代码可能会难以阅读和理解。然而,通过结合多种工具和方法,开发者可以逐步揭示程序的内部工作原理。 总的来说,安卓和Java反编译...

Global site tag (gtag.js) - Google Analytics