问题标签 [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.
c++ - C++ 自擦除代码
我想创建自擦除代码 - 擦除他人的功能。我试图这样做 - 但有时(大多数时候)我会运行它 - 它无法正常工作,因为它应该工作。我想做这样的事情:
我已经创建了函数来执行此操作,但它有点错误 - 它在找到 ret 操作码之前一直在处理所有内容,我知道 func 开始地址是 (DWORD)func,但是我如何找到函数地址的结尾?我在网上看到过类似的例子:
但这对我不起作用 - 我使用的是 VS 2013。这是我的代码:
作为 dwLen 我传递在其他函数中计算的长度 - 从开始到下一个 ret 语句。作为删除功能,我的意思是用 NOP 或垃圾填充它的主体 - 我想“擦除”功能,它只会在程序启动时使用一次,我以后不需要它,我只是不想让任何人转储我的应用程序并反转它等。
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
c++ - 修改STL c++中的vector类,可以吗?
我想修改向量类的成员函数。这可能吗?例如,我希望能够删除值,而不是向量的整数。
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 的循环上,然后给它一个新值,但我不知道它是否是最佳选择。
python - 修改循环内for循环的迭代列表
for 循环遍历一个长列表。我试图加速修改列表的迭代(没有成功)。编码:
第5 行的目标是避免不必要的计算。
在第 14-17 行中,我进行了修改(按照 Eratosthenes 的筛选,我将素数的倍数的值更改为 False)通过这种方式避免通过第 5 行进行更多计算。
概括:
- 是否可以从循环本身修改循环迭代列表?
- 如果答案是肯定的,为什么我的代码不好?
php - 用php代码修改文本文件
我有一个格式错误的 JSON 文件(doc1.json):
我必须改变它:
我可以在 PHP 文件中执行此操作吗?
javascript - 编辑、保存、自修改HTML文档;格式生成的 HTML、JavaScript
动机:https ://stackoverflow.com/questions/28120689/create-self-modifying-html-page-on-box
Bug: 字符串转义、格式化html
、js
生成初始编辑、保存html
、js
例如,
a) 如果在本地浏览器打开“saveFile.html”;
b) 输入“abc” textarea
;
c) 点击save file
按钮;
d) 点击对话框Save
;Save 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
php - 请帮帮我:修改 iframe 内容
我想修改这个源的 iframe http://www.mtel.ba/imenik/index.php
我想隐藏并从列表中选择一个选定的默认值。
我想为一个城市制作电话簿。是否可以?如何?我尝试使用 jquery 和文件获取内容但是....谢谢
operating-system - 操作系统,可从内部修改
是否有任何最小的开源操作系统可以在运行时从内部进行修改?出于教育目的。我想要一个内置的所见即所得编辑器,带有一个reload modified system module
按钮和一个选项,可以在启动时使用以前的故障安全配置运行。
android - ART中的Android自修改代码
我正在尝试使用 JNI 在我的 Android 应用程序中实现自修改代码。
我的应用程序的 MainActivity 类中有以下方法:
这是此方法的字节码:
这就是该方法在 classes.dex 文件中的表示方式:
13 00 2A 00 0F 00
methodToModify
我的目标是从本机代码更改运行时方法的返回值。所以,这是实现自修改代码的 JNI 方法的算法:
读取进程内存(这里有更多关于了解 Linux /proc/id/maps的信息):
FILE *fp; fp = fopen("/proc/self/maps", "r");
检测 .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
methodToModify
在 .dex 或 .oat 文件中查找字节。使用
mprotect
函数设置写入文件的权限。修改返回值方法。
我的问题是,这种方法在我的 Nexus 7 和 Android 4.2 上完美运行,但在 Nexus 5 和 Android 5.1 上不起作用。我可以用 Dalvik 实现自我修改代码,但我不能用 ART 做同样的事情。
那么,是否可以用 ART 实现自修改代码呢?