问题标签 [self-modifying]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
481 浏览

python - Python - 代码片段不适用于 Python 2.5.6,使用 IDLE

我正在为一个大学项目使用一段自修改代码。

这里是:

不幸的是,它不起作用。返回错误:

我会感谢任何解决方案。

0 投票
14 回答
19483 浏览

programming-languages - 用于自修改代码的编程语言?

  • 我最近在想写自修改程序,我觉得它可能是强大而有趣的。所以我目前正在寻找一种可以轻松修改程序自己代码的语言。
  • 我阅读了C#(作为一种解决方法)以及在运行时编译和执行代码的能力,但这太痛苦了。
  • 我也在考虑组装。更改正在运行的代码更容易,但它不是很强大(非常原始)。

您能否推荐一种支持在运行时修改代码的强大语言或功能?

例子

这就是我在运行时修改代码的意思:

并且可能正在建立一个指令列表:

0 投票
2 回答
219 浏览

c - 读/写自堆

可以读取自己的堆空间吗?软件可以在内存中自行修改吗?

我写了一些代码来显示主题,

我在内存中阅读自己的代码吗?如何(如果可能)编写它并在运行时更改指令?

0 投票
3 回答
407 浏览

c++ - 复制和调用功能

我想复制并调用一个函数,但是下面的代码在调用缓冲区时会出现段错误。我必须改变什么?(Linux, x86)

编辑:工作解决方案:

0 投票
3 回答
368 浏览

ruby - 一种实现`String#split!`的方法

有时我需要这样的方法,它可以改变自己对象的类。有String#delete!, #downcase!, #encode!, #gsub!, #strip!,#slice!等。它们都在尝试更改字符串,但结果类仍然是String. 我想要一个方法,它可以转换StringArray. 一些方法来做到这一点:

可能吗?也许是一些很酷的日本功夫或丑陋的自行车——我希望看到任何解决方案。

0 投票
1 回答
4220 浏览

javascript - 自修改 html-JavaScript 文件

我想要一个带有 JavaScript 的 html 文件,它(文件)能够修改其上下文。更详细地说,我是这样想的。我有一个 html 文件,我用浏览器打开它。我有一个文本区域,在那里我输入我的文本并按下提交按钮。结果,表单的上下文保存在 html 文件中的某个位置。最简单和稳定的方法是什么?

0 投票
9 回答
11926 浏览

c - C程序可以修改其可执行文件吗?

我手头的时间有点多,开始想知道我是否可以编写一个自修改程序。为此,我用 C 语言编写了一个“Hello World”,然后使用十六进制编辑器在编译的可执行文件中查找“Hello World”字符串的位置。是否可以修改此程序以打开自身并覆盖“Hello World”字符串?

这不起作用,我假设有一些东西阻止它自行打开,因为我可以将它分成两个单独的程序(一个“Hello World”和一些修改它的东西)并且它工作正常。

编辑:我的理解是,当程序运行时,它完全加载到 ram 中。因此,无论出于何种目的和目的,硬盘驱动器上的可执行文件都是一个副本。为什么修改自己会成为问题?

有解决方法吗?

谢谢

0 投票
3 回答
4107 浏览

linux - Linux 上的自我修改代码总是出现分段错误

我找到了一篇关于自我修改代码的文章并尝试做一些示例,但我总是遇到分段错误。据我所知,内存权限存在违规行为。代码段是 (r)ead/e(x)ecute,因此尝试写入会导致此错误。有没有办法通过在运行时或之前更改内存权限来测试程序?我正在使用 linux,示例是用 GAS 程序集编写的。

所以在osgx建议的修改之后,这里是一个工作代码。(实际上,如果你组装&链接&运行它会崩溃,但如果你使用gdb观看它确实会修改它的代码!)

0 投票
1 回答
2151 浏览

android - Android上的原生自修改代码

我正在尝试在 Android 上制作一些自修改本机代码并在模拟器中运行它。我的示例基于来自 android-ndk 的 HelloJNI 示例。它看起来像这样:

问题是这段代码正在崩溃。怎么了?

0 投票
4 回答
457 浏览

c - 跟踪挂钩的自修改代码?

我正在寻找将跟踪/日志记录挂钩插入到一些对性能非常敏感的驱动程序代码中开销最小的方法。这个日志记录的东西必须总是编译进去,但大多数时候什么都不做(但什么也不做非常快)。

没有什么比拥有一个全局开/关词更简单的了,做一个if(enabled){log()}. 但是,如果可能的话,我什至想避免每次我碰到一个钩子时加载那个词的成本。我突然想到,我可能会为此使用自修改代码——即,在我调用跟踪函数的任何地方,当我想禁用钩子时,我用 NOP 覆盖跳转,并在我想要时替换跳转启用它们。

一个快速的谷歌没有找到任何关于这方面的现有技术——有人做过吗?是否可行,是否有我没有预见到的主要绊脚石?

(Linux,x86_64)