gpt4 book ai didi

executable - 有运行时代码修改的聪明案例吗?

转载 作者:行者123 更新时间:2023-12-03 04:36:20 25 4
gpt4 key购买 nike

您能想到运行时代码修改(程序在运行时修改自己的代码)的任何合法(智能)用途吗?

现代操作系统似乎不赞成执行此操作的程序,因为病毒已使用此技术来避免检测。

我能想到的就是某种运行时优化,通过在运行时知道一些在编译时无法知道的东西来删除或添加一些代码。

最佳答案

代码修改有很多有效的案例。在运行时生成代码可用于:

  • 某些虚拟机使用JIT 编译来提高性能。
  • 动态生成专用函数在计算机图形学中早已很常见。参见例如Rob Pike、Bart Locanthi 和 John Reiser Hardware Software Tradeoffs for Bitmap Graphics on the Blit (1984)或者这个posting (2006)作者:Chris Lattner,介绍 Apple 在 OpenGL 堆栈中使用 LLVM 进行运行时代码专门化。
  • 在某些情况下,软件会采用一种称为“蹦床”的技术,该技术涉及在堆栈(或其他位置)上动态创建代码。例如 GCC 的 nested functionssignal mechanism一些Unice。

有时代码会在运行时转换为代码(这称为 dynamic binary translation ):

  • 模拟器,例如 Apple 的 Rosetta使用此技术可以加快仿真速度。另一个例子是 Transmeta 的 code morphing software .
  • 复杂的调试器和分析器,例如 ValgrindPin在执行代码时用它来检测代码。
  • 在对 x86 指令集进行扩展之前,VMWare 等虚拟化软件无法直接在虚拟机内运行特权 x86 代码。相反,它必须 translate any problematic instructions on the fly转换为更合适的自定义代码。

代码修改可用于解决指令集的限制:

  • 曾经有一段时间(我知道很久以前),计算机没有从子例程返回或间接寻址内存的指令。自修改代码是实现子例程、指针和数组的唯一方法。

更多代码修改案例:

  • 许多调试器会替换指令来实现断点
  • 一些动态链接器在运行时修改代码。 This article提供有关 Windows DLL 运行时重定位的一些背景知识,这实际上是一种代码修改形式。

关于executable - 有运行时代码修改的聪明案例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5535591/

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