Обфускация Proguard Как запутать более одной банки, и сохранить структуру dir - PullRequest
0 голосов
/ 08 мая 2018

У меня есть папка "plugins", в которую я помещаю свой код, упакованный в jars (2 файла). Также у меня есть приложение javafx, которое упаковано с maven-assembly-plugin , который генерирует jar со всеми зависимостями.
-
| -Plugins
| -Plugin-1.jar
| -Plugin-2.jar
| - {имя файла} -jar-с-depenencies.jar

Возможно ли запутать не только jar с зависимостями и сохранить структуру каталогов.

p.s, когда я обфусцирую {имя_файла} -jar-with-depenencies.jar и копирую в каталог проекта, все работает нормально, но мне нужно, чтобы мои плагины были запутаны

<plugins>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <inherited>true</inherited>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <mainClass>com.app.myapp.gui.MainWindow</mainClass>
                <packageName>com.app.myapp.gui</packageName>
                <addClasspath>true</addClasspath>
                <classpathPrefix>plugins/</classpathPrefix>
            </manifest>
        </archive>
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.8</version>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>                          
                <mainClass>com.app.myapp.gui.MainWindow</mainClass>
            </manifest>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <appendAssemblyId>true</appendAssemblyId>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id> <!-- this is used for inheritance merges -->
            <phase>package</phase> <!-- bind to the packaging phase -->
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <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.10</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals><goal>proguard</goal></goals>
        </execution>
    </executions>
    <configuration>
        <obfuscate>true</obfuscate>
        <injar>plugins\v-plugin-1.16.0-24.jar</injar>
        <injar>plugins\p-plugin-1.16.0-24.jar</injar>
        <injar>${project.build.finalName}-jar-with-dependencies.jar</injar> <!-- make sure to obfuscate the jar with dependencies -->
        <includeDependency>true</includeDependency>
        <proguardVersion>5.2</proguardVersion>
        <includeDependency>true</includeDependency>
        <options>
            <option>-allowaccessmodification</option>
            <option>-flattenpackagehierarchy ''</option>
            <option>-dontoptimize</option>
            <option>-dontshrink</option>
            <option>-dontnote</option>
            <option>-dontwarn</option> <!-- added option to ignore com.sun missing classes -->
            <option>-dontusemixedcaseclassnames</option>
            <option>-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod, CallbackMethods </option>
            <option>-keep class !com.app.** { *; }</option>
            <option>-keepclasseswithmembers public class * { public static void main(java.lang.String[]); } </option>
            <option>-dontskipnonpubliclibraryclassmembers</option>
            <option>-dontskipnonpubliclibraryclasses</option>
            <option>-verbose</option>
        </options>
        <libs>
            <lib>${java.home}/lib/rt.jar</lib>
            <lib>${java.home}/lib/ext/jfxrt.jar</lib>
        </libs>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>net.sf.proguard</groupId>
            <artifactId>proguard-base</artifactId>
            <version>5.2.1</version>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
</plugin>

1 Ответ

0 голосов
/ 08 мая 2018

Я бы предложил обфусцировать код во время упаковки с помощью плагина proguard maven.

Так что, как только ваши jar-файлы достигнут места назначения, которое в вашем случае является плагинами, они уже будут запутаны.

Это был бы более чистый подход.

Это все, что я могу предложить, не глядя на процесс сборки.

...