Java ASM 操作 IntInsnNodes
Java ASM Manipulate IntInsnNodes
我是 ASM 的新手。
我试图禁止在反编译器中进行 int 搜索,所以我试图多次否定数学运算。
示例:int i = 10;
--> int i = 2 + 8;
我已经这样做了,但我想这样做:
int i = -(-(2+8));
如果你知道我是怎么做到的,请告诉我!
谢谢!
您需要用
链替换单个 BIPUSH 10
(IntInsnNode
) 指令
ICONST_2 // InsnNode
BIPUSH 8 // IntInsnNode
IADD // InsnNode
INEG // InsnNode
INEG // InsnNode
如果您的目标是在十六进制编辑器中打开 class 时不应该发现 BIPUSH 10
,这可能会成功,但我很难称之为混淆。很容易将这个字节码链减少到原始值。
最后,请注意此替换更改了堆栈大小要求,因此您可能需要调整 maxStack
变量。
我是 ASM 的新手。
我试图禁止在反编译器中进行 int 搜索,所以我试图多次否定数学运算。
示例:int i = 10;
--> int i = 2 + 8;
我已经这样做了,但我想这样做:
int i = -(-(2+8));
如果你知道我是怎么做到的,请告诉我! 谢谢!
您需要用
链替换单个BIPUSH 10
(IntInsnNode
) 指令
ICONST_2 // InsnNode
BIPUSH 8 // IntInsnNode
IADD // InsnNode
INEG // InsnNode
INEG // InsnNode
如果您的目标是在十六进制编辑器中打开 class 时不应该发现 BIPUSH 10
,这可能会成功,但我很难称之为混淆。很容易将这个字节码链减少到原始值。
最后,请注意此替换更改了堆栈大小要求,因此您可能需要调整 maxStack
变量。