计算外壳代码中的字节数



我想知道以下代码(shell代码(有多少字节:

"x31xc0"             /* Line 1:  xorl    %eax,%eax              */
"x50"                 /* Line 2:  pushl   %eax                   */
"x68""//sh"           /* Line 3:  pushl   $0x68732f2f            */
"x68""/bin"           /* Line 4:  pushl   $0x6e69622f            */
"x89xe3"             /* Line 5:  movl    %esp,%ebx              */
"x50"                 /* Line 6:  pushl   %eax                   */
"x53"                 /* Line 7:  pushl   %ebx                   */
"x89xe1"             /* Line 8:  movl    %esp,%ecx              */
"x99"                 /* Line 9:  cdq                            */
"xb0x0b"             /* Line 10: movb    $0x0b,%al              */
"xcdx80"             /* Line 11: int     $0x80                  */

我知道一个字节有八个比特,所以一个十六进制对就是一个字节。例如,x310x31,它是一个字节。但我不确定如何分别计算第3行和第4行的//sh/bin文本。我也把它们算作单个字节吗?那么这个外壳代码的总大小是18字节吗?

char数据类型为1字节,因此两个字符串的大小都为4字节。您可以使用Python:来确认这一点

>>> len(b'/bin')
4
>>> (0x6e69622f).to_bytes(4, "little")
b'/bin'

最新更新