首页 文章

这些说明是什么意思?

提问于
浏览
0

在过去的两个月里,我学习了基本的逆向工程,装配和C.我从朋友那里得到了二进制文件 . 他们让我把那个二进制文件转换成原始来源 . 我使用IDA Pro来反转二进制文件,但我在下面的这些说明中遇到了一些问题:

mov     [esp+230h+var_218], 74654D5Fh
mov     [esp+230h+var_214], 754D6C61h
mov     [esp+230h+var_210], 6873696Ch
mov     [esp+230h+var_20C], 5F61h

我试着搜索十六进制但我没有找到任何结果 . 谁能解释一下?

2 回答

  • 1

    x86是小字节序,所以为了阅读它,你从dword文字的右边到左边开始 .

    字符串是“MetalMulisha”,fwiw .

  • 1

    要详细说明Lord Kale XI's answer,x86是little endian archiecture . 这实际上意味着我们向后存储多字节整数的字节,即首先存储最低有效字节 . 我提供的链接很好地解释了它是如何工作的 .

    所以在这些指令中,我们首先将整数 74654D5Fh 移动到内存中的某个位置 . 按顺序,这实际上写入字节 5F 4D 65 74 . 然后,我们将整数 754D6C61h 写入内存中的下四个字节,写入 61 6C 4D 75 ,依此类推 .

    在这些指令之后,内存包含以下字节序列,每个字节都可以解释为ASCII字符:

    0x74654D5F      0x754D6C61      0x6873696C      0x00005F61
           |               |               |               |
           V               V               V               V
    [   var_218  ]  [   var_214  ]  [   var_210  ]  [   var_20C  ]
    5F  4D  65  74  61  6C  4D  75  6C  69  73  68  61  5F  00  00
    '_' 'M' 'e' 't' 'a' 'l' 'M' 'u' 'l' 'i' 's' 'h' 'a' '_' '\0' '\0'
    

    那么,这些指令正在做的是将以空值终止的字符串 _MetalMulisha_ 写入从 var_218 开始的内存 .

相关问题