
正文
java代码jar包混淆 jar包的混淆加密
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java 代码混淆 用什么命令
Jockyjava代码jar包混淆的下载和配置
OperaMasks上的下载链接已经失效java代码jar包混淆,请移步CSDN自行搜索下载
1、下载完成后解压得到名为org.apusic.jocky_1.0.3的文件夹java代码jar包混淆,把这个文件夹放到eclipse根目录的plugins文件夹下(myeclipse和eclipse同理)。
2、重启eclipsejava代码jar包混淆,右键一个工程文件,出现Jocky选项说明OK。
3、一般是先进行设置-Jocky Settings,然后进行Jocky Now!。以下是settings界面
Enable Jocky多选框选中
Jocky build file是在项目创建一个xml文件,根据里面的配置进行混淆
Scramble level是进行混淆的代码等级,有none、private、package、protected、public、all,将根据设置对java文件中的相应修饰符修饰的方法代码进行混淆
Target VM是java虚拟机的版本,有1.4和1.5,一般选择1.5
Output directory是输出文件夹,在项目根目录下
点击确认会自动根据项目的设置生成xml文件
4、jocky_build.xml,实际上是一个ant build文件,由系统自动生成,有几处需要说明
pathelement location="bin"/ pathelement location="XXX.jar"/这类标签代表项目编译所需的jar包,由于是自动生成一般不用理睬,如果出现找不到相关的package之类的报错,那么有可能是location路径有问题。如果你安装系统时是用户名设置成java代码jar包混淆了中文名,并且使用了maven,maven的jar包的下载路径设置成了默认${user}/.m2/repository/,那么jocky这里的路径会出现问题,中文名的用户名会乱码或者消失,请修改maven配置xml文件修改下载路径localRepository[自己指定的路径]/localRepository 。
javac destdir="${jocky.output.dir}/bin" target="${target}" encoding="UTF-8" 代码中如果有中文名,必须手动设定编码,默认是没有的。
src path="src"/ 设定源文件的目录,因为有时候我们只想输出src目录下的部分包而不是全部。
相关问答
Q1: 求教Java web项目一般怎样做代码混淆或加密
一、java web项目混淆
proguard4.8工具,说是支持war的,可混淆过后少了classes目录了,自然成功不了。网上搜的过程不详说了,最后找着--“J2EE-web工程ProGuard代码混淆07_28”,网址:
根据提示一步步完成。
把web项目打成jar包后用proguard进行混淆,然后把混淆过后的class目录替换发布包war中的对应目录,启动运行是正常的。
主要注意利用proguard生成xxx.pro文件,然后手动加工-keep class WebRoot.WEB-INFO.lib.* 等项目中不需要混淆的包和类。
二、java web项目打成.exe
没找到免费的,这搜到个收费的--Jinstall,试了下功能挺好,
可以加密、集成jdk、tomcat,如果数据库是mysql也集成,其他数据库的话要设置数据库的url.
Q2: java中jar打包后中文文件全部乱码,如何解决?
1、用代码混淆器,混淆后一般都是一些西文字符,这些字符在GBK和UTF8中映射键应该是一样的。但是上网搜索老半天就是找不到好用的针对源代码的工具。
2、转化源代码编码。这个我试过了,但是文件名在打包后仍变成乱码。不知道如何改变文件名的编码格式。
3、自己做一个转化程序,把源代码中的中文名转化为任意的西文。但是自己的正则表达式基础太差,写不好这种程序,特别是区分哪个是String里的内容还是标识符。。
可以了
Q3: JAVA 有对源代码进行混淆的混淆器么
不需要对源代码混淆。class有这种功能的java代码jar包混淆,在J2ME中混淆是必须的java代码jar包混淆,结果跟你说的一样java代码jar包混淆,不过原理不是你那么走的,混淆以后的class反编译也会让人看不懂,全部变成java代码jar包混淆了a,b,c,d这样的名字。
Q4: javaweb项目做混淆的详细步骤
混淆的工具很多,最常用的为retroguard.
Java 代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候。所以一个按照正常方式编译的 Java .class 文件可以非常轻易地被反编译。反编译工具有很多种,其中非常强大的一种是 jad。
为了避免出现这种情况,保护开发者的劳动,又有一种叫做 Java 混淆器的工具被开发出来。Java 混淆器的作用是对编译好的代码进行混淆,使得其无法被反编译或者反编译后的代码混乱难懂。Java 混淆器也有很多种,其中比较强大的一种是 RetroGuard(只说比较强大是因为我对其功效还是有些怀疑的)。
这里我介绍一下 RetroGuard 的使用方法。
将下载的 .tar.gz 或者 .zip 文件解压。有用的只有 retroguard.jar 一个文件,其它的是源代码和文档。
RetroGuard 是针对 jar 文件做混淆的。使用之前需要先配置一下。可以手工编辑配置文件,更好的方法是使用 RetroGuard 提供的 GUI 工具来生成配置文件。使用方法如下:
java -classpath retroguard.jar;xxx.jar;yyy.zip;... RGgui
然后在 GUI 的 Wizard 中设置各个参数。上面的 -classpath 中应该列出要混淆的 jar 所依赖的所有的包。
RGgui 的详细使用方法可以看 RetroGuard 的文档 docs.html。
配置文件生成后,就可以运行 RetroGuard 进行混淆了。使用方法如下:
java -classpath xxx.jar;yyy.zip;... RetroGuard vvv-unofb.jar vvv.jar vvv.rgs vvv.log
其中 vvv-unofb.jar 是未混淆的 jar 文件,vvv.jar 是混淆后生成的 jar 文件,vvv.rgs 是配置文件,vvv.log 是日志文件。缺省的配置文件名称为 script.rgs,缺省的日志文件名称为 retroguard.log。
在生成配置文件时需要注意的是:
1、所有 public 的类名、方法名、变量名应该全部保留。因为所有设置为 public 的内容代表了整个包对外表现的接口。若某个内容不想为外界访问,就不应该设置为 public 的。
2、若包中某个类使用了 java.lang.Class 或者 java.lang.ClassLoader 中的某个方法加载了一个类,若这个类在包外,不需要特别处理;若这个类在包内,则需要保留这个类的类名,否则混淆后会找不到这个类。
3、在包中的所有调试信息(源文件名、行号、变量/参数信息等等)应全部删除。
Q5: 提供给别人使用的jar包怎么混淆
1)导出jar包
如何在eclipse上android工程中导出jar包?google,baidu.bing
2)混淆jar包,打乱代码
android的jar包跟普通的java的jar包不一样,我们不想打乱一些activity或者server等跟系统打交道的代码,这是因为如果把这些也混淆了,那你还需要搞清楚混淆后这些activity变成了什么名字,然后告诉使用你这个jar包的人androidmanifest.xml中增加这些打乱了名字的activity。
混淆jar包用到的工具是proguard,可以在android SDK里面找到,如我的是在...\adt-bundle-windows-x86-20130219\sdk\tools\proguard。
运行sdk\tools\proguard\bin\proguardgui.bat,运行界面如下,如果点击next,会发现这些配置很难配(全英文,又很杂)。
其实这里直接导入一个cfg文件就可以了,单击下图右下角的Load Configuration,然后选择配置文件。
配置文件又要怎么写?找到android工程里面的proguard.cfg文件,这个文件是用来混淆apk代码的配置文件,我们现在是要混淆jar包的代码,当然不能直接用。看下面是proguard.cfg的配置,配置会保留activity和server等一些类。这些配置都是不用改的,可以直接拿来用。
?
-optimizationpasses5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations
!code/simplification/arithmetic,!field/*,!class/merging/*
-keeppublic class *extends android.app.Activity
-keeppublic class *extends android.app.Application
-keeppublic class *extends android.app.Service
-keeppublic class *extends android.content.BroadcastReceiver
-keeppublic class *extends android.content.ContentProvider
-keeppublic class *extends android.app.backup.BackupAgentHelper
-keeppublic class *extends android.preference.Preference
-keeppublic class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernamesclass *
{
native methods;
}
-keepclasseswithmembersclass *
{
public init(android.content.Context,
android.util.AttributeSet);
}
-keepclasseswithmembersclass *
{
public init(android.content.Context,
android.util.AttributeSet, int);
}
-keepclassmembersclass *extends android.app.Activity
{
public void *(android.view.View);
}
-keepclassmembersenum *
{
public static **[]
values();
public static **
valueOf(java.lang.String);
}
-keepclass *implements android.os.Parcelable
{
public static final android.os.Parcelable$Creator
*;
}
将上面的配置增加几行改成如下,并重新命名文件为:test.pro
?
-optimizations
!code/simplification/arithmetic,!field/*,!class/merging/*
//...begin
#混淆后的导出jar包的位置和jar包名
-outjars'E:\test_after.jar'
#原始jar包的位置和jar包名
-injars'E:\test.jar'
#jar包依赖的其他库的位置和名称
-libraryjars'E:\workspace\beautytilepuzzle\libs\alipay_msp.jar'
-libraryjars'E:\workspace\beautytilepuzzle\libs\android-support-v4.jar'
-libraryjars'E:\android\adt-bundle-windows-x86-20130219\sdk\platforms\android-10\android.jar'
#下面的Test类将不会被混淆,这样的类是需要被jar包使用者直接调用的
-keeppublic class com.example.Test
{
public fields;
public methods;
}
//...end
-keeppublic class *extends android.app.Activity
现在Load Configuration里选择上面test.pro,一直next,最后混淆后的jar包就是E://test_after.jar。
用winrar打开jar包,会发现除了Test.class,一些继承自activity等的class外,其他的类都被abcdefg这样的字母给混淆了。
提醒:如果你把上面配置直接拷贝过去,是会失败的,请将文件里的#号后的中文注释去掉,或者改成英文的。
关于java代码jar包混淆和jar包的混淆加密的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






