public class AfterInvoke extends BeforeInvoke
This injection point searches for INVOKEVIRTUAL, INVOKESTATIC and
INVOKESPECIAL opcodes matching its arguments and returns a list of insns
after the matching instructions, with special handling for methods
invocations which return a value and immediately assign it to a local
variable. It accepts the following parameters from
At:
Target Selector
which identifies the target methodOpcodes can be
used). This can be used to restrict the fuzz behaviour to consume
only expected opcodes (eg. CHECKCAST). Note that store opcodes
cannot be skipped and specifying them has no effect.Example:
@At(value = "INVOKE_ASSIGN", target="func_1234_a(III)J")
Note that unlike other standard injection points, this class matches the
insn after the invocation, and after any local variable assignment. Use the
shift specifier to
adjust the matched opcode as necessary.
BeforeInvoke.SearchTypeInjectionPoint.AtCode, InjectionPoint.Flags, InjectionPoint.RestrictTargetLevel, InjectionPoint.Specifier| Modifier and Type | Field and Description |
|---|---|
static int[] |
DEFAULT_SKIP
Default opcodes which are eligible to be skipped (see named argument
skip above) if named argument fuzz is
increased beyond the default value of 1.
|
allowPermissive, className, context, logger, mixin, ordinal, targetDEFAULT_ALLOWED_SHIFT_BY, MAX_ALLOWED_SHIFT_BY| Constructor and Description |
|---|
AfterInvoke(InjectionPointData data) |
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
addInsn(org.objectweb.asm.tree.InsnList insns,
java.util.Collection<org.objectweb.asm.tree.AbstractInsnNode> nodes,
org.objectweb.asm.tree.AbstractInsnNode insn) |
find, find, inspectInsn, log, matchesInsn, matchesOrdinal, setLoggingaddMessage, after, and, before, checkPriority, getAtCode, getId, getSlice, getSpecifier, getTargetRestriction, nextNode, or, parse, parse, parse, parse, parse, parse, parse, parse, register, register, setTargetRestriction, shift, toStringpublic static final int[] DEFAULT_SKIP
Skipped opcodes: DUP, IADD, LADD, FADD, DADD, ISUB, LSUB, FSUB, DSUB, IMUL, LMUL, FMUL, DMUL, IDIV, LDIV, FDIV, DDIV, IREM, LREM, FREM, DREM, INEG, LNEG, FNEG, DNEG, ISHL, LSHL, ISHR, LSHR, IUSHR, LUSHR, IAND, LAND, IOR, LOR, IXOR, LXOR, IINC, I2L, I2F, I2D, L2I, L2F, L2D, F2I, F2L, F2D, D2I, D2L, D2F, I2B, I2C, I2S, CHECKCAST, INSTANCEOF
public AfterInvoke(InjectionPointData data)
protected boolean addInsn(org.objectweb.asm.tree.InsnList insns,
java.util.Collection<org.objectweb.asm.tree.AbstractInsnNode> nodes,
org.objectweb.asm.tree.AbstractInsnNode insn)
addInsn in class BeforeInvoke