gpt4 book ai didi

c# - 使用 .NET 反射自克隆可执行文件

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:44 24 4
gpt4 key购买 nike

我正在尝试使用 C# .NET 进行某种实验。我想创建一个克隆自身的程序(最终作为一个变异的克隆)。最后,我想让它生出一个“儿子”,还要有克隆自己的能力等等!

我想做这样的事情:

static void Main(string[] args)
{

string Son_Name = "son";
string Full_Son_Name = Son_Name + ".exe";
AssemblyName aName = new AssemblyName(Son_Name);
AssemblyBuilder aBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(aName, AssemblyBuilderAccess.Save);
ModuleBuilder mBuilder = aBuilder.DefineDynamicModule("Module", Full_Son_Name, false);
TypeBuilder tBuilder = mBuilder.DefineType("Program", TypeAttributes.Public);
MethodBuilder methodBuilder = tBuilder.DefineMethod("Main", MethodAttributes.Public | MethodAttributes.Static);
ILGenerator ilGenerator = methodBuilder.GetILGenerator();
MethodInfo m_ReadLine = typeof(System.Console).GetMethod("ReadLine", BindingFlags.Public | BindingFlags.Static);

Clone_My_Main_method(methodbuilder);//I need something to do THAT
aBuilder.SetEntryPoint(methodBuilder);
tBuilder.CreateType();
aBuilder.Save(Full_Son_Name);

因此,使用这段代码,我成功地在运行时制作了一个动态程序集,并将其保存为“son.exe”或执行它。现在我需要“构建”那个程序集,读取我的主程序集并将其复制到子程序集中。

我开始使用 ilgenerator.emit,但我正在进入一个无限的“编程”循环。我想制作 parent.exe,用 ildasm 反汇编它,翻译 ilgenerator.emit 操作码中的所有 CIL 代码,然后用 ilgenerator.emit 发出所有这些代码。简单地说,我认为这是一项乏味的工作,不能……工作。

事实上,我想在运行时读取我自己的 main 方法,然后用一些技巧将它放到动态程序集中。

有人知道吗?谢谢:)

最佳答案

你应该使用 Mono Cecil ,它可以读取和修改 .Net 程序集。

关于c# - 使用 .NET 反射自克隆可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7626825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com