diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2a8dd26
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/out/
+/agent/agent.jar
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 171e67d..d587a9a 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -4,6 +4,7 @@
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..dffa447
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# Agent
+
+### Compile the agent as JAR
+
+```shell
+cd agent/src
+find . -name '*.java' -print -exec javac -d ../../out/production/agent \{\} \;
+cd ..
+jar cfm agent.jar manifest.txt -C ../out/production/agent .
+```
+
+### Run application with agent
+
+```shell
+java -javaagent:agent/agent.jar=hello -cp out/production/application ch.usi.inf.sp.dbi.Application
+```
\ No newline at end of file
diff --git a/agent/manifest.txt b/agent/manifest.txt
new file mode 100644
index 0000000..66b9a72
--- /dev/null
+++ b/agent/manifest.txt
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+Premain-Class: ch.usi.inf.sp.dbi.agent.Agent
diff --git a/agent/src/ch/usi/inf/sp/dbi/agent/Agent.java b/agent/src/ch/usi/inf/sp/dbi/agent/Agent.java
new file mode 100644
index 0000000..534bebc
--- /dev/null
+++ b/agent/src/ch/usi/inf/sp/dbi/agent/Agent.java
@@ -0,0 +1,10 @@
+package ch.usi.inf.sp.dbi.agent;
+
+import java.lang.instrument.Instrumentation;
+
+public class Agent {
+ public static void premain(String agentArgs, Instrumentation inst) {
+ System.out.println("Agent starting (arguments: '" + agentArgs + "')");
+ inst.addTransformer(new ClassTransformer());
+ }
+}
diff --git a/agent/src/ch/usi/inf/sp/dbi/agent/ClassTransformer.java b/agent/src/ch/usi/inf/sp/dbi/agent/ClassTransformer.java
new file mode 100644
index 0000000..154be82
--- /dev/null
+++ b/agent/src/ch/usi/inf/sp/dbi/agent/ClassTransformer.java
@@ -0,0 +1,17 @@
+package ch.usi.inf.sp.dbi.agent;
+
+import java.lang.instrument.ClassFileTransformer;
+import java.lang.instrument.IllegalClassFormatException;
+import java.security.ProtectionDomain;
+
+public class ClassTransformer implements ClassFileTransformer {
+ @Override
+ public byte[] transform(ClassLoader loader,
+ String className,
+ Class> classBeingRedefined,
+ ProtectionDomain protectionDomain,
+ byte[] classfileBuffer) throws IllegalClassFormatException {
+ System.out.println("About to transform class <" + loader + ", " + className + ">");
+ return classfileBuffer; // no changes
+ }
+}
diff --git a/application/src/ch/usi/inf/sp/dbi/Application.java b/application/src/ch/usi/inf/sp/dbi/Application.java
new file mode 100644
index 0000000..f667851
--- /dev/null
+++ b/application/src/ch/usi/inf/sp/dbi/Application.java
@@ -0,0 +1,11 @@
+package ch.usi.inf.sp.dbi;
+
+public class Application {
+ public static void main(String... args) {
+ sayHi();
+ }
+
+ public static void sayHi() {
+ System.out.println("Hello!");
+ }
+}
diff --git a/lab-6-maggicl.iml b/lab-6-maggicl.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/lab-6-maggicl.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file