在汇编语言中,如何将伪操作用于指令?据我所知,汇编文件使用汇编程序转换为机器代码。有没有办法使用伪操作直接从汇编文件本身发送操作码?
例如,如果有一些指令,比如ADD,其操作码为0101.有没有办法利用我们对ADD的操作码的知识为0101,只使用ADD两个寄存器0101来自某个内存位置而没有明确使用ADD指令?我正在寻找一个黑客,并想知道这一点。
答案 0 :(得分:1)
我所知道的任何机器语言都不支持使用间接操作码(从指令中指定的数据位置检索指令字节)。但是你有以下几种可能性:
答案 1 :(得分:0)
您还没有指定您正在使用的汇编程序,但GAS例如使用.byte
伪操作来简单地发出一个字节。请注意,0101是二进制表示法,可能不适合汇编程序。您应该以十六进制指定操作码。
答案 2 :(得分:0)
是的,这是可能的,实际上是缓冲区溢出或堆栈溢出漏洞如何工作来攻击系统安全性。如果二进制值存储到可执行存储器中,它们将作为机器语言指令加载和执行,并且0101将添加(在您的示例中)。