微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用静态重新编译仿真的自修改代码有什么问题?

如何解决使用静态重新编译仿真的自修改代码有什么问题?

我正在寻找编写模拟器及其技术。但是下面一段话让我想知道,如果你写一个修改代码来模拟静态重新编译,我想我无法弄清楚会出现哪种场景。

在这种技术中,您将使用模拟代码编写的程序转换为计算机的汇编代码。结果将是一个普通的可执行文件,您无需任何特殊工具即可在您的计算机上运行该文件。虽然静态重新编译听起来很不错,但它并不总是可行的。例如,您不能静态地重新编译自修改代码,因为如果不运行它,就无法知道它会变成什么。为了避免这种情况,您可以尝试将静态重新编译器与解释器或动态重新编译器结合使用。

这是我正在阅读的内容,这一行让我感到疑惑:

例如,您不能静态地重新编译自修改代码,因为如果不运行它就无法知道它会变成什么

一个很好的例子解释会很有启发性,谢谢。

编辑:顺便说一下,我知道自修改的含义,我只是想知道静态重新编译后会出现什么问题,哪里会出现问题,哪些东西会使我们的自修改代码损坏。

解决方法

自修改代码严重依赖原始CPU的指令集编码。例如,它可以翻转特定内存位置中的一些位以将一条指令转换为另一条指令。对于静态重新编译,翻转相同的位会产生完全不同的效果,因为主机 CPU 的指令编码完全不同。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。