Call dx from Maven profile
Convert the dx calls from build.sh to equivalent exec calls in Maven deploy profile. While this commit takes into account differences between Windows and *nix, it was only tested on Windows, and the resulting binaries have not been tested at all! In addition, I was not able to pass individual .class file names to dx without getting a "class name does not match path" error, so I changed it to copy all required classes into a temp directory and call dx from there. I also changed the cross-project paths to refer to the respective Maven classpath, so in case you do an individual project build, the library dependencies are taken from the Maven repository instead of taking them from the target/ directory of the projects directly.
This commit is contained in:
parent
2c73323ceb
commit
438529d860
|
@ -1,25 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
cd ..
|
||||
mvn package -P deploy
|
||||
cd -
|
||||
|
||||
echo 'Building shell'
|
||||
dx --verbose --dex \
|
||||
--output=../../../../data/android/shell.jar \
|
||||
library/target/classes/./androidpayload/stage/Shell.class library/target/classes/./androidpayload/stage/Stage.class \
|
||||
../javapayload/target/classes/./javapayload/stage/StreamForwarder.class
|
||||
|
||||
echo 'Building meterpreter stage'
|
||||
dx --verbose --dex \
|
||||
--output=../../../../data/android/metstage.jar \
|
||||
library/target/classes/./androidpayload/stage/Meterpreter.class library/target/classes/./androidpayload/stage/Stage.class
|
||||
|
||||
echo 'Building meterpreter'
|
||||
dx --verbose --dex \
|
||||
--output=../../../../data/android/meterpreter.jar \
|
||||
library/target/classes/./com/metasploit/meterpreter/android/*.class \
|
||||
library/target/classes/./com/metasploit/meterpreter/*.class \
|
||||
../meterpreter/meterpreter/target/meterpreter.jar \
|
||||
../meterpreter/stdapi/target/ext_server_stdapi.jar
|
||||
|
|
@ -57,4 +57,80 @@
|
|||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<profiles>
|
||||
<profile>
|
||||
<!-- deploy built files to Metasploit data directory -->
|
||||
<id>deploy</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>1.7</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<target>
|
||||
<condition property="dx.filename" value="dx.bat">
|
||||
<os family="windows" />
|
||||
</condition>
|
||||
<property name="dx.filename" value="dx" />
|
||||
|
||||
<echo>Building shell</echo>
|
||||
<delete dir="${project.basedir}/target/dx" />
|
||||
<mkdir dir="${project.basedir}/target/dx/shell" />
|
||||
<copy todir="${project.basedir}/target/dx/shell">
|
||||
<fileset dir="${project.basedir}/target/classes">
|
||||
<include name="androidpayload/stage/Shell.class" />
|
||||
<include name="androidpayload/stage/Stage.class" />
|
||||
</fileset>
|
||||
<zipfileset src="${com.metasploit:Metasploit-JavaPayload:jar}" includes="javapayload/stage/StreamForwarder.class" />
|
||||
</copy>
|
||||
<exec executable="${android.sdk.path}/platform-tools/${dx.filename}" failonerror="true">
|
||||
<arg value="--verbose" />
|
||||
<arg value="--dex" />
|
||||
<arg value="--output=${project.basedir}/../../../../../data/android/shell.jar" />
|
||||
<arg value="${project.basedir}/target/dx/shell" />
|
||||
</exec>
|
||||
|
||||
<echo>Building meterpreter stage</echo>
|
||||
<mkdir dir="${project.basedir}/target/dx/metstage" />
|
||||
<copy todir="${project.basedir}/target/dx/metstage">
|
||||
<fileset dir="${project.basedir}/target/classes">
|
||||
<include name="androidpayload/stage/Meterpreter.class" />
|
||||
<include name="androidpayload/stage/Stage.class" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<exec executable="${android.sdk.path}/platform-tools/${dx.filename}" failonerror="true">
|
||||
<arg value="--verbose" />
|
||||
<arg value="--dex" />
|
||||
<arg value="--output=${project.basedir}/../../../../../data/android/metstage.jar" />
|
||||
<arg value="${project.basedir}/target/dx/metstage" />
|
||||
</exec>
|
||||
|
||||
<echo>Building meterpreter</echo>
|
||||
<mkdir dir="${project.basedir}/target/dx/meterpreter" />
|
||||
<copy todir="${project.basedir}/target/dx/meterpreter">
|
||||
<fileset dir="${project.basedir}/target/classes" includes="com/metasploit/meterpreter/**/*.class" />
|
||||
</copy>
|
||||
<exec executable="${android.sdk.path}/platform-tools/${dx.filename}" failonerror="true">
|
||||
<arg value="--verbose" />
|
||||
<arg value="--dex" />
|
||||
<arg value="--output=${project.basedir}/../../../../../data/android/meterpreter.jar" />
|
||||
<arg value="${project.basedir}/target/dx/meterpreter" />
|
||||
<arg value="${com.metasploit:Metasploit-Java-Meterpreter:jar}" />
|
||||
<arg value="${com.metasploit:Metasploit-Java-Meterpreter-stdapi:jar}" />
|
||||
</exec>
|
||||
</target>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
</project>
|
||||
|
|
Loading…
Reference in New Issue