在过去的两个月里,我学习了基本的逆向工程,装配和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 回答
x86是小字节序,所以为了阅读它,你从dword文字的右边到左边开始 .
字符串是“MetalMulisha”,fwiw .
要详细说明Lord Kale XI's answer,x86是little endian archiecture . 这实际上意味着我们向后存储多字节整数的字节,即首先存储最低有效字节 . 我提供的链接很好地解释了它是如何工作的 .
所以在这些指令中,我们首先将整数
74654D5Fh
移动到内存中的某个位置 . 按顺序,这实际上写入字节5F 4D 65 74
. 然后,我们将整数754D6C61h
写入内存中的下四个字节,写入61 6C 4D 75
,依此类推 .在这些指令之后,内存包含以下字节序列,每个字节都可以解释为ASCII字符:
那么,这些指令正在做的是将以空值终止的字符串
_MetalMulisha_
写入从var_218
开始的内存 .