【问题标题】:Has anyone used proguard to obfuscation of .war file and succeed?有没有人使用 proguard 来混淆 .war 文件并成功?
【发布时间】:2018-11-02 10:39:46
【问题描述】:

有没有人使用 proguard 来混淆 .war 文件并成功了?如果是,那么请告诉我混淆战争的确切步骤。 我没有在网上找到任何符合我要求的理想文档。 我已经在 spring boot 和 jsp 中创建了我的 web 应用程序。

<plugin>
                <groupId>com.github.wvengen</groupId>
                <artifactId>proguard-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>proguard</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <proguardVersion>5.3.3</proguardVersion>
                    <injar>${project.build.finalName}.jar</injar>
                    <outjar>${project.build.finalName}.jar</outjar>
                    <obfuscate>true</obfuscate>
                    <options>
                        <option>-dontshrink</option>
                        <option>-dontoptimize</option>

                        <option>-adaptclassstrings</option>

                        <option>-keepattributes
                            Exceptions,InnerClasses,Signature,Deprecated,
                            SourceFile,LineNumberTable,*Annotation*,EnclosingMethod</option>

                        <option>-keepnames interface **</option>

                        <option>-keepparameternames</option>

                        <option>-keep class
                            !com.slm.proguard.example.spring.boot.domain.**
                            { *; }</option>

                        <option>-keep class com.slm.proguard.example.spring.boot.service {
                            *; }</option>

                        <option>-keep interface * extends * { *; }</option>

                        <option>-keepclassmembers class * {
                            @org.springframework.beans.factory.annotation.Autowired *;
                            @org.springframework.beans.factory.annotation.Value *;
                            }
                        </option>
                    </options>
                    <libs>
                        Include main JAVA library required.
                        <lib>${java.home}/lib/rt.jar</lib>
                        Include crypto JAVA library if necessary.
                        <lib>${java.home}/lib/jce.jar</lib>
                    </libs>
                </configuration>

                <dependencies>
                    <dependency>
                        <groupId>net.sf.proguard</groupId>
                        <artifactId>proguard-base</artifactId>
                        <version>5.3.3</version>
                    </dependency>
                </dependencies>
            </plugin>

【问题讨论】:

  • 是的。你的确切问题是什么?我使用一个 maven 插件 com.github.wvengenproguard-maven-plugin
  • @SimonMartinelli 我想使用 proguard 混淆 Web 应用程序的 .war 文件
  • @SimonMartinelli 编辑了 pom.xml 中使用的 proguard 的问题添加插件
  • 我不明白你的问题
  • 到目前为止,我已经使用 pom.xml 文件中的上述配置创建了一个 .war 文件。现在在 proguard 的输入/输出选项中如何添加包含 .class 文件的文件夹路径。如果我尝试使用 .war 文件执行此操作,则不允许我访问包含 .class 文件的文件夹。我指的是这份文件:bratonfire.blogspot.com/2012/01/…

标签: proguard


【解决方案1】:

我在使用 proguard 创建的 JAR 时遇到了问题,看起来还可以,但 tomcat 没有在里面找到任何东西。经过长时间的搜索,我发现使用 ant-task 解压缩和重新压缩完全相同的文件可以正常工作。

这是添加的配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.3</version>
    <executions>
        <execution>
            <id>fixzip</id>
            <phase>prepare-package</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <!-- ******************** ********* ******************** -->
                    <!-- ******************** IMPORTANT ******************** -->
                    <!-- ******************** ********* ******************** -->
                    <!-- It may seems strange to unzip and re-jar the file -->
                    <!-- but the JAR made by Proguard is somehow not readable -->
                    <!-- by Tomcat and Spring beans aren't recognized -->
                    <!-- *************************************************** -->
                    <!-- Fixing JAR. -->
                    <move file="target/${project.build.finalName}/WEB-INF/lib/${project.artifactId}-${project.version}.jar"
                        tofile="target/${project.artifactId}-${project.version}_proguard_base.jar" />
                    <jar destfile="target/${project.build.finalName}/WEB-INF/lib/${project.artifactId}-${project.version}.jar">
                        <zipfileset
                            src="target/${project.artifactId}-${project.version}_proguard_base.jar"
                            includes="**/*.*" />
                    </jar>
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>

【讨论】:

    猜你喜欢
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 2015-08-12
    • 2017-05-02
    • 2011-10-01
    相关资源
    最近更新 更多