二进制内存地址
xiuod窗口简单认知

在反汇编窗口和寄存器窗口数据都是高位在前低位在后,所以0x12345678这个数据的最高位是0x12,为什么不说最高位是0x1呢,因为数据窗口最小单位是以字节为准,一个字节代表八位二进制数,也就是两个16进制数,所以0x12刚好组成一个字节

1 2 3
| db [内存地址] 以字节单位查看数据
dd [内存地址] 以双字单位产看数据
|
一个内存地址能存储一个字节的数据,堆栈窗口的数据是从后网前排序,数据窗口是从头往后排序



内存地址表示方式
在逆向过程中看到的汇编指令都是计算机反汇编出来的,内存地址不会很直白的写着0x12345678这种形势,常见形式是需要经过计算
如果地址宽度超过了ffffffff只取ffffffff,多的丢弃,而且反汇编回来的代码不会超过最大范围
1 2 3
| lea指令,获取内存编号 lea ecx,dword ptr ds:[0x22F9C8]
|

立即数
1
| mov eax,dword ptr ds:[0x22F9C8]
|
reg(寄存器)
1 2
| mov ecx,0x22F9B0 mov eax,dword ptr ds:[ecx]
|

reg+立即数
1 2
| mov eax,dword ptr ds:[ecx+4] lea eax,dword ptr ds:[ecx+4]
|
reg+reg*{1,2,4,8}
1 2 3
| mov eax,0x22F9B0 mov ecx,2 mov dword ptr ds:[eax+ecx*4],0x12345678
|

reg+reg*{1,2,4,8}+立即数
1 2 3
| mov eax,0x22F9B0 mov ecx,2 mov edx,dword ptr ds:[eax+ecx*4+4]
|