0
我對ASM很陌生。Java ASM操作IntInsnNodes
我試圖禁止在反編譯器中的int搜索,所以我試圖多次否定數學運算。
例子:int i = 10;
- >int i = 2 + 8;
我已經做了,但我想這樣做是這樣的:
int i = -(-(2+8));
如果你知道,我怎麼能做到這一點,請告訴我! 謝謝!
我對ASM很陌生。Java ASM操作IntInsnNodes
我試圖禁止在反編譯器中的int搜索,所以我試圖多次否定數學運算。
例子:int i = 10;
- >int i = 2 + 8;
我已經做了,但我想這樣做是這樣的:
int i = -(-(2+8));
如果你知道,我怎麼能做到這一點,請告訴我! 謝謝!
您需要與
ICONST_2 // InsnNode
BIPUSH 8 // IntInsnNode
IADD // InsnNode
INEG // InsnNode
INEG // InsnNode
鏈,以取代單一BIPUSH 10
(IntInsnNode
)指令如果你的目標是,在十六進制編輯器打開一個上課的時候BIPUSH 10
不應該發現,這可能會做訣竅,但我幾乎不會稱之爲混淆。將這個字節碼鏈減少到原始值是很容易的。
最後,請注意,此替換會更改堆棧大小要求,因此您可能需要調整maxStack
變量。
你真的認爲,這會混淆任何反編譯器嗎?此外,如果您已經設法將常數重寫爲總和,那麼否定的問題是什麼? – Holger
問題是,它只會否定第一個數字,而不是全部數字。 – ra1nb0wsparkl3zz