使用Proguard混淆WAR文件

时间:2015-02-24 08:05:48

标签: java proguard obfuscation

我想混淆构建为WAR归档的Web应用程序,因为这个敏感的应用程序首次部署在我们的数据中心之外。我尝试使用Proguard GUI工具来混淆输入战争,使用UI应用程序所需的所有服务jar,以及其他外部依赖项。虽然Proguard成功运行了一些警告,例如,库类的重复定义[javax.servlet.UnavailableException],但输出war不包含类,但是lib包含库jars和web.xml文件。我搞乱的任何步骤?关于此的任何正确文件?如果有人能提供正确的文档或步骤来成功地使用依赖项目(.jar文件)和其他外部jar文件(不需要混淆)来混淆WAR文件,我将不胜感激。

5 个答案:

答案 0 :(得分:4)

你不会混淆战争,而是你使用的罐子。你可以在这里做的是设置你的项目,以便构成战争的项目 - 配置xml,WEB-INF内容,资源以及web内容和servlet定义,并将你的java放在库项目中。对库项目进行模糊处理,并在Web项目中使用这些模糊的jar。

这就是我所做的,希望它有所帮助。

答案 1 :(得分:2)

我也是这样做的。我使用下面的url进行代码混淆,我很成功。

http://bratonfire.blogspot.com/2012/01/war-file-obfuscation-using-proguard.html

我创建了一个新文件夹,并将类的输出重定向到此文件夹。但奇怪的是,我能够在两个位置看到.java和.class文件。我也担心重新创建一个war文件。有人可以提到明确而详细的步骤。

谢谢, 拉胡

答案 2 :(得分:1)

Protector4j是混淆war文件的最佳解决方案,因为它的图形用户界面太容易使用了,并且还提供了eclipse插件。 您将从此链接下载它 https://doc.protector4j.com/protect-tomcat-web-app

答案 3 :(得分:0)

我们也有同样的问题,需要混淆打包在war文件中的所有类,这是我遵循的方法。     首先,我们需要设置pom.xml文件中声明的插件**(编译器,proguard,war)**的顺序,如下所示。

                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.5.1</version>

                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>com.github.wvengen</groupId>
                    <artifactId>proguard-maven-plugin</artifactId>
                    <version>2.0.14</version>
                    <configuration>

                    </configuration>
                    <executions>
                        <execution>
        <!-- Dont worry about compiler error. For first time, change this value to package so that plugin installs successfully. -->
                            <phase>process-classes</phase>
                            <goals>
                                <goal>proguard</goal>
                            </goals>
                        </execution>
                    </executions>
                    <dependencies>
                        <dependency>
                            <groupId>net.sf.proguard</groupId>
                            <artifactId>proguard-base</artifactId>
                            <version>1.0</version>
                        </dependency>
                    </dependencies>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.2.2</version>

                    <configuration>
                        <warName>mfs-transaction-management</warName>
                        <warSourceDirectory>WebContent</warSourceDirectory>
                        <failOnMissingWebXml>false</failOnMissingWebXml>
        <!-- Exclude your default packages from war packaging. Do not include "**" in double quotes in actual code   -->
                        <packagingExcludes>
                            WEB-INF/classes/com/package/mypackage1/"**",
                            WEB-INF/classes/com/package/mypackage2/"**",
                        </packagingExcludes>

                        <webResources>
                            <webResource>
                                <directory>${project.build.directory}/proguardClasses</directory>
                                <targetPath>WEB-INF/classes</targetPath>
                            </webResource>
                        </webResources>         
                    </configuration>
                </plugin>

            </plugins>`

然后在放置pom.xml的同一级别的项目根目录下创建文件proguard.conf。 在文件中添加有关proguard的自己的配置,并在该文件的下面两行中添加以下内容,以将输入和输出文件夹告知proguard插件。 您需要在这些行中根据您的项目结构设置路径

            -injars 'C:\Users\Rajdeep\git\dfs-core\mfs-transaction-management\target\classes'
            -outjars 'C:\Users\Rajdeep\git\dfs-core\mfs-transaction-management\target\proguardClasses'

除此之外,您需要使用mvn install命令在maven存储库中手动安装proguard-base。 提供您自己的groupid,工件和版本,并对pom进行相同的更改。 手动下载proguard时,可在proguard6.0.3 \ lib文件夹下找到proguard.jar。 我认为一切都会好的,现在当您运行mvn clean package时,您的war文件应该包含混淆的类文件。

答案 4 :(得分:-2)

使用Proguard GUI来混淆war文件。 从proguard目录的bin文件夹运行proguardgu.bat或proguardgui.sh文件后。您可以通过单击输入/输出菜单选择战争。