diff --git a/.gitignore b/.gitignore index 1b168f7..874d961 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ PlayOutAgent/poa-trunk.jar ReportingAgent/bin TamiFlexDatabase/bin Booster/bin +**/target/ PlayInAgent/pia-trunk.jar de.bodden.tamiflex/lib/pia.jar de.bodden.tamiflex/lib/poa.jar diff --git a/Booster/ant.settings.template b/Booster/ant.settings.template deleted file mode 100644 index ff5ba55..0000000 --- a/Booster/ant.settings.template +++ /dev/null @@ -1,2 +0,0 @@ -soot.version=trunk -tf.version=trunk \ No newline at end of file diff --git a/Booster/build.xml b/Booster/build.xml deleted file mode 100644 index 165c1ff..0000000 --- a/Booster/build.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - description - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Booster/lib/soot-trunk.jar b/Booster/lib/soot-trunk.jar deleted file mode 100644 index 6f546bb..0000000 Binary files a/Booster/lib/soot-trunk.jar and /dev/null differ diff --git a/Booster/pom.xml b/Booster/pom.xml new file mode 100644 index 0000000..0e87d3d --- /dev/null +++ b/Booster/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + de.bodden.tamiflex + tamiflex-parent + trunk + + booster + + 11 + + + src + booster-${project.version} + + + org.apache.maven.plugins + maven-shade-plugin + + + package + shade + + false + + + + de.bodden.tamiflex.booster.ReflInliner + ${project.version} + + + + + + + + + + + + + org.soot-oss + soot + 4.6.0 + + + diff --git a/MonitorAgent/ant.settings b/MonitorAgent/ant.settings deleted file mode 100644 index 3dfefc2..0000000 --- a/MonitorAgent/ant.settings +++ /dev/null @@ -1 +0,0 @@ -tf.version=trunk \ No newline at end of file diff --git a/MonitorAgent/build.xml b/MonitorAgent/build.xml deleted file mode 100644 index 9dda16f..0000000 --- a/MonitorAgent/build.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MonitorAgent/poa-trunk.jar b/MonitorAgent/poa-trunk.jar deleted file mode 100644 index 7bb2a6a..0000000 Binary files a/MonitorAgent/poa-trunk.jar and /dev/null differ diff --git a/MonitorAgent/pom.xml b/MonitorAgent/pom.xml new file mode 100644 index 0000000..f75dacd --- /dev/null +++ b/MonitorAgent/pom.xml @@ -0,0 +1,63 @@ + + + 4.0.0 + + de.bodden.tamiflex + tamiflex-parent + trunk + + monitor-agent + + src + poa-${project.version} + + + org.codehaus.mojo + build-helper-maven-plugin + + + add-shared-and-runtime-sources + generate-sources + add-source + + + rtlib + + + + + + + org.apache.maven.plugins + maven-shade-plugin + + + package + shade + + false + + + + de.bodden.tamiflex.playout.Agent + true + ${project.version} + + + + + + + + + + + + de.bodden.tamiflex + normalizer + ${project.version} + + + diff --git a/MonitorAgent/src/de/bodden/tamiflex/playout/ReflectionMonitor.java b/MonitorAgent/src/de/bodden/tamiflex/playout/ReflectionMonitor.java index ca2680a..a834439 100644 --- a/MonitorAgent/src/de/bodden/tamiflex/playout/ReflectionMonitor.java +++ b/MonitorAgent/src/de/bodden/tamiflex/playout/ReflectionMonitor.java @@ -16,11 +16,9 @@ import java.lang.instrument.IllegalClassFormatException; import java.security.ProtectionDomain; -import org.objectweb.asm.ClassAdapter; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.MethodAdapter; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; @@ -36,7 +34,7 @@ public byte[] transform(ClassLoader loader, final String className, ClassReader creader = new ClassReader(classfileBuffer); ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS); - ClassVisitor visitor = new ClassAdapter(writer) { + ClassVisitor visitor = new ClassVisitor(Opcodes.ASM9, writer) { public MethodVisitor visitMethod(int access, String methodName, String desc, String signature, String[] exceptions) { //delegate @@ -66,10 +64,10 @@ public MethodVisitor visitMethod(int access, String methodName, String desc, Str } } - static class ClassForNameAdapter extends MethodAdapter { + static class ClassForNameAdapter extends MethodVisitor { public ClassForNameAdapter(MethodVisitor mv) { - super(mv); + super(Opcodes.ASM9, mv); } @Override @@ -85,10 +83,10 @@ public void visitInsn(int opcode) { } - static class ClassNewInstanceAdapter extends MethodAdapter { + static class ClassNewInstanceAdapter extends MethodVisitor { public ClassNewInstanceAdapter(MethodVisitor mv) { - super(mv); + super(Opcodes.ASM9, mv); } @Override @@ -104,10 +102,10 @@ public void visitInsn(int opcode) { } - static class MethodInvokeAdapter extends MethodAdapter { + static class MethodInvokeAdapter extends MethodVisitor { public MethodInvokeAdapter(MethodVisitor mv) { - super(mv); + super(Opcodes.ASM9, mv); } @Override @@ -125,11 +123,11 @@ public void visitInsn(int opcode) { } - static class ConstructorNewInstanceAdapter extends MethodAdapter { + static class ConstructorNewInstanceAdapter extends MethodVisitor { public ConstructorNewInstanceAdapter(MethodVisitor mv) { - super(mv); + super(Opcodes.ASM9, mv); } @Override @@ -146,10 +144,10 @@ public void visitInsn(int opcode) { } //Comment creation -/* static class CommentAdapter extends MethodAdapter { +/* static class CommentAdapter extends MethodVisitor { public CommentAdapter(MethodVisitor mv) { - super(mv); + super(Opcodes.ASM9, mv); } @Override diff --git a/Normalizer/lib/asm-9.9.1.jar b/Normalizer/lib/asm-9.9.1.jar deleted file mode 100644 index 3fb0cd0..0000000 Binary files a/Normalizer/lib/asm-9.9.1.jar and /dev/null differ diff --git a/Normalizer/lib/asm-commons-9.9.1.jar b/Normalizer/lib/asm-commons-9.9.1.jar deleted file mode 100644 index c69bd4a..0000000 Binary files a/Normalizer/lib/asm-commons-9.9.1.jar and /dev/null differ diff --git a/Normalizer/lib/asm-tree-9.9.1.jar b/Normalizer/lib/asm-tree-9.9.1.jar deleted file mode 100644 index 59edb09..0000000 Binary files a/Normalizer/lib/asm-tree-9.9.1.jar and /dev/null differ diff --git a/Normalizer/lib/asm-util-9.9.1.jar b/Normalizer/lib/asm-util-9.9.1.jar deleted file mode 100644 index 0a9e77a..0000000 Binary files a/Normalizer/lib/asm-util-9.9.1.jar and /dev/null differ diff --git a/Normalizer/pom.xml b/Normalizer/pom.xml new file mode 100644 index 0000000..567d10a --- /dev/null +++ b/Normalizer/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + + de.bodden.tamiflex + tamiflex-parent + trunk + + normalizer + + src + normalizer-${project.version} + + + + org.ow2.asm + asm + ${asm.version} + + + org.ow2.asm + asm-commons + ${asm.version} + + + org.ow2.asm + asm-tree + ${asm.version} + + + diff --git a/PlayInAgent/ant.settings b/PlayInAgent/ant.settings deleted file mode 100644 index 87dfbb4..0000000 --- a/PlayInAgent/ant.settings +++ /dev/null @@ -1 +0,0 @@ -tf.version=trunk diff --git a/PlayInAgent/ant.settings.template b/PlayInAgent/ant.settings.template deleted file mode 100644 index 3dfefc2..0000000 --- a/PlayInAgent/ant.settings.template +++ /dev/null @@ -1 +0,0 @@ -tf.version=trunk \ No newline at end of file diff --git a/PlayInAgent/build.xml b/PlayInAgent/build.xml deleted file mode 100644 index 7ea7f5a..0000000 --- a/PlayInAgent/build.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PlayInAgent/pom.xml b/PlayInAgent/pom.xml new file mode 100644 index 0000000..6cb2300 --- /dev/null +++ b/PlayInAgent/pom.xml @@ -0,0 +1,72 @@ + + + 4.0.0 + + de.bodden.tamiflex + tamiflex-parent + trunk + + playin-agent + + 21 + + + src + pia-${project.version} + + + . + pia.properties + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + add-runtime-sources + generate-sources + add-source + + rtlib + + + + + + org.apache.maven.plugins + maven-shade-plugin + + + package + shade + + false + + + + de.bodden.tamiflex.playin.Agent + de.bodden.tamiflex.playin.Agent + true + ${project.version} + pia-${project.version}.jar pia.jar + + + + + + + + + + + + de.bodden.tamiflex + normalizer + ${project.version} + + + diff --git a/PlayOutAgent/ant.settings b/PlayOutAgent/ant.settings deleted file mode 100644 index 3dfefc2..0000000 --- a/PlayOutAgent/ant.settings +++ /dev/null @@ -1 +0,0 @@ -tf.version=trunk \ No newline at end of file diff --git a/PlayOutAgent/ant.settings.template b/PlayOutAgent/ant.settings.template deleted file mode 100644 index 3dfefc2..0000000 --- a/PlayOutAgent/ant.settings.template +++ /dev/null @@ -1 +0,0 @@ -tf.version=trunk \ No newline at end of file diff --git a/PlayOutAgent/build.xml b/PlayOutAgent/build.xml deleted file mode 100644 index bcc155e..0000000 --- a/PlayOutAgent/build.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PlayOutAgent/pom.xml b/PlayOutAgent/pom.xml new file mode 100644 index 0000000..990d171 --- /dev/null +++ b/PlayOutAgent/pom.xml @@ -0,0 +1,82 @@ + + + 4.0.0 + + de.bodden.tamiflex + tamiflex-parent + trunk + + playout-agent + + 21 + + + src + poa-${project.version} + + + . + poa.properties + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + add-runtime-sources + generate-sources + add-source + + rtlib + + + + + + org.apache.maven.plugins + maven-shade-plugin + + + package + shade + + false + + + + de.bodden.tamiflex.playout.Agent + de.bodden.tamiflex.playout.Agent + true + ${project.version} + poa-${project.version}.jar poa.jar + + + + + + + + + + + + de.bodden.tamiflex + normalizer + ${project.version} + + + org.ow2.asm + asm-util + ${asm.version} + + + org.apache.ant + ant + 1.10.15 + + + diff --git a/README.md b/README.md index 6b22e4b..43245f8 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,16 @@ TamiFlex is a tool for dealing with reflection in the static analysis of Java programs. It can record reflective calls dynamically and then embed them into the application. [Read more here in the wiki.](https://github.com/secure-software-engineering/tamiflex/wiki) +## Building + +Build the project from the repository root with Maven and JDK 21 or newer: + +```sh +mvn clean package +``` + +Maven downloads the build dependencies from Maven Central. The generated agent and tool JARs are written to the respective module's `target` directory. + ## License TamiFlex itself is available as Open Source under the [Eclipse Public License](https://www.eclipse.org/legal/epl-v10.html). diff --git a/ReportingAgent/ant.settings b/ReportingAgent/ant.settings deleted file mode 100644 index 3dfefc2..0000000 --- a/ReportingAgent/ant.settings +++ /dev/null @@ -1 +0,0 @@ -tf.version=trunk \ No newline at end of file diff --git a/ReportingAgent/ant.settings.template b/ReportingAgent/ant.settings.template deleted file mode 100644 index 3dfefc2..0000000 --- a/ReportingAgent/ant.settings.template +++ /dev/null @@ -1 +0,0 @@ -tf.version=trunk \ No newline at end of file diff --git a/ReportingAgent/build.xml b/ReportingAgent/build.xml deleted file mode 100644 index ba38734..0000000 --- a/ReportingAgent/build.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ReportingAgent/pom.xml b/ReportingAgent/pom.xml new file mode 100644 index 0000000..1985a18 --- /dev/null +++ b/ReportingAgent/pom.xml @@ -0,0 +1,63 @@ + + + 4.0.0 + + de.bodden.tamiflex + tamiflex-parent + trunk + + reporting-agent + + src + reporting-${project.version} + + + org.codehaus.mojo + build-helper-maven-plugin + + + add-shared-and-runtime-sources + generate-sources + add-source + + + rtlib + + + + + + + org.apache.maven.plugins + maven-shade-plugin + + + package + shade + + false + + + + de.bodden.tamiflex.reporting.Agent + true + ${project.version} + + + + + + + + + + + + de.bodden.tamiflex + normalizer + ${project.version} + + + diff --git a/ReportingAgent/src/de/bodden/tamiflex/reporting/ReflectionMonitor.java b/ReportingAgent/src/de/bodden/tamiflex/reporting/ReflectionMonitor.java index 15e80fc..1f69333 100644 --- a/ReportingAgent/src/de/bodden/tamiflex/reporting/ReflectionMonitor.java +++ b/ReportingAgent/src/de/bodden/tamiflex/reporting/ReflectionMonitor.java @@ -18,11 +18,11 @@ import java.lang.instrument.IllegalClassFormatException; import java.security.ProtectionDomain; -import org.objectweb.asm.ClassAdapter; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.ClassWriter; import org.objectweb.asm.MethodVisitor; +import org.objectweb.asm.Opcodes; import de.bodden.tamiflex.normalizer.NameExtractor; @@ -43,7 +43,7 @@ public byte[] transform(ClassLoader loader, String className, ClassReader creader = new ClassReader(classfileBuffer); ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS); - ClassVisitor visitor = new ClassAdapter(writer) { + ClassVisitor visitor = new ClassVisitor(Opcodes.ASM9, writer) { public MethodVisitor visitMethod(int access, String methodName, String desc, String signature, String[] exceptions) { //delegate diff --git a/ReportingAgent/src/de/bodden/tamiflex/reporting/ReportingMethodAdapter.java b/ReportingAgent/src/de/bodden/tamiflex/reporting/ReportingMethodAdapter.java index 00a5eaa..1e60b86 100644 --- a/ReportingAgent/src/de/bodden/tamiflex/reporting/ReportingMethodAdapter.java +++ b/ReportingAgent/src/de/bodden/tamiflex/reporting/ReportingMethodAdapter.java @@ -10,14 +10,13 @@ ******************************************************************************/ package de.bodden.tamiflex.reporting; -import org.objectweb.asm.MethodAdapter; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; -public abstract class ReportingMethodAdapter extends MethodAdapter { +public abstract class ReportingMethodAdapter extends MethodVisitor { public ReportingMethodAdapter(MethodVisitor mv) { - super(mv); + super(Opcodes.ASM9, mv); } @Override diff --git a/TamiFlexDatabase/ant.settings b/TamiFlexDatabase/ant.settings deleted file mode 100644 index 3dfefc2..0000000 --- a/TamiFlexDatabase/ant.settings +++ /dev/null @@ -1 +0,0 @@ -tf.version=trunk \ No newline at end of file diff --git a/TamiFlexDatabase/build.xml b/TamiFlexDatabase/build.xml deleted file mode 100644 index d981f0d..0000000 --- a/TamiFlexDatabase/build.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/TamiFlexDatabase/lib/mysql-connector-java-5.1.12-bin.jar b/TamiFlexDatabase/lib/mysql-connector-java-5.1.12-bin.jar deleted file mode 100644 index af5847e..0000000 Binary files a/TamiFlexDatabase/lib/mysql-connector-java-5.1.12-bin.jar and /dev/null differ diff --git a/TamiFlexDatabase/pom.xml b/TamiFlexDatabase/pom.xml new file mode 100644 index 0000000..7399e49 --- /dev/null +++ b/TamiFlexDatabase/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + + de.bodden.tamiflex + tamiflex-parent + trunk + + tamiflex-database + + src + dbdumper-${project.version} + + + org.apache.maven.plugins + maven-shade-plugin + + + package + shade + + false + + + + de.bodden.tamiflex.db.DBMain + ${project.version} + + + + + + + + + + + + com.mysql + mysql-connector-j + 8.2.0 + + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..1fad21e --- /dev/null +++ b/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + + de.bodden.tamiflex + tamiflex-parent + trunk + pom + + + Normalizer + Booster + PlayInAgent + PlayOutAgent + MonitorAgent + ReportingAgent + TamiFlexDatabase + + + + UTF-8 + 8 + 9.9.1 + 3.13.0 + 3.6.0 + 3.6.0 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven.compiler.plugin.version} + + + org.apache.maven.plugins + maven-shade-plugin + ${maven.shade.plugin.version} + + + org.codehaus.mojo + build-helper-maven-plugin + ${build.helper.plugin.version} + + + + +