initial commit
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
using dnlib.DotNet;
|
||||
using dnlib.DotNet.Emit;
|
||||
using Obfuscator.Helper;
|
||||
|
||||
namespace Obfuscator.Obfuscator.Proxy;
|
||||
|
||||
internal class ProxyString
|
||||
{
|
||||
public static void Execute(ModuleDef module)
|
||||
{
|
||||
foreach (TypeDef type in module.GetTypes())
|
||||
{
|
||||
if (type.IsGlobalModuleType)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
foreach (MethodDef method in type.Methods)
|
||||
{
|
||||
if (!method.HasBody)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
foreach (Instruction instruction in method.Body.Instructions)
|
||||
{
|
||||
if (instruction.OpCode == OpCodes.Ldstr)
|
||||
{
|
||||
MethodImplAttributes implFlags = MethodImplAttributes.IL;
|
||||
MethodAttributes flags = MethodAttributes.Public | MethodAttributes.Static | MethodAttributes.HideBySig;
|
||||
MethodDefUser methodDefUser = new MethodDefUser(Methods.GenerateString(), MethodSig.CreateStatic(module.CorLibTypes.String), implFlags, flags);
|
||||
module.GlobalType.Methods.Add(methodDefUser);
|
||||
methodDefUser.Body = new CilBody();
|
||||
methodDefUser.Body.Variables.Add(new Local(module.CorLibTypes.String));
|
||||
methodDefUser.Body.Instructions.Add(Instruction.Create(OpCodes.Ldstr, instruction.Operand.ToString()));
|
||||
methodDefUser.Body.Instructions.Add(Instruction.Create(OpCodes.Ret));
|
||||
instruction.OpCode = OpCodes.Call;
|
||||
instruction.Operand = methodDefUser;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user