From 1f9aac59ee9017c7891712189b50f15b2469cc91 Mon Sep 17 00:00:00 2001 From: walon Date: Sat, 21 Jun 2025 11:43:04 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=A1=A8=E8=BE=BE=E5=BC=8F?= =?UTF-8?q?=E6=B7=B7=E6=B7=86=E9=A1=BA=E5=BA=8F=EF=BC=8C=E6=94=B9=E5=88=B0?= =?UTF-8?q?EvalStackObfus=E4=B9=8B=E5=89=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EvalStackObfus/EvalStackObfusPass.cs | 2 +- .../Obfuscators/MostAdvancedObfuscator.cs | 32 ++++++++++++++++--- Editor/ObfuscatorBuilder.cs | 8 ++--- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/Editor/ObfusPasses/EvalStackObfus/EvalStackObfusPass.cs b/Editor/ObfusPasses/EvalStackObfus/EvalStackObfusPass.cs index 4d102d0..8c6b506 100644 --- a/Editor/ObfusPasses/EvalStackObfus/EvalStackObfusPass.cs +++ b/Editor/ObfusPasses/EvalStackObfus/EvalStackObfusPass.cs @@ -72,7 +72,7 @@ namespace Obfuz.ObfusPasses.EvalStackObfus protected override void ObfuscateData(MethodDef method) { - Debug.Log($"Obfuscating method: {method.FullName} with EvalStackObfusPass"); + //Debug.Log($"Obfuscating method: {method.FullName} with EvalStackObfusPass"); IList instructions = method.Body.Instructions; var outputInstructions = new List(); var totalFinalInstructions = new List(); diff --git a/Editor/ObfusPasses/ExprObfus/Obfuscators/MostAdvancedObfuscator.cs b/Editor/ObfusPasses/ExprObfus/Obfuscators/MostAdvancedObfuscator.cs index abbb107..abf885e 100644 --- a/Editor/ObfusPasses/ExprObfus/Obfuscators/MostAdvancedObfuscator.cs +++ b/Editor/ObfusPasses/ExprObfus/Obfuscators/MostAdvancedObfuscator.cs @@ -1,6 +1,7 @@ using dnlib.DotNet.Emit; using Obfuz.Emit; using System.Collections.Generic; +using System.Linq; namespace Obfuz.ObfusPasses.ExprObfus.Obfuscators { @@ -10,7 +11,11 @@ namespace Obfuz.ObfusPasses.ExprObfus.Obfuscators public override bool ObfuscateBasicUnaryOp(Instruction inst, EvalDataType op, EvalDataType ret, List outputInsts, ObfusMethodContext ctx) { - if (!GenerateIdentityTransformForArgument(inst, op, outputInsts, ctx)) + if (!base.ObfuscateBasicUnaryOp(inst, op, ret, outputInsts, ctx)) + { + return false; + } + if (outputInsts.Last().OpCode.Code != inst.OpCode.Code) { return false; } @@ -20,7 +25,11 @@ namespace Obfuz.ObfusPasses.ExprObfus.Obfuscators public override bool ObfuscateBasicBinOp(Instruction inst, EvalDataType op1, EvalDataType op2, EvalDataType ret, List outputInsts, ObfusMethodContext ctx) { - if (!GenerateIdentityTransformForArgument(inst, op2, outputInsts, ctx)) + if (!base.ObfuscateBasicBinOp(inst, op1, op2, ret, outputInsts, ctx)) + { + return false; + } + if (outputInsts.Last().OpCode.Code != inst.OpCode.Code) { return false; } @@ -30,7 +39,12 @@ namespace Obfuz.ObfusPasses.ExprObfus.Obfuscators public override bool ObfuscateUnaryBitwiseOp(Instruction inst, EvalDataType op, EvalDataType ret, List outputInsts, ObfusMethodContext ctx) { - if (!GenerateIdentityTransformForArgument(inst, op, outputInsts, ctx)) + if (!base.ObfuscateUnaryBitwiseOp(inst, op, ret, outputInsts, ctx)) + { + return false; + } + + if (outputInsts.Last().OpCode.Code != inst.OpCode.Code) { return false; } @@ -40,7 +54,11 @@ namespace Obfuz.ObfusPasses.ExprObfus.Obfuscators public override bool ObfuscateBinBitwiseOp(Instruction inst, EvalDataType op1, EvalDataType op2, EvalDataType ret, List outputInsts, ObfusMethodContext ctx) { - if (!GenerateIdentityTransformForArgument(inst, op2, outputInsts, ctx)) + if (!base.ObfuscateBinBitwiseOp(inst, op1, op2, ret, outputInsts, ctx)) + { + return false; + } + if (outputInsts.Last().OpCode.Code != inst.OpCode.Code) { return false; } @@ -50,7 +68,11 @@ namespace Obfuz.ObfusPasses.ExprObfus.Obfuscators public override bool ObfuscateBitShiftOp(Instruction inst, EvalDataType op1, EvalDataType op2, EvalDataType ret, List outputInsts, ObfusMethodContext ctx) { - if (!GenerateIdentityTransformForArgument(inst, op2, outputInsts, ctx)) + if (!base.ObfuscateBitShiftOp(inst, op1, op2, ret,outputInsts, ctx)) + { + return false; + } + if (outputInsts.Last().OpCode.Code != inst.OpCode.Code) { return false; } diff --git a/Editor/ObfuscatorBuilder.cs b/Editor/ObfuscatorBuilder.cs index 6da2038..fea5fef 100644 --- a/Editor/ObfuscatorBuilder.cs +++ b/Editor/ObfuscatorBuilder.cs @@ -170,6 +170,10 @@ namespace Obfuz { builder.AddPass(new ConstEncryptPass(settings.constEncryptSettings.ToFacade())); } + if (obfuscationPasses.HasFlag(ObfuscationPassType.ExprObfus)) + { + builder.AddPass(new ExprObfusPass(settings.exprObfusSettings.ToFacade())); + } if (obfuscationPasses.HasFlag(ObfuscationPassType.EvalStackObfus)) { builder.AddPass(new EvalStackObfusPass(settings.evalStackObfusSettings.ToFacade())); @@ -178,10 +182,6 @@ namespace Obfuz { builder.AddPass(new FieldEncryptPass(settings.fieldEncryptSettings.ToFacade())); } - if (obfuscationPasses.HasFlag(ObfuscationPassType.ExprObfus)) - { - builder.AddPass(new ExprObfusPass(settings.exprObfusSettings.ToFacade())); - } if (obfuscationPasses.HasFlag(ObfuscationPassType.CallObfus)) { builder.AddPass(new CallObfusPass(settings.callObfusSettings.ToFacade()));