我如何解释 mov ds:dword_4870058 ,偏移量 loc_4048E0?

逆向工程 部件
2021-06-24 12:54:43

我有以下装配线,我有我的问题来理解它,因为直到现在我一直看到这样的线:mov eax, 0等等。但是现在,我有以下内容(我使用 IDA PRO):

 mov ds:dword_4870058 , offset loc_4048E0

当我点击 offset 时loc_4048E0,我看到:

 loc_4048E0:
 mov al, 10h
 jmp sub_402774

当我解释dword_4870058为全局变量时,我是否可以假设它dword_4870058获取了值10h(如果我将其al视为返回值寄存器)。这是我唯一能想到的。

这是一个正确的还是错误的假设?

1个回答

更干净的版本是:

mov [dword_4870058] , offset loc_4048E0

然后,一个变体:

mov [address], value

其中,[ ]表示它包含在 中的内存地址,[] 并且在这种情况下放入其中的值是另一个内存地址(在代码部分)。

要将其移至寄存器,它将是:

mov register, value ; eg : mov eax, 12345678h

值部分可以是一个值、一个指针、一个常量……它们都是一样的……只是数字。

需要注意的一点是,在 x86 中你不能进行内存到内存的移动。所以,“我可以假设dword_4870058得到这个值10h吗”是完全错误的,那个地址的函数没有被调用过吗?所以,它无法获得价值10h......

它只是将一个值(函数的地址)存储到另一个内存块中。