`

使用jocky混淆java项目

阅读更多
    1、什么是混淆?为什么要混淆?这个问题不多说明,简单讲,就是为了保护软件项目的所有权,防止别人反编译,将代码打乱,人看着会很费劲,但对计算机执行没有障碍。
    2、当前项目的结构:项目采用的框架是ssh(spring、struts2、hibernate)的,其中还用了Annotation 注释标签。代码形如:
    (1)一个bo的代码
/**
 *@preserve all
 */
@Entity
@Table(name = "crm_code_clientSort")
public class ClientSort
{
    @Id
    @GeneratedValue(generator = "uuidGenerator")
    @GenericGenerator(name = "uuidGenerator", strategy = "uuid")
    @Column(length = 32)
    private String id;//标识
    
    @Column(length = 6)
    private String code; //编号

    @Column(length = 20)
    private String name; //名称
    
}

    (2)action的代码
/**
 *@preserve all
 */
@Controller
@Scope("prototype")
@ParentPackage(value = "abc-default")
@Namespace("/crm/backlog")
@Results(
{     
    @Result(name = "showInfo", location = "/jsp/crm/backlog/showInfo.jsp"),
    @Result(name = "common", location = "/jsp/crm/backlog/list.jsp"),
    @Result(name = "addBacklog", location = "/jsp/crm/backlog/addBacklog.jsp"),
    @Result(name = "updateBacklog", location = "/jsp/crm/backlog/updateBacklog.jsp")
    
})
@InterceptorRef("isLogin")
public class BacklogAction {
    
    @Resource
    private CRM_BacklogService cRM_backlogService; //此对象是spring自动注入的,因为加了@Resource标签
    
    @Resource
    private CodeBean codeBean;    
    
    private Object fere;     
    private Backlog dto; 
        //以下略

}

    (3)service代码
@Service
public class UserService
{
   @Resource
   public Dao dao;

   public String getTheNum()
   {
      //省略代码
      return "";
    }


   /**
     * @preserve public
     */
   public void updateObject(User user)
   {
      dao.updateObject(user);
   }
	
   //********省略其他
}


    3、混淆介绍。
    (1)整体混淆级别设置。设置为public的。对所有的代码混淆。具体配置文件我使用方法,参见jocky的说明文件,附件的压缩包中有。
<property name="jocky.scramble.level" value="public"/>

    (2)对于不需要混淆的类,加上注释 @preserve all 将其除外。如上面的bo、action代码。本项目中不能混淆的类有:
    A、action类,可能是由于struts2管理的原因,如果混淆,项目会报错,找不到相应的action.
    B、bo类,该类是和数据库表一一对应的,改变了,就乱了。因为用的是hibernate自动映射的。
    C、其他会被jsp页面中引用到的类,如dto类,工具类,dwr类等。
    (3)对于可以混淆的类,但不能混淆的方法,加上@preserve public 注释。如上面的service类。因为涉及到事务的控制,如果方法名被混淆了,在方法内改变数据的某些操作时,就会报错。本项目中在sping.xml内配置了所有service方法中,只有以save,update,delete开头的方法,才能改变数据库,否则会报错。参见如下:
	<!-- 配置事务的传播特性 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="save*" propagation="REQUIRED" />
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="delete*" propagation="REQUIRED" />
			<tx:method name="*" read-only="true" />
		</tx:attributes>
	</tx:advice>


	<!-- 那些类的哪些方法参与事务 -->
	<aop:config>
		<aop:pointcut id="commonServiceMethod" expression="execution(* com.abc.domain.common.service.*.*(..))" />
		<aop:pointcut id="khServiceMethod" expression="execution(* com.abc.domain.*.*.inside.service.*.*(..))" />
		
		<aop:advisor pointcut-ref="commonServiceMethod" advice-ref="txAdvice" />
		<aop:advisor pointcut-ref="khServiceMethod" advice-ref="txAdvice" />
	</aop:config>


1
4
分享到:
评论

相关推荐

    Jocky混淆JAVA代码(保护你的JAVA项目).pdf

    【Jocky混淆JAVA代码(保护你的JAVA项目).pdf】主要介绍了Jocky这款Java代码混淆工具,旨在保护Java项目的源代码,防止反编译。混淆编译的主要目的是打乱类文件中的符号信息,使反向工程变得困难,从而保护知识产权。...

    Jocky混淆JAVA代码(保护你的JAVA项目)[参照].pdf

    【Jocky混淆JAVA代码(保护你的JAVA项目)】 Jocky是一款专为Java开发者设计的混淆编译器,它的主要目标是保护Java代码不被轻易反编译,以确保软件的知识产权。Java源代码(.java文件)编译成.class文件后,由于其...

    Jocky混淆JAVA代码(保护你的JAVA项目)[收集].pdf

    Jocky是一款专门用于混淆Java代码的工具,旨在保护Java项目的源代码不被轻易反编译和理解,从而增强软件的安全性和知识产权保护。在Java中,源代码编译成字节码后,由于字节码中含有符号表,使得反编译变得相对容易...

    Jocky混淆JAVA代码(保护你的JAVA项目)

    NULL 博文链接:https://huangyuanmu.iteye.com/blog/493149

    jocky-Java混淆编译插件以及配置

    jocky是一款专门用于Java混淆编译的插件,它能够帮助开发者对编译后的class文件进行混淆,使得源码难以通过反编译工具还原。在本文中,我们将深入探讨jocky插件的使用、配置方法及其在Java开发中的应用。 首先,让...

    jocky混淆器JDK1.7不会报错

    本文将详细介绍jocky混淆器的核心功能、使用优势以及如何将其集成到开发环境中,帮助您构建更安全的软件项目。 一、jocky混淆器简介 jocky混淆器是一款专门针对Java代码的混淆工具,它的主要作用是对编译后的字节...

    Java混淆编译器-jocky_1.0.3

    1. **jocky.jar**:这是Jocky混淆编译器的核心库文件,包含了实现混淆功能的Java类和方法。开发者可以将这个库添加到他们的项目中,以便调用混淆API来处理源代码。 2. **jockyplugin.jar**:这是一个Eclipse插件...

    java混淆jocky,不限jdk版本

    Jocky是一款针对Java的混淆工具,它提供了一种高效且灵活的方式对代码进行混淆,以增强软件的安全性。本篇文章将深入探讨Jocky在不同JDK版本中的兼容性问题、插件的配置与使用方法,以及代码混淆的基本概念。 首先...

    很强大的java代码混淆工具 Jocky

    大家熟知的Progaurd只能对class文件进行混淆,也就是必须先把java源码编译为class文件,然后再进行混淆 Jockey跟其他混淆工具不同的是:它是直接对编译过程做文章,也就是在把java文件编译为class文件的过程中对代码...

    jocky(java代码混淆器)

    我们知道,Java是一种跨平台的编程语言,其源码(.java文件)被编译成与平台无关的字节码(.class文件),然后在运行期动态链接。这样,编译后的类文件中将包含有符号表,从而... Jocky就是这样一款优秀的Java混淆编译器。

    jocky 混淆编译器

    **Jocky 混淆编译器**是一款专门针对Java源代码的混淆工具,它的主要功能是在编译过程中对代码进行混淆处理,以增强代码的安全性,防止未经...对于涉及敏感信息或商业机密的项目,使用Jocky混淆编译器是非常必要的。

    jocky混淆器的使用方式v1.2

    ### jocky混淆器的使用方式v1.2 #### 一、引言 ##### 1. 什么是 Jocky Java 作为一种跨平台的编程语言,在开发过程中,其源码(`.java` 文件)会被编译成与平台无关的字节码(`.class` 文件),进而可以在任何...

    代码混淆Eclipse插件Jocky

    安装完成后,开发者可以在项目属性中找到Jocky的相关设置,进行混淆预览和执行混淆任务。Jocky支持与ProGuard(一个广泛使用的开源代码混淆工具)集成,这意味着它可以利用ProGuard的强大功能,同时保持Eclipse内的...

    jocky代码混淆工具

    先下载一个Jocky for eclipse的插件,然后放到eclipse的plugin文件夹里,然后右键单击项目,会看到Jocky的选项,Jocky与其它混淆编译器最大的不同之处在于:它是直接从源码上做文章,也就是说编译过程本身就是一个混淆...

    java 混淆工具,不可逆 jocky

    Jocky混淆编译器是在Sun JDK中提供的Java编译器(javac)的基础上完成的,修改了其中的代码生成过程,对编译器生成的中间代码进行混淆, 最后再生成class文件,这样编译和混淆只需要一个步骤就可以完成。另外可以在源...

    java代码混淆--jocky

    NULL 博文链接:https://chenming47.iteye.com/blog/935294

    java 混淆工具,不可逆 jocky 也许是最好的了

    使用Jocky非常简单,获得jocky.jar以后,只需要运行java -jar jocky.jar就可以启动Jocky混淆编译器,jocky的命令行参数和javac完全相同,但增加了一个新的参数-scramble,它的用法如下: -scramble 混淆所有...

    实现maven管理的Javaweb项目的proguard代码混淆功能

    本文将深入探讨如何在Maven管理的Java Web项目中集成ProGuard工具来实现代码混淆功能,以及在过程中可能遇到的问题及解决方案。 首先,让我们了解什么是ProGuard。ProGuard是一个开源的Java字节码混淆器、优化器和...

Global site tag (gtag.js) - Google Analytics