来自拆解程序的Asm片段

时间:2011-11-04 09:06:19

标签: assembly

有人可以解释我在反汇编函数中找到的以下代码的含义吗?

mov     eax, [ebx+20h]
mov     ecx, [eax]
mov     [eax], ecx
mov     ecx, [eax+4]
mov     [eax+4], ecx

对我来说,似乎eax和eax + 4所指向的内存将被覆盖在执行代码片段之前存储在相同内存位置的相同值...这实际上没有意义0_o。我错过了什么?

2 个答案:

答案 0 :(得分:0)

mov eax,[ebx+20h] ; move the memory constant at address [ebx] with the offset of 32 bits

mov ecx,[eax]  ; move the memory constant at address eax with no offset


mov [eax],ecx ; mov the address at ecx to value of eax

mov ecx,[eax+4] ; mov teh value of eax with offset 4 to ecx

mov [eax+4],ecx ; move the adress at ecx to the value of eax with offset 4

[eax] in like * eax in C

答案 1 :(得分:0)

是的,你是对的,eaxeax + 4(或ebx + 20xebx + 24h)的值无需更改即可读写。这可能是一种强制CPU将它们加载到第一级缓存中的方法。