C# 注入类并围绕字符串包装函数
我正在尝试制作一个模糊器,目前进展顺利。现在我正试图用C# 注入类并围绕字符串包装函数,c#,encryption,mono,mono.cecil,C#,Encryption,Mono,Mono.cecil,我正在尝试制作一个模糊器,目前进展顺利。现在我正试图用base64编码字符串,然后用rot13编码字符串,只是为了让它多一点不可读,并隐藏我的sooper sekret字符串 这是我在模糊器上编码字符串的方法: ILProcessor processor = method.Body.GetILProcessor(); foreach (Instruction instruction in processor.Body.Instructions) { if (instruction.OpC
base64
编码字符串,然后用rot13
编码字符串,只是为了让它多一点不可读,并隐藏我的sooper sekret字符串
这是我在模糊器上编码字符串的方法:
ILProcessor processor = method.Body.GetILProcessor();
foreach (Instruction instruction in processor.Body.Instructions)
{
if (instruction.OpCode == OpCodes.Ldstr)
{
instruction.Operand = Enc.to64(Enc.Rot((String)instruction.Operand, 0x0D)); //0x0D = 13
}
}
所以现在我需要做的是将我的Enc
类注入根命名空间,因为函数是静态的,所以我可以在不创建类实例的情况下使用它们。
然后我需要做的是将每个字符串包装在Enc
中的两个函数中,以便在实际使用程序时解码字符串,使
string lel = "x";
进入
这两件事我都不知道怎么做,所以我需要你的帮助
因此,为了重述一遍,我需要知道如何将一个类(带有静态函数)注入根命名空间,然后使用该类中的两个函数包装程序中的所有字符串,以便在反射时无法读取,但在使用时解码。1。将类注入用户的程序集中。 如果我理解正确,您在一个单独的程序集中有一个
Enc
类,并且您希望在模糊处理期间在用户的程序集中创建该类的副本。在这种情况下,您可以使用Mono.Cecil
实现创建类的副本。您只需打开两个程序集:
var assemble = AssemblyDefinition.ReadAssembly(...)
在程序集中查找所需的类:
assemble.MainModule.GetType(...)
new TypeDefinition(...)
并创建具有相同属性和用户程序集成员的新类:
assemble.MainModule.GetType(...)
new TypeDefinition(...)
此任务有第三方工具:。您可以使用其中之一,也可以基于它们编写自己的实现
2。将方法调用注入用户程序集。
Mono.Cecil
包含更改方法体的IL代码所需的所有内容。您将需要解析方法的现有IL代码以找到注入点。解析算法取决于您对转换代码的要求。您可以在中查看方法调用注入的示例。用C#编写代码。然后再看看这个IL。类似于ld,ld,call,call
而不是ld
的东西。