汇编基址问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 00:26:31
用CE查找游戏的基址时,到最后查找指针时,出现这样
mov [edi+ecx*4-08],eax
mov [edi+ecx*4-04],eax
这两句话是什么意思?是把EAX写到哪里呢?
到了这边,应该再查找哪个寄存器里面的数值才是最后要的基址? 是edi 吗? 那偏移又是什么?

这是是两个MOV指令啊
是将AX寄存器里的值依次放入[edi+ecx*4-08]和 [edi+ecx*4-04] 两个DWORD内存地址中。
你应该查mov [edi+ecx*4-08],eax 这条命令运行之前,就是上一句时eax,edi,ecx是里的值。举一个例子:假如 eax= 00000001 edi=00400000 ecx=00000003 [edi+ecx*4-08]=[00400004] 你应该到内存00400004里找地址,假如是00401080 那么EAX把00000001传送给 00401080

地址是ds + edi + ecx * 4 - 8
ds省略了,因为是默认的段超越前缀

edi和ecx都是变址,4是伸缩因子,一般用于数组

保护模式下面自己找地址不太可能的。。。。一般都是搜索

eax是32位的寄存器,这两句话的意思就是把eax中的数据传送到地址为edi+ecx*4-08的存储单元中,占4个字节,你的这个大体上属于寄存器相对寻,要找到这里的内容,必须访问地址为edi+ecx*4-08的单元,这是内存中的,使用dos功能调用可以在显示器上显示出来,但是你要找到这个地址恐怕很难,因为你首先要知道edi和ecx中的数据。