Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net net中的代码注入是什么(作为编程技巧)?_.net_Code Injection - Fatal编程技术网

.net net中的代码注入是什么(作为编程技巧)?

.net net中的代码注入是什么(作为编程技巧)?,.net,code-injection,.net,Code Injection,当然,在大多数常识中,“它是一种以其作者不希望的方式影响程序行为的方法”(wiki) 然后,所有使用反射和类型生成器的技术也可以用“代码注入”来命名,但没有人这样做 当我一直认为“代码注入”与“运行时”有关时:就像在另一个进程中启动线程以获取一些有趣的数据一样,我很惊讶Reflexil是如何理解这一点的:“在‘设计时间’将C#指令转换为IL,保存编辑过的程序集并用新的程序集替换旧的程序集”(我遗漏了10%) 现在我很感兴趣.NET中的哪些技术被命名为“代码注入”术语 顺便说一句,我很想知道:是否

当然,在大多数常识中,“它是一种以其作者不希望的方式影响程序行为的方法”(wiki)

然后,所有使用反射和类型生成器的技术也可以用“代码注入”来命名,但没有人这样做

当我一直认为“代码注入”与“运行时”有关时:就像在另一个进程中启动线程以获取一些有趣的数据一样,我很惊讶Reflexil是如何理解这一点的:“在‘设计时间’将C#指令转换为IL,保存编辑过的程序集并用新的程序集替换旧的程序集”(我遗漏了10%)

现在我很感兴趣.NET中的哪些技术被命名为“代码注入”术语


顺便说一句,我很想知道:是否可以在运行时用指向我自己方法的指针替换非常私有、多次嵌套的系统类的“虚拟方法表”中的“指向虚拟方法的指针”。从我的理解来看,纯代码注入。

面向方面编程(AOP)使用代码注入来拦截方法调用。

当我听到“代码注入”时,我倾向于假设他们正在谈论。Net中的一个很好的例子是框架。

在.Net中注入代码是相当困难的。主要是因为代码直到最后一刻才存在。在开始执行之前的几分之一秒,由JIT编译器生成

实际方法使用IL重写,例如在AOP中很常见。这在离线时发生,甚至在程序开始执行之前。这不再是真正的“注入”,而是物理地更改磁盘上的程序

有一种内联IL重写技术,它使用非托管探查器接口。很不切实际,一篇记录这种方法的杂志文章是。它已经很过时了,从那以后探查器API已经有了很大的变化。从来没有听说过使用这种工具