首页 文章
  • 0 votes
     answers
     views

    机器人控制系统的自修改代码的替代方法是什么?

    在机器人控制系统中,生成计划 . 该计划包含诸如“gripobject()”,“walkslow()”,“standup()”之类的动作 . 在第一个原型中,使用了Python语言,它支持非常自修改的代码 . 使用“inspect”库可以显示源代码,也可以在现有的源文件中注入新命令 . 这意味着,如果机器人的计划发生变化,软件会重写其程序的一部分 . txt=“print('hello world...
  • 10 votes
     answers
     views

    Java中的自修改代码[关闭]

    你有没有在Java中创建或遇到self modifying code?如果是,那么请发布链接或只是发布代码 .
  • 30 votes
     answers
     views

    自修改代码

    我最近在考虑编写 self-modifying programs ,我认为它可能是强大而有趣的...所以我目前正在寻找一种允许轻松修改程序自己的代码的语言 . 我读到了 C# (作为一种方式)以及在运行时编译和执行代码的能力,但这太伤人了...... 我也在考虑 assembly ...更改运行代码更容易,但它不是很强大(非常原始)...... 你能给我一个强大的语言 - 或者一...
  • 5 votes
     answers
     views

    自修改代码[C]

    我正在阅读关于自修改代码的密码破解者期刊文章,并且有以下代码片段: void Demo(int (*_printf) (const char *,...)) { _printf("Hello, OSIX!n"); return; } int main(int argc, char* argv[]) { char buff[1000]; ...
  • 25 votes
     answers
     views

    同构和“不受限制”的自我修改代码lisp是否真的可以自我修改?

    我将继续承认我对Lisp的了解非常少 . 但是我对这门语言非常感兴趣,并计划在不久的将来开始认真学习它 . 我对这些问题的理解无疑是有缺陷的,所以如果我说出任何有些错误的东西,请评论并纠正我而不是贬低 . Truly Homoiconic and Self-modifiable languages 我正在寻找支持Homoiconicity(代码与数据具有相同表示)和 unrestricted 自修...
  • 0 votes
     answers
     views

    使自修改代码更容易

    我做了一个自修改代码,运行在python 2.7上,代码有点大,我想知道是否有办法使代码更容易,我已经考虑过了,我没有找到任何答案 . ..如果有人能帮助我,我真的很感激,但无论如何,这是代码 import sys x = ['num = 0\n', 'from threading import *\n', 'import sys\n', 'def change(b, line=1):\n', ...
  • 2 votes
     answers
     views

    调试器和cpu仿真器不检测自修改代码

    Problem: 我制作了一个自我修改其字节之一的elf可执行文件 . 它只是将1更改为1.当我正常运行可执行文件时,我可以看到更改是成功的,因为它完全按预期运行(更多的是进一步向下) . 调试时出现问题:调试器(使用radare2)在查看修改后的字节时返回错误的值 . Context: 我做了一个逆向工程挑战,受到Smallest elf的启发 . 你可以看到"source code&...
  • 10 votes
     answers
     views

    自修改代码始终是Linux上的分段错误

    我发现了一篇关于自修改代码的文章,并试图做一些例子,但我总是得到分段错误 . 就像我能理解的那样,内存权限存在违规行为 . 代码段是(r)ead / e(x)ecute,因此写入的尝试导致此错误 . 有没有办法通过在运行时或之前更改内存权限来测试程序?我正在使用linux,这个例子是用GAS汇编编写的 . .extern memcpy .section .data string: ...
  • 43 votes
     answers
     views

    如何在x86程序集中编写自修改代码

    我正在为最近一直在研究的业余爱好虚拟机编写JIT编译器 . 我知道有点汇编,(我主要是一个C程序员 . 我可以阅读大多数汇编参考我不理解的操作码,并编写一些简单的程序 . )但我很难理解这几个例子我在网上找到的自修改代码 . 这是一个这样的例子:http://asm.sourceforge.net/articles/smc.html 提供的示例程序在运行时进行了大约四种不同的修改,其中没有一个被清...
  • 23 votes
     answers
     views

    在程序集中编写JIT编译器

    我用C编写了一个虚拟机,它对非JIT VM有很好的性能,但我想学习一些新东西,并提高性能 . 我当前的实现只是使用一个开关从VM字节码转换为指令,并将其编译为跳转表 . 就像我说的那样,它的性能不错,但是我遇到了一个只能用JIT编译器克服的障碍 . 不久前我已经问了一个关于自我修改代码的类似问题,但我开始意识到我并没有问正确的问题 . 所以我的目标是为这个C虚拟机编写一个JIT编译器,我想在x86...
  • 25 votes
     answers
     views

    如何在C中编写自修改代码?

    我想编写一段不断变化的代码,即使变化微不足道 . 例如,可能是类似的东西 `` for i in 1 to 100, do begin x := 200 for j in 200 downto 1, do begin do something end end `` 假设我希望我的代码应该在第一次迭代之后将行 x := 200 更改为某个其他行 x :...
  • 2 votes
     answers
     views

    是否有用于生成自修改代码的简单处理器上的高级语言的现代编译器?

    回到缓存和分支预测之前的日子,如果不鼓励为某些类型的优化制作自修改代码,则相对常见 . 这可能是在8位到32位之前的汇编程序中使用汇编编写的游戏和演示中最常见的,例如Amiga . 我不确定那些日子里是否有任何编译器发出自修改汇编程序或机器代码 . 我想知道的是,是否有任何当前/现代编译器 . 显然,在具有缓存的强大处理器上它将是无用的或太难 . 但是如嵌入式系统中使用的那么多简单处理器呢?对于任...
  • 21 votes
     answers
     views

    使用自修改代码观察在x86上获取过时的指令

    我被告知并且从英特尔的手册中读到可以将指令写入内存,但是指令预取队列已经获取了陈旧的指令并将执行那些旧的指令 . 我没有成功观察到这种行为 . 我的方法如下 . 英特尔软件开发手册从第11.6节开始说明 写入当前在处理器中高速缓存的代码段中的存储器位置会导致关联的高速缓存行(或多个行)无效 . 此检查基于指令的物理地址 . 此外,P6系列和奔腾处理器检查对代码段的写入是否可以修改已经预取执行的指...
  • 13 votes
     answers
     views

    如何编写在现代x64处理器上高效运行的自修改代码?

    我正在尝试加速可变位宽整数压缩方案,我有兴趣在运行中生成和执行汇编代码 . 目前,大量时间花在错误预测的间接分支上,并且基于所发现的一系列位宽生成代码似乎是避免这种惩罚的唯一方法 . 一般技术称为"subroutine threading"(或"call threading",尽管这也有其他定义) . 目标是利用处理器有效的呼叫/返回预测,以避免停顿 . 这...
  • 1 votes
     answers
     views

    自修改代码和反射有什么区别?

    Self-modifying code是"alters its own instructions while it is executing"的代码 . 这通常不在汇编语言或病毒之外完成 . Reflection只是程序动态访问其自己的命名空间的能力,以便动态地引用函数和类和变量 . 根据这个article,反思不仅仅是内省(一个程序_1181355的自我修改能力) . 那么,...
  • 0 votes
     answers
     views

    语言广泛支持自修改代码?

    哪种编程语言为自修改代码提供了最佳支持?特别是,由于程序需要广泛使用自修改代码,我期待能够在不再需要代码的某些部分后从内存中删除,从而释放内存 . 此外,如果能够使用某种序列号识别和索引例程(过程,函数等),这将是一个加号,以便它们可以在运行时容易地在内存中管理(删除,克隆等) .
  • 1 votes
     answers
     views

    Ruby中的自修改代码

    我担心在Ruby中编写自修改代码 . 通过自我修改,我的意思是能够编写将代码块作为输入值的函数,并基于此输出另一个代码块 . (我不是在询问基础知识,比如在运行时重新定义方法 . ) 我可能想要做的是,例如,有以下块, _x_ = lambda { |a, b, c, d| b + c } 我可以注意到参数 a 和 d 根本没有在身体中使用,所以我想要一个函数,例如 . #strip 删除...
  • 9 votes
     answers
     views

    同质性水平[关闭]

    这是我previous question的后续行动 . 我不相信Lisp代码与Von Neumann架构上的机器代码一样是Homoiconic . 对我来说似乎很明显,在这两种情况下代码都表示为数据,但似乎很明显,你可以在机器代码中比在Lisp中更自由地利用这个属性 . 在使用机器代码时,自我修改代码非常容易,它总是偶然发生,通常是偶然的,并且(根据我的经验)是搞笑的结果 . 在编写一个简单的“打...
  • 3 votes
     answers
     views

    自修改代码中的可能指令缓存同步问题?

    许多相关问题<How is x86 instruction cache synchronized?>提及x86应该在自修改代码中正确处理i-cache同步 . 我编写了下面这段代码,它可以在与执行交错的不同线程上打开和关闭函数调用 . 我使用比较和交换操作作为额外的防护,以便修改是原子的 . 但我得到间歇性崩溃(SIGSEGV,SIGILL)并分析核心转储使我怀疑处理器是否正在尝试执行...
  • 2 votes
     answers
     views

    x86_64 - 自我修改代码性能

    我正在阅读英特尔架构文档,第3卷,第8.1.3节; 自修改代码将以比非自修改或普通代码更低的性能级别执行 . 性能恶化的程度取决于修改的频率和代码的特定特征 . 所以,如果我遵守规则: (*选项1 *)将修改后的代码(作为数据)存储到代码段中;跳转到新代码或中间位置;执行新代码; (选项2)将修改后的代码(作为数据)存储到代码段中;执行序列化指令; (例如,CPUID指令)执行新代码; 并...
  • 3 votes
     answers
     views

    自修改代码算法

    某些程序在运行时生成可执行代码 . 即计算机病毒,包装二进制 . 这使得静态分析非常困难 . 除了打包算法,是否有任何通用的自修改代码生成算法?还是编译支持?我在哪里可以获得相关文件或纸张?自修改代码和多态代码有什么区别? 我好奇 . 先感谢您 .
  • 0 votes
     answers
     views

    在程序集中自修改代码

    如何在mips 32程序集中编写自修改代码,使函数调用另一个函数(不添加函数调用)?我必须在运行时修改函数的代码,以便调用其他函数 .

热门问题