我对ASM不熟悉。
我试图在反编译器中禁止int搜索,所以我试图多次否定数学运算。
示例:int i = 10;
- > int i = 2 + 8;
我已经这样做了,但我想这样做:
int i = -(-(2+8));
如果你知道,我怎么能这样做,请告诉我! 谢谢!
答案 0 :(得分:1)
您需要使用
链替换单个IntInsnNode
(ICONST_2 // InsnNode
BIPUSH 8 // IntInsnNode
IADD // InsnNode
INEG // InsnNode
INEG // InsnNode
)指令
BIPUSH 10
如果您的目标是在十六进制编辑器中打开一个类时不应该发现maxStack
,那么这可能会有所帮助,但我很难称之为混淆。很容易将这个字节码链减少到原始值。
最后,请注意,此替换更改了堆栈大小要求,因此您可能需要调整if ("test" < "paul")
{
cout << "test is less than paul" << endl;
}
变量。