支持 MostAdvancedObfuscator
parent
f247719bc1
commit
8314ed4327
|
@ -155,7 +155,7 @@ namespace Obfuz.ObfusPasses.ExprObfus.Obfuscators
|
|||
//}
|
||||
|
||||
|
||||
private bool GenerateIdentityTransformForArgument(Instruction inst, EvalDataType op, List<Instruction> outputInsts, ObfusMethodContext ctx)
|
||||
protected bool GenerateIdentityTransformForArgument(Instruction inst, EvalDataType op, List<Instruction> outputInsts, ObfusMethodContext ctx)
|
||||
{
|
||||
IRandom random = ctx.localRandom;
|
||||
ModuleConstFieldAllocator constFieldAllocator = ctx.constFieldAllocator;
|
||||
|
|
|
@ -1,8 +1,61 @@
|
|||
using Obfuz.Emit;
|
||||
using dnlib.DotNet.Emit;
|
||||
using Obfuz.Emit;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Obfuz.ObfusPasses.ExprObfus.Obfuscators
|
||||
{
|
||||
class MostAdvancedObfuscator : AdvancedObfuscator
|
||||
{
|
||||
private readonly BasicObfuscator _basicObfuscator = new BasicObfuscator();
|
||||
|
||||
public override bool ObfuscateBasicUnaryOp(Instruction inst, EvalDataType op, EvalDataType ret, List<Instruction> outputInsts, ObfusMethodContext ctx)
|
||||
{
|
||||
if (!GenerateIdentityTransformForArgument(inst, op, outputInsts, ctx))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
outputInsts.RemoveAt(outputInsts.Count - 1);
|
||||
return _basicObfuscator.ObfuscateBasicUnaryOp(inst, op, ret, outputInsts, ctx);
|
||||
}
|
||||
|
||||
public override bool ObfuscateBasicBinOp(Instruction inst, EvalDataType op1, EvalDataType op2, EvalDataType ret, List<Instruction> outputInsts, ObfusMethodContext ctx)
|
||||
{
|
||||
if (!GenerateIdentityTransformForArgument(inst, op2, outputInsts, ctx))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
outputInsts.RemoveAt(outputInsts.Count - 1);
|
||||
return _basicObfuscator.ObfuscateBasicBinOp(inst, op1, op2, ret, outputInsts, ctx);
|
||||
}
|
||||
|
||||
public override bool ObfuscateUnaryBitwiseOp(Instruction inst, EvalDataType op, EvalDataType ret, List<Instruction> outputInsts, ObfusMethodContext ctx)
|
||||
{
|
||||
if (!GenerateIdentityTransformForArgument(inst, op, outputInsts, ctx))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
outputInsts.RemoveAt(outputInsts.Count - 1);
|
||||
return _basicObfuscator.ObfuscateUnaryBitwiseOp(inst, op, ret, outputInsts, ctx);
|
||||
}
|
||||
|
||||
public override bool ObfuscateBinBitwiseOp(Instruction inst, EvalDataType op1, EvalDataType op2, EvalDataType ret, List<Instruction> outputInsts, ObfusMethodContext ctx)
|
||||
{
|
||||
if (!GenerateIdentityTransformForArgument(inst, op2, outputInsts, ctx))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
outputInsts.RemoveAt(outputInsts.Count - 1);
|
||||
return _basicObfuscator.ObfuscateBinBitwiseOp(inst, op1, op2, ret, outputInsts, ctx);
|
||||
}
|
||||
|
||||
public override bool ObfuscateBitShiftOp(Instruction inst, EvalDataType op1, EvalDataType op2, EvalDataType ret, List<Instruction> outputInsts, ObfusMethodContext ctx)
|
||||
{
|
||||
if (!GenerateIdentityTransformForArgument(inst, op2, outputInsts, ctx))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
outputInsts.RemoveAt(outputInsts.Count - 1);
|
||||
return _basicObfuscator.ObfuscateBitShiftOp(inst, op1, op2, ret, outputInsts, ctx);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue