-5

为什么要将 EAX、ESP 和指令 sub、push 和 pop 汇编成 ASCII 字符?

例如:

'%' 表示“和 EAX”

'-' 表示“子 EAX”

'P' 表示“推 EAX”

'X' 表示“流行 EAX”

'T' 表示“推 ESP”

'\' 表示“流行 ESP”

4

2 回答 2

1

如果我没看错问题:因为它们是操作码,恰好与 ASCII 表中的那些字符相同。

查看:http ://ref.x86asm.net/coder32.html 并转到 AND eAX,您会注意到在左侧的深灰色列中,它表示该助记符的操作码是 25(十六进制)。

如果您然后查看 ASCII 表(例如http://www.asciitable.com/),并查看 25 hex 是什么字符,它将是%.

关于为什么提出这个问题的进一步猜测:在某些情况下,可能需要能够提供可键入 ASCII 的程序。第一个可能类似于 EICAR 防病毒测试字符串:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

其中,如果输入记事本,保存为COM文件(如eicar.com),然后运行,它会打印EICAR-STANDARD-ANTIVIRUS-TEST-FILE!。这使得粘贴到程序、电子邮件等中变得相当简单,以确保防病毒软件正常工作。

另一个用途是为基于缓冲区溢出的攻击编写 shellcode,同样是为了便于键入和转义。如果您想了解更多详细信息,我会咨询http://projectshellcode.com/?q=node/12之类的内容以了解此过程的概述。

于 2013-01-16T01:18:58.587 回答
0

这是因为它们共享编码。

于 2013-01-16T01:08:21.560 回答