Como ofuscar código wicket com proguard?

4 respostas
ricardospinoza

Olá pessoal,

Gostaria de ofuscar o meu war com o proguard.
Utilizo o framework wicket que exige que o nome do arquivo .html seja o mesmo da classe que representa o html no java.
tenho tbem alguma libs de dependência do projeto.
Como eu faço pra o proguard não ofuscar as classes do wicket e add minhas libs no war? isto é possível de fazer?

4 Respostas

hvivox

Exporta seu projeto pra um jar executavel
Testa esse jar pra confirmar que esta funcionando

Executa o proguard: /bin/proguardgui.bat (ou .sh no linux)
Em Input/Output clica em Add Input e seleciona seu .jar, depois clica em Add Output e digita o nome do novo .jar a ser gerado
Se seu codigo conter bibliotecas adiciona elas lah embaixo
Depois clica em Process e depois Process! Se nao der erro vai gerar seu jar obfuscado. Se der erro tenta denovo dessa vez desabilitando Shrinking e Optimization

ser conseguir me avise! Lembre-se estes passos acima ajudam um pouco mas não sao suficientes!

ricardospinoza

Obrigado pela resposta, estou precisando gerar ofuscamento do war via maven.

ricardospinoza

Pessoal, modifiquei meu pom.xml para o proguard, e consta aviso de referência de library's não encontradas, estou fazendo algo errado?

<plugin>
                <groupId>com.pyx4me</groupId>
                <artifactId>proguard-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals><goal>proguard</goal></goals>
                    </execution>
                </executions>
                <configuration>
                    <obfuscate>true</obfuscate>
                    <includeDependency>true</includeDependency>                   
                    <injar>${project.build.finalName}.war</injar>
                    <outjar>${project.build.finalName}-obf.war</outjar>
                    <outputDirectory>${project.build.directory}</outputDirectory>
                    <maxMemory>512m</maxMemory>
                    <proguardVersion>4.4</proguardVersion>
                    <!--<proguardInclude>${basedir}/proguard.conf</proguardInclude> -->
                    <libs>
                        <lib>${java.home}/lib/rt.jar</lib>
                        <lib>${project.build.directory}/${project.build.finalName}/WEB-INF/lib/</lib>
                    </libs>
                    <options>
                        <!--<option>-dontshrink -keep public class * extends javax.servlet.Servlet</option>-->

                        <option>-dontshrink -keep public class * extends org.apache.wicket.markup.html.WebPage</option>
                        <option>-dontshrink -keep public class * extends br.com.dataimageweb.ged.visao.BasePage</option>
                        <option>-keep class br.com.dataimageweb.visao.**</option>

                        <option>-dontoptimize</option>
                        <option>-dontpreverify</option>
                        <option>-dontskipnonpubliclibraryclasses</option>
                        <option>-dontskipnonpubliclibraryclassmembers</option>                        
                        <option>-target 1.6</option>
                        <option>-ignorewarnings</option>
                        <option>-dontnote</option>
                    </options>
                    <inFilter>!**.gif,!**.png,!**.jpg</inFilter>
                </configuration>

                <dependencies>
                    <dependency>
                        <groupId>net.sf.proguard</groupId>
                        <artifactId>proguard</artifactId>
                        <version>4.4</version>
                        <scope>runtime</scope>
                    </dependency>
                </dependencies>
            </plugin>
Algumas mensagens que ocorrem:
[proguard] Warning: library class org.jcp.xml.dsig.internal.dom.DOMSignedInfo depends on program class org.w3c.dom.Node
 [proguard] Warning: library class com.sun.xml.internal.ws.client.Stub depends on program class javax.xml.namespace.QName
 [proguard] Warning: library class com.sun.xml.internal.ws.client.Stub depends on program class javax.xml.namespace.QName
 [proguard] Warning: library class com.sun.org.apache.xerces.internal.impl.xs.traversers.XSAnnotationInfo depends on program class org.w3c.dom.Element
 [proguard] Warning: library class com.sun.org.apache.xml.internal.dtm.ref.IncrementalSAXSource depends on program class org.xml.sax.ContentHandler
 [proguard] Warning: library class com.sun.org.apache.xml.internal.dtm.ref.IncrementalSAXSource depends on program class org.xml.sax.ext.LexicalHandler
 [proguard] Warning: library class com.sun.org.apache.xml.internal.dtm.ref.IncrementalSAXSource depends on program class org.xml.sax.DTDHandler
 [proguard] Warning: library class com.sun.org.apache.xml.internal.dtm.ref.IncrementalSAXSource depends on program class org.xml.sax.InputSource
 [proguard] Warning: library class javax.xml.soap.SOAPMessage depends on program class javax.activation.DataHandler

Alguma luz?

ricardospinoza

A minha estrutura está assim war pacotes da view, e uma dependência (jar) com meus controladores, daos, etc…

Criado 25 de setembro de 2010
Ultima resposta 29 de set. de 2010
Respostas 4
Participantes 2