首页 文章

自修改代码和反射有什么区别?

提问于
浏览
1

Self-modifying code是"alters its own instructions while it is executing"的代码 . 这通常不在汇编语言或病毒之外完成 .

Reflection只是程序动态访问其自己的命名空间的能力,以便动态地引用函数和类和变量 . 根据这个article,反思不仅仅是内省(一个程序_1181355的自我修改能力) .

那么,反射是指一种温和形式的自修改代码,其中只有变量/类/函数名称在指令中被“修改”?也就是说,与在自修改代码中修改整个指令本身的性质相比,反射是一种更温和,更少“戏剧性”的修改形式 .

我有这个区别吗?

1 回答

  • 2

    不,一个是关于在执行期间更改代码 . 另一个是关于在执行期间读取代码的结构和元数据(内省) .

    它们可以互相排斥 . 您不需要知道代码是如何修改它的(如果操作系统允许的话) .

    通常,您可以使用反射以非“正常用例”方式执行代码,但它仍然是相同的代码 . 将此与修改代码进行对比 .

    目标完全不一致 .

    然而,我想它们以一种小方式相交的一个例子是考虑一个函数(F),它调用另外两个函数 - A然后是B.你可以反映这些知识,然后调用B然后调用A(从而修改(F)的用例)) . 正如你所看到的那样,它不是修改代码,而只是修改预期的用例 .

相关问题