重构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; _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());

View File

@ -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)
{ {

View File

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

View File

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

View File

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

View File

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

View File

@ -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)

View File

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