jas*_*son 7 x86 assembly virus
它们是一样的吗?
更长的版本:
假设我在汇编时在一台Windows机器上编写了一个小应用程序,它只需添加1 + 1并将其存储在寄存器中.那么,我在Linux机器上编写完全相同的代码.会有用吗?
我想是的,因为在硬件层面,它是同一台机器,所以'硬件的语言'(原谅不精确性)将是相同的.
所以我认为一个针对Windows的病毒,但用汇编编写的内容不会只是一个Windows病毒.
And*_*and 11
病毒肯定需要与操作系统交互,并使用其API.因此,它高度依赖于平台.
此外,可执行文件还有一个标头,这取决于目标操作系统.如果要在Windows中创建一个或多或少空的EXE文件,这将无法在Linux下运行(甚至不启动).
是的,不是.
添加1 + 1并将其存储在寄存器中的小片段将完全相同的机器代码 - 也就是说,无论操作系统是什么,处理器上运行的代码都是相同的.
但是,您需要使用与操作系统交互的其他位来包围该代码,以使您的程序有意义 - 例如2,eax如果您的代码没有输出到某个地方,您将永远不会知道您的代码实际上是否正确存储了.
有趣的是,像Wine这样的项目通过在Linux下提供程序在Windows下可以找到的相同API调用,以及提供适当的逻辑来允许Linux正确解码Windows可执行文件,从而实现跨平台的互操作性.因此,有了Wine支持,一些Windows病毒实际上可以在Windows下运行.这可能需要一些工作,但你可以实现它.
不,Wine不必重新编译Windows程序 - 事实上,它确实直接在处理器上运行存储在EXE中的机器代码.
在windows上用汇编语言编写的程序与linux不是二进制兼容的......你需要在linux上再次编译(汇编)它们,但请记住汇编程序之间存在差异......它们不同地处理例如声明代码,数据的部分,bss
windoes高管不会在linux上本地运行(你可以在wine中运行它们,但它们将被沙盒化)