当前位置: 首页 > 工具软件 > Jocky > 使用案例 >

java jocky_使用jocky混淆java项目

戚繁
2023-12-01

[防止 apk反编译 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的说明文件,附件的压缩包中有。

(2)对于不需要混淆的类,加上注释 @preserve all 将其除外。如上面的bo、action代码。本项目中不能混淆的类有:

A、action类,可能是由于struts2管理的原因,如果混淆,项目会报错,[一、前言1.1 什么是Jocky   我们知道,Java是一种跨平台的编程语言,其源码(.java文件)被编译成与平台无关的字节码(.class文件),然后在运行期动态链接。这样,编译后的找不到相应的action.

B、bo类,该类是和数据库表一一对应的,改变了,就乱了。因为用的是hibernate自动映射的。

C、其他会被jsp页面中引用到的类,如dto类,工具类,dwr类等。

(3)对于可以混淆的类,但不能混淆的方法,加上@preserve public 注释。如上面的service类。因为涉及到事务的控制,如果方法名被混淆了,在方法内改变数据的某些操作时,就会报错。本项目中在sping.xml内配置了所有service方法中,只有以save,update,delete开头的方法,才能改变数据库,否则会报错。参见如下:

[反编译工具下载地址:http://download.csdn.net/detail/myfmyfmyfmyf/7307497jockey代码混淆下载地址:http://download.csdn.net/detail/myfmyfmyfmyf/9043975一、存在的

 类似资料: