问题标签 [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 投票
15 回答
15813 浏览

executable - 自修改代码的用途是什么?

自我修改代码有什么实际用途吗?

我知道它们可用于构建蠕虫/病毒,但我想知道程序员可能不得不使用自我修改代码是否有充分的理由。

有任何想法吗?假设的情况也是受欢迎的。

0 投票
9 回答
16100 浏览

assembly - 什么是代码洞穴,是否有任何合法用途?

我在 StackOverflow 问题“ C# Theoretical: Write a JMP to a codecave in asm ”中第一次遇到这个词。我看到根据维基词典,代码洞穴是:

一个未使用的内存块,通常是软件破解者,可以用来注入自定义编程代码来修改程序的行为。

我找到正确的定义了吗?如果是这样,代码洞穴是否有任何合法用途?

0 投票
2 回答
938 浏览

assemblies - 是否可以编写一个动态生成新类并用新类修补自身的程序集?

是否可以编写一个动态生成/发出新类并修补自身以包含新类的程序集?

如何?

0 投票
7 回答
9679 浏览

java - Java中的自修改代码

您是否曾经在 Java中创建或遇到过自修改代码?如果是,请发布链接或简单地发布代码。

0 投票
8 回答
1087 浏览

language-agnostic - 是否有任何自我改进的编译器?

我不知道有任何自我改进的编译器,但我又不是一个编译器专家。

那里有任何自我改进的编译器吗?

请注意,我说的是改进自身的编译器,而不是改进其编译代码的编译器

任何指针表示赞赏!

旁注:如果你想知道我为什么要问这个帖子。即使我同意大多数论点,我也不太确定以下几点:

我们现在有无需人工输入即可改进代码的程序——它们被称为编译器。

...因此我的问题。

0 投票
7 回答
1585 浏览

reflection - 编译动态语言

我搜索存在编译器并支持自修改代码的编程语言。我听说 Lisp 支持这些功能,但我想知道是否有更多具有这些功能的 C/C++/D-Like 语言。

为了澄清我的意思:

我希望能够以某种方式在运行时访问程序代码并对其应用任何类型的更改,即删除命令、添加命令、更改它们。好像我有我的程序的 AstTree。当然,我不能在编译语言中拥有该树,因此必须以不同的方式完成。编译需要将自修改命令翻译成它们的二进制等效修改,以便它们可以在运行时与编译后的代码一起工作。

我不想依赖虚拟机,这就是我编译的意思:)

0 投票
3 回答
2239 浏览

c++ - 在其 exe 中修改字符串的程序

我正在寻找程序示例,该程序修改其 exe 中的字符串。

我在 Windows 下使用 C++、Visual Studio。

我在 Windows 中搜索了工作示例,但找不到任何工作代码。

我需要简单的代码,它将向用户询问字符串:

并且代码应该重写:

要对该键入的用户进行字符串化:

在 C++ 中,如何将字符串(从字符串 strTest = "")修改为字符串,即用户键入的内容?(例如到 strTest = "foo")?

0 投票
4 回答
3068 浏览

php - 自修改 PHP 脚本

我正在尝试修改类似于这个准系统示例的 PHP 脚本的一部分

我想修改 B 部分而不更改文件的其余部分,因为 A 和 B 是不应更改的脚本逻辑。

有人可以帮我吗?预先感谢您的帮助。

0 投票
3 回答
4076 浏览

c - 代码段的动态重定位

只是出于好奇,我想知道是否可以在程序执行期间重新定位一段代码。例如,我有一个函数,每次执行后都应该在内存中替换该函数。我们想到的一个想法是使用自修改代码来做到这一点。根据一些在线资源,可以在Linux上执行自修改代码,但我仍然不确定这种动态重定位是否可能。有没有人有这方面的经验?

0 投票
3 回答
1972 浏览

linux - mprotect 是否刷新 ARM Linux 上的指令缓存?

我正在 ARM Linux 上编写一个 JIT,它执行包含自修改代码的指令集。该指令集没有任何缓存刷新指令(在这方面类似于 x86)。

如果我将一些代码写入页面然后mprotect在该页面上调用,这足以使指令缓存无效吗?或者我是否还需要cacheflush在这些页面上使用系统调用?