指针说白了就是地址
前面的例子都是寄存器寻址:指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。
但是如果我们碰到了寄存器间接寻址:寄存器内存放的是操作数的地址,而不是操作数本身,即操作数是通过寄存器间接得到的。
一般来说如果前面两种方法行不通可以试试着一种方法,操作如下:
我们理一下思路首先监听值–然后找到放着这个值的地址1-再找放着这个地址1的地址2
Step1 找值对应的地址
Step2 找地址1对应的地址2
输入地址1选中十六进制开始找找到地址2
一般来说 格式大概是 mov [rsi],eax 那么我们要找的就是rsi的地址 如果是 mov [rsi+30],我们还是要找rsi的地址不过在配置指针的时候要加上偏移量
现在我们有了地址2(不会变) 可以通过地址2找到地址1的值(会变) 此时我们需要一个指向地址1的指针,指向地址2的值
上面讲的是一重指针也就是mov a,[b] 把b为的地址的值存到a
下面讲解多重指针
也就是mov a,[b] mov c,[a+18]套娃
我们也是从找值入手比如值c是1526 找是谁改写了这个值 他的地址为a+18
选中十六进制 找a
定义一重指针p偏移量为18
到这里我们第二集都讲过
但是我们这里还没完我们要找到b
找到a以后–右击–是谁访问了这个变量(包括读写)–找到了b相关语句和b的地址
Comments NOTHING