【发布时间】:2020-03-23 22:48:48
【问题描述】:
你好,
我只是问在 C#.Net 中是否有办法在运行时修改程序集, 我的意思是说 如果我有此类
public static class TimesTracker
{
public static int Rest = 3;
}
现在,我需要在运行时将 Rest 更改为 2,但保留这些更改。
所以,下次我打开我的程序时,我会找到Rest=2。
我知道,我可以使用配置文件,数据库,...但我只是问这种可能性
背景
我知道在运行时替换方法实现,也知道在运行时使用 Roslyn 调用/编译字符串代码
【问题讨论】:
-
有了这个级别的信息,这很可能是一个 x/y 问题。为什么需要这样做?因为您可能需要重新考虑您想做什么。
-
@MichaelRandall 我认为 eziriz 软件,例如 IntelliLock 使用这种类型的修改来做一些事情我试图监控发生了什么,但我得到的只是程序集被改变了,我知道如何实现这不是一个复杂的话题:但是在我的实现中,我需要一个围绕主程序集的包装器,然后在执行时我将调用内部编译文件
exe from string {roslyn}来修改我需要的内容,然后用当前包含的程序集替换它,最后合并再次两个程序集[因为在运行时移动 exe 文件没有限制],但是这种行为使反编译器 -
@MichaelRandall 所以这与开发特洛伊木马的步骤相同,并使任何防病毒软件抱怨发生的事情,因为这可能会从远程执行代码,并且您知道大多数防病毒软件的黑名单中定义的此行为签名软件,这与 Rats 中使用的想法相同,例如 NjRat,... 所以我需要知道 .net 中是否有任何可能性来更改程序集中的值而无需所有那些漫长而危险的步骤?你说这是 x/y 问题?那么如何?
标签: c# .net .net-assembly