重构ProxyCall
parent
3ad955712a
commit
a48dad21bc
|
@ -0,0 +1,29 @@
|
||||||
|
using dnlib.DotNet;
|
||||||
|
using dnlib.DotNet.Emit;
|
||||||
|
using Obfuz;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class DynamicMemoryEncryptionPass : MethodBodyObfuscationPassBase
|
||||||
|
{
|
||||||
|
public override void Start(ObfuscatorContext ctx)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Stop(ObfuscatorContext ctx)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override bool NeedObfuscateMethod(MethodDef method)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override bool TryObfuscateInstruction(MethodDef callingMethod, Instruction inst, IList<Instruction> instructions, int instructionIndex, List<Instruction> outputInstructions, List<Instruction> totalFinalInstructions)
|
||||||
|
{
|
||||||
|
throw new System.NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
|
@ -46,7 +46,7 @@ namespace Obfuz
|
||||||
_obfuscationAssemblyNames = options.obfuscationAssemblyNames;
|
_obfuscationAssemblyNames = options.obfuscationAssemblyNames;
|
||||||
_assemblyCache = new AssemblyCache(new PathAssemblyResolver(options.assemblySearchDirs.ToArray()));
|
_assemblyCache = new AssemblyCache(new PathAssemblyResolver(options.assemblySearchDirs.ToArray()));
|
||||||
|
|
||||||
_pipeline.AddPass(new DynamicProxyPass());
|
_pipeline.AddPass(new ProxyCallPass());
|
||||||
_pipeline.AddPass(new ExprObfuscationPass());
|
_pipeline.AddPass(new ExprObfuscationPass());
|
||||||
_pipeline.AddPass(new DataVirtualizationPass());
|
_pipeline.AddPass(new DataVirtualizationPass());
|
||||||
_pipeline.AddPass(new RenameSymbolPass());
|
_pipeline.AddPass(new RenameSymbolPass());
|
||||||
|
|
|
@ -7,7 +7,7 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Obfuz.DynamicProxy
|
namespace Obfuz.DynamicProxy
|
||||||
{
|
{
|
||||||
public class ConfigDynamicProxyPolicy : DynamicProxyPolicyBase
|
public class ConfigProxyCallPolicy : ProxyCallPolicyBase
|
||||||
{
|
{
|
||||||
public override bool NeedDynamicProxyCallInMethod(MethodDef method)
|
public override bool NeedDynamicProxyCallInMethod(MethodDef method)
|
||||||
{
|
{
|
|
@ -6,12 +6,12 @@ using Obfuz.Emit;
|
||||||
|
|
||||||
namespace Obfuz.DynamicProxy
|
namespace Obfuz.DynamicProxy
|
||||||
{
|
{
|
||||||
public class DefaultDynamicProxyObfuscator : DynamicProxyObfuscatorBase
|
public class DefaultProxyCallObfuscator : ProxyCallObfuscatorBase
|
||||||
{
|
{
|
||||||
private readonly IRandom _random;
|
private readonly IRandom _random;
|
||||||
private readonly ProxyCallAllocator _proxyCallAllocator;
|
private readonly ProxyCallAllocator _proxyCallAllocator;
|
||||||
|
|
||||||
public DefaultDynamicProxyObfuscator(IRandom random)
|
public DefaultProxyCallObfuscator(IRandom random)
|
||||||
{
|
{
|
||||||
_random = random;
|
_random = random;
|
||||||
_proxyCallAllocator = new ProxyCallAllocator(random);
|
_proxyCallAllocator = new ProxyCallAllocator(random);
|
|
@ -8,7 +8,7 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Obfuz.DynamicProxy
|
namespace Obfuz.DynamicProxy
|
||||||
{
|
{
|
||||||
public interface IDynamicProxyObfuscator
|
public interface IProxyCallObfuscator
|
||||||
{
|
{
|
||||||
void Obfuscate(MethodDef callingMethod, IMethod calledMethod, bool callVir, List<Instruction> obfuscatedInstructions);
|
void Obfuscate(MethodDef callingMethod, IMethod calledMethod, bool callVir, List<Instruction> obfuscatedInstructions);
|
||||||
|
|
|
@ -7,7 +7,7 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Obfuz.DynamicProxy
|
namespace Obfuz.DynamicProxy
|
||||||
{
|
{
|
||||||
public interface IDynamicProxyPolicy
|
public interface IProxyCallPolicy
|
||||||
{
|
{
|
||||||
bool NeedDynamicProxyCallInMethod(MethodDef method);
|
bool NeedDynamicProxyCallInMethod(MethodDef method);
|
||||||
|
|
|
@ -4,7 +4,7 @@ using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Obfuz.DynamicProxy
|
namespace Obfuz.DynamicProxy
|
||||||
{
|
{
|
||||||
public abstract class DynamicProxyObfuscatorBase : IDynamicProxyObfuscator
|
public abstract class ProxyCallObfuscatorBase : IProxyCallObfuscator
|
||||||
{
|
{
|
||||||
public abstract void Obfuscate(MethodDef callingMethod, IMethod calledMethod, bool callVir, List<Instruction> obfuscatedInstructions);
|
public abstract void Obfuscate(MethodDef callingMethod, IMethod calledMethod, bool callVir, List<Instruction> obfuscatedInstructions);
|
||||||
public abstract void Done();
|
public abstract void Done();
|
|
@ -12,17 +12,17 @@ using UnityEngine.Assertions;
|
||||||
|
|
||||||
namespace Obfuz.DynamicProxy
|
namespace Obfuz.DynamicProxy
|
||||||
{
|
{
|
||||||
public class DynamicProxyPass : MethodBodyObfuscationPassBase
|
public class ProxyCallPass : MethodBodyObfuscationPassBase
|
||||||
{
|
{
|
||||||
private readonly IRandom _random;
|
private readonly IRandom _random;
|
||||||
private readonly IDynamicProxyPolicy _dynamicProxyPolicy;
|
private readonly IProxyCallPolicy _dynamicProxyPolicy;
|
||||||
private readonly IDynamicProxyObfuscator _dynamicProxyObfuscator;
|
private readonly IProxyCallObfuscator _dynamicProxyObfuscator;
|
||||||
|
|
||||||
public DynamicProxyPass()
|
public ProxyCallPass()
|
||||||
{
|
{
|
||||||
_random = new RandomWithKey(new byte[] { 0x1, 0x2, 0x3, 0x4 }, 0x5);
|
_random = new RandomWithKey(new byte[] { 0x1, 0x2, 0x3, 0x4 }, 0x5);
|
||||||
_dynamicProxyPolicy = new ConfigDynamicProxyPolicy();
|
_dynamicProxyPolicy = new ConfigProxyCallPolicy();
|
||||||
_dynamicProxyObfuscator = new DefaultDynamicProxyObfuscator(_random);
|
_dynamicProxyObfuscator = new DefaultProxyCallObfuscator(_random);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Stop(ObfuscatorContext ctx)
|
public override void Stop(ObfuscatorContext ctx)
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
namespace Obfuz.DynamicProxy
|
namespace Obfuz.DynamicProxy
|
||||||
{
|
{
|
||||||
public abstract class DynamicProxyPolicyBase : IDynamicProxyPolicy
|
public abstract class ProxyCallPolicyBase : IProxyCallPolicy
|
||||||
{
|
{
|
||||||
public abstract bool NeedDynamicProxyCallInMethod(MethodDef method);
|
public abstract bool NeedDynamicProxyCallInMethod(MethodDef method);
|
||||||
|
|
Loading…
Reference in New Issue