Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

アノテーションリファレンス

bytekinアノテーションの完全なリファレンスです。

@ModifyClass

目的

バイトコード変換のためのフックメソッドを含むクラスをマークします。

使用方法

@ModifyClass("com.example.TargetClass")
public class MyHooks {
    // ここにフックメソッド
}

パラメータ

パラメータ必須説明
classNameStringはいターゲットクラスの完全修飾名

スコープ

クラス型にのみ適用されます。

@Inject

目的

メソッドの特定の位置にコードをインジェクトします。

使用方法

@Inject(
    methodName = "myMethod",
    methodDesc = "(I)Ljava/lang/String;",
    at = At.HEAD
)
public static CallbackInfo hook(int param) { }

パラメータ

パラメータ必須説明
methodNameStringはいターゲットメソッド名
methodDescStringはいメソッドディスクリプタ(JVM形式)
atAtはいコードをインジェクトする位置

スコープ

メソッドにのみ適用されます。

戻り値の型

CallbackInfoを返す必要があります。

@Invoke

目的

メソッド呼び出しをインターセプトします。

使用方法

@Invoke(
    targetMethodName = "parentMethod",
    targetMethodDesc = "()V",
    invokeMethodName = "childMethod",
    invokeMethodDesc = "(I)V",
    shift = Shift.BEFORE
)
public static CallbackInfo hook() { }

パラメータ

パラメータ必須説明
targetMethodNameStringはい呼び出しを含むメソッド
targetMethodDescStringはいターゲットメソッドのディスクリプタ
invokeMethodNameStringはい呼び出されるメソッドの名前
invokeMethodDescStringはい呼び出されるメソッドのディスクリプタ
shiftShiftはい呼び出しの前か後か

スコープ

メソッドにのみ適用されます。

@Redirect

目的

メソッド呼び出しを別のターゲットにリダイレクトします。

使用方法

@Redirect(
    targetMethodName = "oldMethod",
    targetMethodDesc = "()V",
    redirectMethodName = "newMethod",
    redirectMethodDesc = "()V"
)
public static void hook() { }

パラメータ

パラメータ必須説明
targetMethodNameStringはい呼び出しを含むメソッド
targetMethodDescStringはいターゲットメソッドのディスクリプタ
redirectMethodNameStringはいリダイレクトメソッドの名前
redirectMethodDescStringはいリダイレクトメソッドのディスクリプタ

@ModifyConstant

目的

バイトコード内の定数値を変更します。

使用方法

@ModifyConstant(
    methodName = "getConfig",
    oldValue = "dev",
    newValue = "prod"
)
public static CallbackInfo hook() { }

パラメータ

パラメータ必須説明
methodNameStringはい定数を含むメソッド
oldValueObjectはい元の定数値
newValueObjectはい新しい定数値

@ModifyVariable

目的

ローカル変数の値を変更します。

使用方法

@ModifyVariable(
    methodName = "process",
    variableIndex = 1
)
public static void hook(String param) { }

パラメータ

パラメータ必須説明
methodNameStringはいターゲットメソッド名
variableIndexintはいローカル変数スロットのインデックス

列挙型: At

説明
HEADメソッドの開始位置、すべてのコードの前
RETURN各return文の前
TAILメソッドの終了位置

列挙型: Shift

説明
BEFOREメソッド呼び出しの前にフックを実行
AFTERメソッド呼び出しの後にフックを実行

次のステップ