Assembly “是偶然的”;代码注入“;或者使用不可执行文件执行
作为一名自学成才的“程序员”,除了我的编译器将软件翻译成机器指令外,我对软件的内部工作原理不是很了解。当我开始熟悉汇编语言和机器指令时,我想到了以下问题: 是否可能有一个简单的数据文件,如文本文件或位图(或其他相关文件),其字节组合错误,导致计算机在读取时崩溃?由于一些文件有几十亿字节,我认为几个连续字节形成指令的可能性很大 显然,不会发生任何智能的情况,但可能某些字节组合会导致指令指针指向错误的方向,或者只是跳过读取文件的其余部分 也许操作系统开发人员和编译器开发人员已经在幕后处理了这个问题,但我们无法解释所有可能出现的错误,也许一些数据甚至可能通过这些意外事件Assembly “是偶然的”;代码注入“;或者使用不可执行文件执行,assembly,code-injection,machine-language,Assembly,Code Injection,Machine Language,作为一名自学成才的“程序员”,除了我的编译器将软件翻译成机器指令外,我对软件的内部工作原理不是很了解。当我开始熟悉汇编语言和机器指令时,我想到了以下问题: 是否可能有一个简单的数据文件,如文本文件或位图(或其他相关文件),其字节组合错误,导致计算机在读取时崩溃?由于一些文件有几十亿字节,我认为几个连续字节形成指令的可能性很大 显然,不会发生任何智能的情况,但可能某些字节组合会导致指令指针指向错误的方向,或者只是跳过读取文件的其余部分 也许操作系统开发人员和编译器开发人员已经在幕后处理了这个问题,
我想这可以归结为一个相同的概念,那就是一群猴子和打字机一起创作莎士比亚,只是机器指令比哈姆雷特要短得多。一些随机文件具有有效(或操作系统使用的任何可执行格式的对应头)的可能性很低,但肯定不是不可能。如果您最终执行这样一个文件,您将得到未定义的行为;i、 在现代操作系统上,代码和数据被加载到内存的不同部分,数据被设置为不可执行。部分原因是为了防止病毒代码。仅仅读取文件不会执行它。为此,您实际上需要请求操作系统执行它。你还需要获得文件的执行权限。关于猴子和剧作家需要了解的一点是,在宇宙普遍被理论化为存在的时代,猴子填补了宇宙普遍被理论化为占据的空间,猴子输入“驯服悍妇”的机会这是一个非常糟糕的赌注,即使一个人的赔率是一比一。很短的指令集是合理的,但是当你为一个可执行文件(尽管.COM文件是一个例外)添加所需的头时,你有更好的机会找到隐藏在宇宙某处的质子,而不是随机形成一个可执行文件。