[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] AspectJ and obfuscator
|
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Ted I am probably missing something but:
- - usually the obfuscator just change some namings here and there and this has no impact on runtime
- - advanced features include (after the initial renaming strategy) some method overloading, and this
has no impact on runtime.
Last, but not least, take a look at IntelliJ IDEA or a smaller one Jalopy. Try to break down that
bytecode, and I can assure you will spend more time than you imagine. It's like in a "thief" theory:
don't try to creat unlockable locks as you will attract 'em, but don't let the door open".
respectfully,
- --
:alex |.::the_mindstorm::.|
[quote Ted Neward::on 2/6/2005 12:27 PM]
| BTW, just so you know, obfuscation can often confuse the hell out of the JIT
| compiler (if there is one) and can slow down execution (even if there isn't
| a JIT compiler), since it tends to do some strange things with bytecode in
| order to make it less readable (and, by extension, less easily executed).
| I've heard, anecdotally, of slowdowns of up to 33% due to obfuscation.
|
| As a general rule, if you put code on my machine, I can reverse it
| regardless of what kinds of protection you put on it. (If all else fails, I
| can slap a debugger on the running process and watch it that way.) You might
| want to seriously reconsider the obfuscation step entirely.
|
| Ted Neward
| Author, Instructor, Consultant
| Java, .NET, Web services
| http://www.neward.net/ted
|
|> -----Original Message-----
|> From: aspectj-users-admin@xxxxxxxxxxx [mailto:aspectj-users-
|> admin@xxxxxxxxxxx] On Behalf Of Sebastian Berger
|> Sent: Friday, February 04, 2005 10:01 AM
|> To: aspectj-users@xxxxxxxxxxx
|> Subject: [aspectj-users] AspectJ and obfuscator
|>
|> Hi,
|>
|> I really have some big problems with writing an ant build file for an
|> application using an AspectJ aspect. The application is a J2ME project and
|> that's why I need an abfuscator. I am using proguard as obfuscator and
|> since
|> 3 days I am now trying to write an ant file for building my project. Cause
|> I
|> am relative new to writing ant-files by myself, maybe the solution of the
|> problem is easy, but at the moment I don't see any way to solve my
|> problem...
|> So the problem is that I don't know which jars to include in the
|> obfuscation
|> process, cause when I try to start my application I always get an error
|> that
|> he cannon find class org/aspectj/lang/NoAspectBoundException. I tried
|> several things, like including aspectjtools.jar and aspectjrt.jar in the
|> obfuscation-process, but none has any positive results on building... I
|> only
|> get millions of warnings, when I do this. So here is my actual build-file
|> (I
|> am already using as compiler the ajc-compiler; as ant-task I am using
|> iajc):
|>
|> build.xml:
|> ---------------
|> <project name="biginteger" default="dist" basedir="..">
|> <property name="project" value="biginteger"/>
|> <property name="WTK.dir" value="C:\Programme\WTK21"/>
|> <property name="MIDP.lib" value="${WTK.dir}\lib\midpapi20.jar" />
|> <property name="CLDC.lib" value="${WTK.dir}\lib\cldcapi11.jar" />
|>
|> <property name="jdk.home" value="C:\java\j2sdk" />
|> <property name="ajc.home" value="C:\Programme\aspectj" />
|>
|> <!-- The following property is needed only for obufscate_proguard. -->
|> <property name="proguard"
|> value="c:\Programme\proguard\lib\proguard.jar"/>
|>
|> <taskdef
|> resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties">
|> </taskdef>
|>
|> <path id="bootclasspath">
|> <pathelement path="${MIDP.lib}"/>
|> <pathelement path="${CLDC.lib}"/>
|> </path>
|>
|> <!-- The following property is only needs for the "tools"
|> and "jad" targets. -->
|> <property name="ant" value="C:\Programme\apache_ant"/>
|>
|> <path id="ajc.classpath">
|> <pathelement location="${ajc.home}/lib/aspectjrt.jar" />
|> <pathelement location="${ajc.home}/lib/aspectjtools.jar" />
|> <pathelement location="${ajc.home}/lib/aspectj-ant.jar" />
|> <pathelement location="${jdk.home}/lib/tools.jar" />
|> </path>
|>
|> <path id="app.classpath">
|> <pathelement location="${CLDC.lib}" />
|> <pathelement location="${MIDP.lib}" />
|> </path>
|>
|> <path id="app.crypt">
|> <pathelement location="../lib/midp_classes.zip" />
|> </path>
|>
|> <property name="Aspect.lib" value="${ajc.home}/lib/aspectjrt.jar" />
|>
|> <!-- Runs the application in the emulator. -->
|> <target name="run">
|> <exec executable="${WTK.dir}/bin/emulator">
|> <arg line="-classpath build/bin/${project}.jar"/>
|> <arg line="-Xdescriptor build/bin/${project}.jad"/>
|> </exec>
|> </target>
|>
|> <!-- Adjusts the JAR size in the JAD. -->
|> <target name="jad" depends="dist">
|> <taskdef name="jad" classname="JarSizeFix"/>
|> <jad jar="build/bin/${project}.jar" jad="build/bin/${project}.jad"/>
|> </target>
|>
|> <!-- Packages the application -->
|> <target name="dist" depends="preverify">
|> <mkdir dir="build/bin"/>
|> <jar basedir="build/preverified"
|> jarfile="build/bin/${project}.jar"
|> manifest="MANIFEST.MF">
|> </jar>
|> <copy file="${project}.jad"
|> tofile="build/bin/${project}.jad"/>
|> </target>
|>
|> <!--
|> This target runs the preverifier on the class files.
|>
|> Change 'depends' attribute here to select obfuscation:
|> obfuscate_proguard
|> obfuscate_retroguard
|> obfuscate_null
|> -->
|> <target name="preverify" depends="obfuscate_proguard">
|> <mkdir dir="build/preverified"/>
|> <exec executable="${WTK.dir}/bin/preverify">
|> <arg line="-classpath ${MIDP.lib};${CLDC.lib}"/>
|> <arg line="-d build/preverified"/>
|> <arg line="build/obfuscated"/>
|> </exec>
|> </target>
|>
|> <!-- Obufscates using ProGuard. -->
|> <target name="obfuscate_proguard" depends="compile, copylib">
|> <mkdir dir="build/proguard"/>
|> <jar basedir="build/classes"
|> jarfile="build/proguard/${project}-input.jar"/>
|>
|> <java fork="yes" classname="proguard.ProGuard"
|> classpath="${proguard}">
|> <arg line="-libraryjars ${MIDP.lib};${CLDC.lib}"/>
|> <arg line="-injars build/proguard/${project}-input.jar"/>
|> <arg line="-outjar build/proguard/${project}-output.jar"/>
|> <arg line="-keep 'public class * extends
|> javax.microedition.midlet.MIDlet'"/>
|> <arg line="-defaultpackage"/>
|> <arg line="-dontusemixedcaseclassnames"/>
|> </java>
|>
|> <mkdir dir="build/obfuscated"/>
|> <unjar src="build/proguard/${project}-output.jar"
|> dest="build/obfuscated"/>
|> </target>
|>
|> <!-- Unjars the library APIs in preparation for obfuscation. -->
|> <target name="copylib" depends="init">
|> <unjar src="lib/midp_classes.zip" dest="build/classes"/>
|> </target>
|>
|> <!-- Compiles the source code. -->
|> <target name="compile" depends="init">
|> <mkdir dir="build/classes"/>
|> <iajc destdir="build/classes">
|> <sourceroots>
|> <pathelement location="src"/>
|> </sourceroots>
|> <classpath>
|> <path refid="ajc.classpath"/>
|> <path refid="app.classpath"/>
|> <path refid="app.crypt"/>
|> </classpath>
|>
|> </iajc>
|> </target>
|>
|>
|> <!-- Builds the JarSizeFix Ant task and installs it
|> in the Ant lib directory. -->
|> <target name="tools">
|> <mkdir dir="build/tools_classes"/>
|> <javac destdir="build/tools_classes"
|> srcdir="build/tools"
|> target="1.1"/>
|> <jar jarfile="${ant}/lib/wd-tools.jar">
|> <fileset dir="build/tools_classes"/>
|> </jar>
|> <delete dir="build/tools_classes"/>
|> </target>
|>
|> <target name="init">
|> <tstamp/>
|> </target>
|>
|> </project>
|> -------------------------------------------------------
|>
|> As result of starting this build.xml file with ant, I get the following
|> result:
|> -----------------------------
|> Buildfile: build.xml
|>
|> init:
|>
|> compile:
|> [mkdir] Created dir: D:\Programmierung\studi\biginteger\build\classes
|>
|> copylib:
|> [unjar] Expanding:
|> D:\Programmierung\studi\biginteger\lib\midp_classes.zip i
|> nto D:\Programmierung\studi\biginteger\build\classes
|>
|> obfuscate_proguard:
|> [mkdir] Created dir: D:\Programmierung\studi\biginteger\build\proguard
|> [jar] Building jar:
|> D:\Programmierung\studi\biginteger\build\proguard\bigi
|> nteger-input.jar
|> [java] ProGuard, version 3.2
|> [java] Reading program jar [build/proguard/biginteger-input.jar]
|> [java] Reading library jar [C:\Programme\WTK21\lib\midpapi20.jar]
|> [java] Reading library jar [C:\Programme\WTK21\lib\cldcapi11.jar]
|> [java] Preparing output jar [build/proguard/biginteger-output.jar]
|> [java] Copying resources from program jar
|> [build/proguard/biginteger-input.
|> jar]
|> [mkdir] Created dir:
|> D:\Programmierung\studi\biginteger\build\obfuscated
|> [unjar] Expanding:
|> D:\Programmierung\studi\biginteger\build\proguard\biginte
|> ger-output.jar into D:\Programmierung\studi\biginteger\build\obfuscated
|>
|> preverify:
|> [mkdir] Created dir:
|> D:\Programmierung\studi\biginteger\build\preverified
|> [exec] Error preverifying class c
|> [exec] VERIFIER ERROR c.b()Lc;:
|> [exec] Cannot find class org/aspectj/lang/NoAspectBoundException
|> [exec] Result: 1
|>
|> dist:
|> [jar] Building jar:
|> D:\Programmierung\studi\biginteger\build\bin\bigintege
|> r.jar
|>
|> jad:
|> [jad] MIDlet-Jar-Size: 30230
|>
|> BUILD SUCCESSFUL
|> -----------------------------------------
|>
|> So the j2me preverifier tells me that he couldn't find the class:
|> org/aspectj/lang/NoAspectBoundException
|>
|> I really don't know how to solve the problem, so for any hints I would be
|> sooooo thankful and happy, cause I am really getting depressed with this.
|>
|> Thanks in advance,
|> Sebastian
|>
|>
|> _______________________________________________
|> aspectj-users mailing list
|> aspectj-users@xxxxxxxxxxx
|> http://dev.eclipse.org/mailman/listinfo/aspectj-users
|
|
|
| _______________________________________________
| aspectj-users mailing list
| aspectj-users@xxxxxxxxxxx
| http://dev.eclipse.org/mailman/listinfo/aspectj-users
|
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (MingW32)
iD8DBQFCBfc3TTDTje0R2dgRAvvSAJ4uvFUfRRsz2witItAXaIkGmtQZfgCfZV3P
Rjfw05fSPegimY9C9HRe2Vo=
=JYCX
-----END PGP SIGNATURE-----