Обфускание WAR файла с помощью Proguard

Я хочу запутать мое веб-приложение, построенное как архив WAR, так как это чувствительное приложение в первый раз развертывается вне нашего центра обработки данных. Я попытался использовать инструмент GUI Proguard, чтобы запутать войну ввода, со всей служебной банкой, необходимой для приложения UI, с другими внешними зависимостями. Хотя Proguard успешно работает с некоторыми предупреждениями, например, с дублированием определения класса библиотеки [javax.servlet.UnavailableException], выходная война не содержит классов, но имеет lib с библиотечными банками и файлами web.xml. Какие-то шаги, которые я вою Какой-нибудь правильный документ? Я был бы признателен, если кто-нибудь сможет предоставить правильный документ или шаги, чтобы успешно запутать файл WAR с зависимым проектом (файл .jar) и другие внешние файлы jar (которые не требуют обфускации).

Ответ 1

Вы бы не запутывали войну, а использовали банки, которые вы используете. Здесь вы можете настроить свой проект таким образом, чтобы проект, составляющий войну, - конфигурация xml, контент WEB-INF, ресурсы, определения веб-контента и сервлетов, а также размещение java в проекте библиотеки. Запутайте проект библиотеки и используйте эти запутанные файлы в вашем веб-проекте.

Вот что я делаю, надеюсь, это поможет.

Ответ 2

Я сделал то же самое. Я использовал приведенный ниже URL для обфускации кода, и я уверен.

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

Я создал новую папку и перенаправил вывод классов в эту папку. Но странно то, что я могу видеть файлы .java и .class в двух местах. Я также беспокоюсь о воссоздании военного файла. может кто-то указать четкие и подробные шаги.

Спасибо, Рахул

Ответ 3

Protector4j - лучшее решение для запутывания военного файла, поскольку графический интерфейс пользователя слишком прост в использовании, а также доступен плагин eclipse. Вы загрузите его по этой ссылкеhttps://doc.protector4j.com/protect-tomcat-web-app

Ответ 4

У нас также есть та же проблема, и нам нужно запутать все классы, упакованные в файл war. Вот подход, которому я следовал.   Во-первых, нам нужно установить порядок плагинов ** (компилятор, proguard, war) **, объявленных в файле pom.xml, как показано ниже.

                <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>'

Затем создайте файл proguard.conf в корневом каталоге вашего проекта на том же уровне, где находится файл pom.xml. Добавьте в файл свою собственную конфигурацию, касающуюся 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'

Кроме того, вам нужно установить proguard-base вручную в репозиторий maven с помощью команды mvn install. Укажите свой собственный groupid, артефакт и версию и внес те же изменения в pom. Это proguard.jar, найденный в папке proguard6.0.3\lib, когда вы загружаете proguard вручную. Я думаю, что все будет хорошо, и теперь, когда вы запустите пакет mvn clean, ваш war файл должен включать запутанные файлы классов.

Ответ 5

Используйте GUI Proguard для обфускации файлов войны. После запуска файла proguardgu.bat или proguardgui.sh из папки bin вашего каталога proguard. Вы можете выбрать войны, щелкнув меню ввода/вывода.