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

c++ - C++ 自擦除代码

我想创建自擦除代码 - 擦除他人的功能。我试图这样做 - 但有时(大多数时候)我会运行它 - 它无法正常工作,因为它应该工作。我想做这样的事情:

我已经创建了函数来执行此操作,但它有点错误 - 它在找到 ret 操作码之前一直在处理所有内容,我知道 func 开始地址是 (DWORD)func,但是我如何找到函数地址的结尾?我在网上看到过类似的例子:

但这对我不起作用 - 我使用的是 VS 2013。这是我的代码:

作为 dwLen 我传递在其他函数中计算的长度 - 从开始到下一个 ret 语句。作为删除功能,我的意思是用 NOP 或垃圾填充它的主体 - 我想“擦除”功能,它只会在程序启动时使用一次,我以后不需要它,我只是不想让任何人转储我的应用程序并反转它等。

0 投票
0 回答
242 浏览

c - 自修改代码中的段错误

这与自修改代码中可能的指令缓存同步问题有关?我曾经问过一段时间。尽管公认的解决方案解决了相关问题,但我遇到了一种新的间歇性故障模式,在该模式下,CPU 在重新打开功能后尝试跳转到垃圾地址。但是事后的反汇编(使用核心转储)在调用指令中显示了正确的地址。

下面是一些 gdb 分析。

这里要注意的有趣的事情是,虽然正确的地址是 0x4010d0,但垃圾地址在失败时始终是0x14010d0。这让我觉得是调用指令以某种方式失败了——尽管指令指针显示为指向回溯中的下一条指令。(这可能是 gdb 的正确行为。我不太确定)。

因此,如果是这种情况,显然 CPU 已尝试调用e8 cf e2 f6 00而不是e8 cf e2 f6 ff。最初在呼叫站点从 0x0000000000492dfc 开始的 5 字节序列是 0x0F1F440000 的 5 字节 NOP(根据顶部链接的问题中给出的建议)。

有什么想法吗?如果需要更多上下文,请告诉我。顺便说一句,我使用的是 Intel(R) Xeon(R) CPU E5-2670,但我尝试过的其他几台机器的行为似乎是一致的。

编辑:代码已使用 -O2 优化级别的以下附加选项进行编译。

-fno-optimize-sibling-calls-finstrument-functions

0 投票
1 回答
331 浏览

c++ - 修改STL c++中的vector类,可以吗?

我想修改向量类的成员函数。这可能吗?例如,我希望能够删除值,而不是向量的整数。

0 投票
1 回答
1950 浏览

c++11 - C ++:在while循环中更新函数内部的变量值

我不是 C++ 专家,我正在编写一个程序来读取 html 文件的单行上的多个 URL,所以我编写了以下代码:

我的问题是 found 没有更新以在while条件下使用。正如我所见,除非另一个 std::string 类(对于字符串,str.erase() 更新它的值,但 (str.at() = '') 没有更新,否则不会更新 std::string 类),如果我想在每次循环开始时更新“找到”,并且对于条件,我可以在这里做什么。

我想做的是:

  • urldown检查给定字符串是否存在重合表达式。

  • 设置它的第一个和最后一个字符。

  • 在找到 url 之后的循环中更新 'pos',然后寻找下一个。

我已经查看了 cplusplus.com 和 cppreference.com 的所有内容,但没有找到对我有帮助的东西。

我考虑过 std::list::remove 在每个数字从 0 到 9 的循环上,然后给它一个新值,但我不知道它是否是最佳选择。

0 投票
1 回答
81 浏览

python - 修改循环内for循环的迭代列表

for 循环遍历一个长列表。我试图加速修改列表的迭代(没有成功)。编码:

第5 行的目标是避免不必要的计算。

第 14-17 行中,我进行了修改(按照 Eratosthenes 的筛选,我将素数的倍数的值更改为 False)通过这种方式避免通过第 5 行进行更多计算。

概括:

  1. 是否可以从循环本身修改循环迭代列表?
  2. 如果答案是肯定的,为什么我的代码不好?
0 投票
2 回答
86 浏览

php - 用php代码修改文本文件

我有一个格式错误的 JSON 文件(doc1.json):

我必须改变它:

我可以在 PHP 文件中执行此操作吗?

0 投票
2 回答
4541 浏览

javascript - 编辑、保存、自修改HTML文档;格式生成的 HTML、JavaScript

动机:https ://stackoverflow.com/questions/28120689/create-self-modifying-html-page-on-box

Bug: 字符串转义、格式化htmljs生成初始编辑、保存htmljs

例如,

a) 如果在本地浏览器打开“saveFile.html”;

b) 输入“abc” textarea

c) 点击save file按钮;

d) 点击对话框SaveSave File

e)file-*[date according to universal time].html保存到磁盘;

f)file-*[date according to universal time].html在浏览器中打开;

g) 输入“def” textarea

h) 重复 d)、e)、f);

i) 错误:第二个结果file-*[date according to universal time].html确实显示textarea包含“abc def”文本内容; button 显示在html

在第26行生成,“saveFile.html”


“保存文件.html”v 1.0.0

html, js

0 投票
1 回答
827 浏览

php - 请帮帮我:修改 iframe 内容

我想修改这个源的 iframe http://www.mtel.ba/imenik/index.php

我想隐藏并从列表中选择一个选定的默认值。

我想为一个城市制作电话簿。是否可以?如何?我尝试使用 jquery 和文件获取内容但是....谢谢

0 投票
0 回答
81 浏览

operating-system - 操作系统,可从内部修改

是否有任何最小的开源操作系统可以在运行时从内部进行修改?出于教育目的。我想要一个内置的所见即所得编辑器,带有一个reload modified system module按钮和一个选项,可以在启动时使用以前的故障安全配置运行。

0 投票
1 回答
783 浏览

android - ART中的Android自修改代码

我正在尝试使用 JNI 在我的 Android 应用程序中实现自修改代码。

我的应用程序的 MainActivity 类中有以下方法:

这是此方法的字节码:

这就是该方法在 classes.dex 文件中的表示方式:

13 00 2A 00 0F 00

methodToModify我的目标是从本机代码更改运行时方法的返回值。所以,这是实现自修改代码的 JNI 方法的算法:

  1. 读取进程内存(这里有更多关于了解 Linux /proc/id/maps的信息):

    FILE *fp; fp = fopen("/proc/self/maps", "r");

  2. 检测 .dex 文件(或 .oat 文件在 ART 的情况下)的开始和结束地址:

    while (fgets(line, 2048, fp) != NULL) { // search for 'dex' or 'oat' if (strstr(line, ".oat") != NULL || strstr(line, ".dex") != NULL) // get starting and ending addresses of the DEX file region

  3. methodToModify在 .dex 或 .oat 文件中查找字节。

  4. 使用mprotect函数设置写入文件的权限。

  5. 修改返回值方法。

我的问题是,这种方法在我的 Nexus 7 和 Android 4.2 上完美运行,但在 Nexus 5 和 Android 5.1 上不起作用。我可以用 Dalvik 实现自我修改代码,但我不能用 ART 做同样的事情。

那么,是否可以用 ART 实现自修改代码呢?