- 浏览: 185360 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
masuweng:
好好
与ant结合使用yguard -
lenomon:
你也可以看看这个,Linux同步时间命令ntpdate
Linux与远程时间服务器同步 -
木叶之舟:
我这里有个疑问,就是我想通过拦截外键的属性,该怎样实现呢?
比 ...
springside的filter查询 -
dongbiying:
好!
与ant结合使用yguard -
javaray:
遨豪(大连)科技有限公司自2007年与Liferay,Inc合 ...
Liferay的CAS SSO实现思路
昨天老大要我搞个代码混淆器,发了yguard的官网我http://www.yworks.com/en/products_yguard_about.htm (主页)http://www.yworks.com/products/yguard/yguard_ant_howto.html#field (文档),一看全E文凉了半截,google一下还是出来了不少示例:http://blog.csdn.net/jiulong/archive/2006/02/07/593426.aspx (中文写的示例)写的很清楚,yguard要结合ant使用我从未用过ant 下载,安装,配置,调试搞了一上午 没劲 一整天也就把 网页上的教程调试成功....... 我太笨了 今天上午又研究他的脚本 终于把他搞定了
ant的使用请关注另一篇文章
你可以把yguard.jar放在ant的lib目录下,也可以放在build.xml文件同目录下,这样ant就能使用到yguard
第一种情况:当需要混淆的代码的包占少数的时候(意思是少量包下的对象需要深度混淆),用下面的脚本比较简单;
脚本如下:
yguard示例脚本:
<!--auth:zhaohanjiang date:2009-04-16 --> <?xml version="1.0" encoding="UTF-8"?>
<!--这里比较重要的定义了ant的缺省任务default="yguard"--> <project name="project" default="yguard" basedir="."> <target name="init">
<!--这里定义了要混淆的jar的名字---> <property name="project_name" value="wherever"/>
<!-- 源码目录好像没什么用---> <property name="srcDir" value="."/>
<!-- 这里是编译后的class文件文件夹位置但是我使用的是编译好的jar所以没用---> <!-- <property name="classDir" value="classes"/>
<!-- 这里是新建一个文件夹如上理由无用---> <mkdir dir="${classDir}"/> -->
<!-- 这里是定义混淆jar-->
<property name="jar" value="${project_name}.jar"/>
<!--混淆完成jar-->
<property name="obfjar" value="${project_name}_obf.jar"/>
<!-- 重命名日志renamelog--> <property name="renamelog" value="${project_name}_renamelog.xml"/>
<!-- 压缩日志shrinklog--> <property name="shrinklog" value="${project_name}_shrinklog.xml"/>
<!-- 混淆jar的启动类,意思不能混淆--> <property name="mainclass" value="wherever.sysframe.bootup.SicsControl"/>
<!-- 混淆任务---> </target>
<!-- depends="init"意思是运行本任务时候要先运行init任务---> <target name="yguard" depends="init">
<!-- 这里是启动yguard进行混淆---> <taskdef name="yguard" classname="com.yworks.yguard.YGuardTask" classpath="yguard.jar"/> <yguard> <!-- 这里是定义要混淆的jar要用的类库---> <externalclasses> <pathelement location="lib/j2ee1.4.jar"/> <pathelement location="lib/oracle9i12.zip"/> <pathelement location="lib/sicsaux.jar"/> <pathelement location="lib/tools.jar"/> </externalclasses>
<!-- 定义混淆输入输出jar指向命名变量--> <inoutpair in="${jar}" out="${obfjar}"/>
<!-- 压缩功能;定义日志--> <shrink logfile="${shrinklog}"> <keep>
<!-- 压缩规则 表示所有的>=protected访问修饰符的class,method,field 不压缩--> <class classes="protected" methods="protected" fields="protected"> <patternset>
<!-- 这里一定要注意:在定义范围的时候 你用了include 就一定要用exclude 反之用了exclude 也一定要用include 意思包含和不包含一定要写的清清楚楚 否则会出现稀奇古怪的事情-->
<!-- 压缩范围 include="**.*"意思是不包含所有包下面的类-->
<include name="**.*"/>
<!-- exclude 意思是包含命名中的包下的类 在定义包范围时有很多种规则这里不一一列明--> <exclude name="wherever.lightrpc.engine.*"/> <exclude name="wherever.minihttp.engine.*"/> <exclude name="wherever.postfile.engine.*"/> <exclude name="wherever.proxydts.engine.*"/> <exclude name="wherever.sysframe.engine.*"/> <exclude name="wherever.xmessage.engine.*"/> </patternset> </class> </keep> </shrink>
<!-- 混淆功能;这里是说混淆jar的main类不需要重命名既混淆--> <rename mainclass="${mainclass}" logfile="${renamelog}"> <rename logfile="${renamelog}">
<!-- 这个不知道什么意思 其他同上--> <property name="error-checking" value="pedantic"/> <keep> <class classes="protected" methods="protected" fields="protected"> <patternset> <include name="**.*"/> <exclude name="wherever.lightrpc.engine.*"/> <exclude name="wherever.minihttp.engine.*"/> <exclude name="wherever.postfile.engine.*"/> <exclude name="wherever.proxydts.engine.*"/> <exclude name="wherever.sysframe.engine.*"/> <exclude name="wherever.xmessage.engine.*"/> </patternset> </class> </keep> </rename> </yguard> </target> </project> <!-- end file build.xml --> 第二种情况:当需要混淆的代码占大多数时候(意思是多数包下的对象需要深度混淆),用下面的脚本比较简单; <?xml version="1.0" encoding="UTF-8"?> <!-- file build.xml in your project root directory --> <!-- Ant build script for yfiles --> <!-- The java based Ant tool is available from --> <!-- http://jakarta.apache.org/ant --> <!-- This file demonstrates the use of the yGuard byte --> <!-- code obfuscator from yWorks Gmbh --> <!-- yGuard can be downloaded from --> <!--- http://www.yworks.com/products/yguard --> <project name="project" default="yguard" basedir="."> <!-- edit the following lines to your needs --> <target name="init"> <property name="project_name" value="wherever3.0"/> <property name="srcDir" value="."/> <!-- <property name="classDir" value="classes"/> <mkdir dir="${classDir}"/> --> <property name="jar" value="${project_name}.jar"/> <property name="obfjar" value="${project_name}_obf.jar"/> <property name="renamelog" value="${project_name}_renamelog.xml"/> <property name="shrinklog" value="${project_name}_shrinklog.xml"/> <property name="mainclass" value="wherever.sysframe.bootup.SicsControl"/> </target> <target name="yguard" depends="init"> <taskdef name="yguard" classname="com.yworks.yguard.YGuardTask" classpath="yguard.jar"/> <yguard> <externalclasses> <pathelement location="lib/j2ee1.4.jar"/> <pathelement location="lib/oracle9i12.zip"/> <pathelement location="lib/sicsaux.jar"/> <pathelement location="lib/tools.jar"/> </externalclasses> <inoutpair in="${jar}" out="${obfjar}"/> <shrink logfile="${shrinklog}"> <keep> <class classes="protected" methods="protected" fields="protected"> <patternset> <include name="**.*"/> </patternset> </class> </keep> </shrink> <!-- <rename mainclass="${mainclass}" logfile="${renamelog}"> --> <rename logfile="${renamelog}" mainclass="${mainclass}"> <property name="error-checking" value="pedantic"/> <keep> <class classes="protected" methods="protected" fields="protected"> <patternset> <include name="wherever.sysframe.concept.*"/> <include name="wherever.sysframe.provider.*"/> <include name="wherever.sysframe.system.*"/> <include name="wherever.sysframe.bootup.SicsControl"/> </patternset> </class> </keep> </rename> </yguard> </target> </project> <!-- end file build.xml -->
yguard有一个特殊性,是针对jar进行混淆的jar包里的文件名是区分大小写的,所以当你把jar包解压的时候在window系统下会有文件覆盖的现象,所以最好是不要解压jar包。
脚本中带的注释应该够详细了,要说的就是自学真的很费劲,但是只要你够仔细,够毅力,可以无视之,呵呵
还有就是关于泛型 告诉你yguard是支持泛型的 也支持反射 但是我在测试的时候有点问题 官方文档也解决方法 要说的是yguard的混淆功能强大的很,混淆规则也很多能满足多种业务,这里完全是一时之需,希望哪位能把官方文档翻译过来,这样学习起来也轻松些。
- wherever-build.rar (984 Bytes)
- 下载次数: 263
发表评论
-
用exp/imp远程操作数据库
2012-03-27 10:55 1178在http://icyheart.iteye.com/bl ... -
Eclipse for JEE 3.5.2 maven插件安装
2012-03-27 10:56 2591先安装gef插件,然后安装subclipse插件,最后安装m2 ... -
onkeypress,onkeydown,onkeyup区别 和 javascript event.keycode值大全
2010-08-05 17:32 4905onkeypress是在用户按下并放开任何字母数字键时发生 ... -
国王和100个囚犯
2010-01-15 11:27 921看到一个关于算法的帖子,总结了下跟帖的算法发表一下: 原贴地 ... -
搞懂java中的synchronized关键字
2009-12-12 17:55 18441、synchronized关键字的作用域有二种: 1 ... -
JAVA 30个基本知识
2009-12-12 17:53 8541.OOP中唯一关系的是对 ... -
精妙的SQL語句
2009-12-12 17:51 962说明:复制表(只复制结构,源表名:a 新表名:b) SQL: ... -
JPA & Hibernate 注解
2009-11-25 18:05 1184原文地址:http://blog.csdn.net/eastl ... -
Servlet监听器详解
2009-11-11 16:56 1249原文地址:http://www.21jn.net/html/8 ... -
Servlet过滤器介绍之原理分析
2009-11-11 16:31 1360原文地址:http://zhangjunhd.blog.51c ... -
web.xml 中的listener、 filter、servlet 加载顺序及其详解
2009-11-11 14:46 1079原文地址:http://sunxboy.iteye.com/b ... -
jsp常见问题
2009-11-11 14:14 1423原文地址:http://liujinpan75.iteye.c ... -
OGNL表达式语言介绍
2009-11-09 18:08 1989原文地址:http://darkranger.iteye.co ... -
OGNL的用法
2009-11-09 17:46 1476原文地址:http://www.blogjava.net/ma ... -
jmail收发邮件
2009-10-28 17:09 1713jmail收发邮件,发送邮件基于smtp协议,收邮件基于pop ... -
程序员每天该做的8件事
2009-09-23 15:10 904不重视细节,如何谈得上成功? 1)程序员每天总结自己一天 ... -
jasperreports-1.3.3与iReport1.3.3初级使用
2009-09-14 17:43 2688这几天多在用jasperreports写下一点入门的东西。这里 ... -
ant使用
2009-08-07 15:16 1177参考地址: http://www.blogjava. ... -
Alpha、Beta、RC、GA版本的区别
2009-08-05 11:08 1400Alpha、Beta、RC、GA版本的区别 ... -
基本排序
2009-07-15 12:20 899package zyio; public class Tes ...
相关推荐
你需要将yGuard.jar放置到与Ant构建文件`build.xml`相同的目录下,因为yGuard通常与Ant集成使用,通过Ant任务来执行混淆过程。 使用yGuard时,你需要在`build.xml`中添加相应的Ant任务,配置输入、输出路径以及混淆...
在"yGuard支持库与ant使用样例"中,我们将探讨如何将yGuard与Apache Ant构建工具集成,以自动化混淆过程。Ant是一个基于Java的构建工具,它可以读取XML格式的构建文件(通常命名为build.xml),然后执行编译、测试、...
本文将深入探讨如何将Xdocle与Ant结合使用,以实现Java项目中的元数据注解处理和自动构建过程。Xdocle是一款强大的元数据驱动文档生成工具,而Ant则是一款广泛应用的开源构建工具。了解这两者并掌握它们的结合使用,...
要将 FindBugs 与 Ant 结合,首先确保你已经安装了 FindBugs 和 Ant。接下来,你需要在你的 Ant 构建脚本(通常为 build.xml)中添加 FindBugs 相关的任务。这通常包括以下几个步骤: 1. 引入 FindBugs 的 Ant 任务...
警卫队 yGuard是一个开放源代码Java混淆工具。 有了yGuard它就像馅饼一样容易( :shortcake: ),以通过广泛的ant... 如果您的产品也使用yGuard ,并且您想将其添加到此列表中,请与我们联系。 发展 建造 要构建yG
4. **Ant集成**:为了方便在项目中使用yguard,可以将其与Ant任务集成。具体操作是在Ant的构建脚本中添加yguard的任务定义,示例如下: ```xml <taskdef name="yguard" classname="com.yworks.yguard.YGuardTask"> ...
标题“Ant与JUnit结合”指的是在Java开发中如何利用Apache Ant构建工具与JUnit测试框架进行集成,以便自动化地运行单元测试。Apache Ant是一种基于XML的构建工具,它替代了传统的Makefile,为Java项目提供了构建、...
本指南将深入探讨Ant工具的使用,帮助开发者高效地管理项目构建。 一、Ant概述 Ant是一个开源的Java构建工具,其设计灵感来源于Unix的Make工具。它通过XML配置文件(通常名为build.xml)来定义任务和目标,使得构建...
10. **Ant与持续集成**:Ant可以与各种持续集成工具(如Jenkins、Hudson、CruiseControl等)配合使用,实现自动化构建和测试。 11. **Ant与Maven的比较**:虽然两者都是Java构建工具,但它们的理念和应用场景有所...
ANT安装与使用教程 ANT(Another Neat Tool)是一款基于Java的自动化构建工具,广泛应用于软件开发、测试和部署过程中。以下是ANT安装与使用教程,旨在帮助项目部署人员快速掌握ANT的安装和基本使用。 硬件环境 ...
* http://blog.163.com/eye_ziye/blog/static/2144710512013431035733/
**Findbugs在Ant下的配置...总之,通过Ant与FindBugs的结合,开发者可以在构建过程中自动检测代码问题,提高代码质量和项目的稳定性。正确配置和使用FindBugs,能帮助你尽早发现并修复潜在的错误,减少后期维护的成本。
本文将深入探讨yguard的两个不同版本——2.6和2.3.0.1,并分析它们与不同JDK版本的兼容性。 首先,yguard-2.6版本是针对JDK 1.7设计的,这意味着它可以充分利用Java 7引入的新特性,如多线程改进、try-with-...
总结来说,Ant结合JavaScript脚本提供了一种强大的方式来定制和扩展构建过程,尤其适合处理项目中的特殊需求。通过熟练掌握这一技巧,开发者能够更有效地管理和自动化他们的Java项目,提高开发效率,减少手动操作...
在实际应用中,yGuard通常与Java的JAR打包工具结合使用。开发者首先将源代码编译成字节码,然后用yGuard进行混淆处理,最后再将混淆后的类文件打包成JAR或WAR文件,供部署和分发。这样,即使有人获取到这些打包文件...
- Ant可以轻松地与JUnit等测试框架集成,也可以与其他构建工具(如Maven)协同工作。 9. **命令行使用和IDE集成** - Ant可以通过命令行调用,也可以集成到Eclipse、IntelliJ IDEA等IDE中,提供图形化的构建界面。...
本文将详细介绍如何将JUnit和JaCoCo与Ant构建工具进行集成,以便在项目中实现自动化测试和覆盖率报告。 1. JUnit简介 JUnit是Java编程语言的一个开源测试框架,主要用于编写和运行基于JUnit注解的单元测试。它提供...
执行特定的目标可以使用目标名称,如`ant compile`来只执行名为`compile`的目标。如果未指定目标,Ant会执行默认目标。 Ant命令行有多种选项,例如: - `-help`显示帮助信息。 - `-quiet`降低输出信息量,保持安静...
"Ant全攻略.doc"可能涵盖了Ant与第三方工具的集成,比如Maven、Ivy等依赖管理工具,以及Eclipse、IntelliJ IDEA等IDE的集成。此外,它还可能讨论如何处理复杂的构建场景,如多模块项目、远程构建、持续集成等。 ...