diff --git a/src/main/kotlin/net/revanced/patcher/cache/PatchData.kt b/src/main/kotlin/net/revanced/patcher/cache/PatchData.kt index 68efce8..5cc2c16 100644 --- a/src/main/kotlin/net/revanced/patcher/cache/PatchData.kt +++ b/src/main/kotlin/net/revanced/patcher/cache/PatchData.kt @@ -6,7 +6,7 @@ import org.objectweb.asm.tree.MethodNode data class PatchData( val cls: ClassNode, val method: MethodNode, - val sr: ScanData + val sd: ScanData ) data class ScanData( diff --git a/src/main/kotlin/net/revanced/patcher/writer/ASMWriter.kt b/src/main/kotlin/net/revanced/patcher/writer/ASMWriter.kt index 1d4675c..5165cf6 100644 --- a/src/main/kotlin/net/revanced/patcher/writer/ASMWriter.kt +++ b/src/main/kotlin/net/revanced/patcher/writer/ASMWriter.kt @@ -1,9 +1,10 @@ package net.revanced.patcher.writer +import org.objectweb.asm.tree.AbstractInsnNode import org.objectweb.asm.tree.InsnList object ASMWriter { - fun InsnList.testingWow() { - + fun InsnList.setAt(index: Int, node: AbstractInsnNode) { + this[this.get(index)] = node } } \ No newline at end of file diff --git a/src/test/kotlin/net/revanced/patcher/PatcherTest.kt b/src/test/kotlin/net/revanced/patcher/PatcherTest.kt index a6fc121..9f09336 100644 --- a/src/test/kotlin/net/revanced/patcher/PatcherTest.kt +++ b/src/test/kotlin/net/revanced/patcher/PatcherTest.kt @@ -4,9 +4,11 @@ import net.revanced.patcher.patch.Patch import net.revanced.patcher.patch.PatchResultSuccess import net.revanced.patcher.signature.Signature import net.revanced.patcher.util.ExtraTypes +import net.revanced.patcher.writer.ASMWriter.setAt import org.junit.jupiter.api.Test import org.objectweb.asm.Opcodes.* import org.objectweb.asm.Type +import org.objectweb.asm.tree.LdcInsnNode internal class PatcherTest { private val testSigs: Array<Signature> = arrayOf( @@ -40,9 +42,19 @@ internal class PatcherTest { patcher.addPatches( Patch ("TestPatch") { + // Get the method from the resolver cache val main = patcher.cache.methods["mainMethod"] + // Get the instruction list val insn = main.method.instructions!! - + // Let's modify it, so it prints "Hello, ReVanced!" + // Get the start index of our signature + // This will be the index of the LDC instruction + val startIndex = main.sd.startIndex + insn.setAt(startIndex, LdcInsnNode("Hello, ReVanced!")) + // Finally, tell the patcher that this patch was a success. + // You can also return PatchResultError with a message. + // If an exception is thrown inside this function, + // a PatchResultError will be returned with the error message. PatchResultSuccess() } )