重构ProxyCall

backup
walon 2025-04-29 10:04:44 +08:00
parent 3ad955712a
commit a48dad21bc
9 changed files with 43 additions and 14 deletions

View File

@ -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();
}
}

View File

@ -46,7 +46,7 @@ namespace Obfuz
_obfuscationAssemblyNames = options.obfuscationAssemblyNames;
_assemblyCache = new AssemblyCache(new PathAssemblyResolver(options.assemblySearchDirs.ToArray()));
_pipeline.AddPass(new DynamicProxyPass());
_pipeline.AddPass(new ProxyCallPass());
_pipeline.AddPass(new ExprObfuscationPass());
_pipeline.AddPass(new DataVirtualizationPass());
_pipeline.AddPass(new RenameSymbolPass());

View File

@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace Obfuz.DynamicProxy
{
public class ConfigDynamicProxyPolicy : DynamicProxyPolicyBase
public class ConfigProxyCallPolicy : ProxyCallPolicyBase
{
public override bool NeedDynamicProxyCallInMethod(MethodDef method)
{

View File

@ -6,12 +6,12 @@ using Obfuz.Emit;
namespace Obfuz.DynamicProxy
{
public class DefaultDynamicProxyObfuscator : DynamicProxyObfuscatorBase
public class DefaultProxyCallObfuscator : ProxyCallObfuscatorBase
{
private readonly IRandom _random;
private readonly ProxyCallAllocator _proxyCallAllocator;
public DefaultDynamicProxyObfuscator(IRandom random)
public DefaultProxyCallObfuscator(IRandom random)
{
_random = random;
_proxyCallAllocator = new ProxyCallAllocator(random);

View File

@ -8,7 +8,7 @@ using System.Threading.Tasks;
namespace Obfuz.DynamicProxy
{
public interface IDynamicProxyObfuscator
public interface IProxyCallObfuscator
{
void Obfuscate(MethodDef callingMethod, IMethod calledMethod, bool callVir, List<Instruction> obfuscatedInstructions);

View File

@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace Obfuz.DynamicProxy
{
public interface IDynamicProxyPolicy
public interface IProxyCallPolicy
{
bool NeedDynamicProxyCallInMethod(MethodDef method);

View File

@ -4,7 +4,7 @@ using System.Collections.Generic;
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 Done();

View File

@ -12,17 +12,17 @@ using UnityEngine.Assertions;
namespace Obfuz.DynamicProxy
{
public class DynamicProxyPass : MethodBodyObfuscationPassBase
public class ProxyCallPass : MethodBodyObfuscationPassBase
{
private readonly IRandom _random;
private readonly IDynamicProxyPolicy _dynamicProxyPolicy;
private readonly IDynamicProxyObfuscator _dynamicProxyObfuscator;
private readonly IProxyCallPolicy _dynamicProxyPolicy;
private readonly IProxyCallObfuscator _dynamicProxyObfuscator;
public DynamicProxyPass()
public ProxyCallPass()
{
_random = new RandomWithKey(new byte[] { 0x1, 0x2, 0x3, 0x4 }, 0x5);
_dynamicProxyPolicy = new ConfigDynamicProxyPolicy();
_dynamicProxyObfuscator = new DefaultDynamicProxyObfuscator(_random);
_dynamicProxyPolicy = new ConfigProxyCallPolicy();
_dynamicProxyObfuscator = new DefaultProxyCallObfuscator(_random);
}
public override void Stop(ObfuscatorContext ctx)

View File

@ -2,7 +2,7 @@
namespace Obfuz.DynamicProxy
{
public abstract class DynamicProxyPolicyBase : IDynamicProxyPolicy
public abstract class ProxyCallPolicyBase : IProxyCallPolicy
{
public abstract bool NeedDynamicProxyCallInMethod(MethodDef method);