如何在ASM中访问指针内容值?

时间:2016-10-24 01:04:24

标签: arrays pointers assembly

提醒您这是在ASM中完成的,没有其他语言。

我基本上有一个指针地址,这个指针指向另一个内存地址,这个内存地址包含我想要访问的值。

  • pointer.address
    • dynamic.address
      • 与基本动态地址相关的偏移量
      • (00)值1
      • (02)值2
      • (03)值3
      • (04)VALUE4

我如何访问/解除引用指针以允许我访问与指针指向的地址有关的特定值?

例如,我想篡改1-4值,但我目前停留在指针级别,我不知道什么样的ASM算法会对我有所帮助。

谢谢

2 个答案:

答案 0 :(得分:0)

如果没有您的代码,很难给出具体的答案,但我们假设ESI已经指向pointer.address

    mov      esi, pointer.address
    lodsd                              ; EAX = dynamic.address
    mov      cx, [eax+4]               ; CX = value3

    mov      esi, pointer.address
    lodsd
    mov      ebx, eax
    mov       ax, [ebx+3*2]            ; AX = value4

    mov      esi, pointer.address
    lodsd
    add      eax, 6                    ; Offset dynamic pointer to value4
    mov      esi, eax
    lodsw                              ; AX = value4 again

研究和试验所有X86地址模式是明智的,因为这些知识对于有效的汇编编程至关重要。

答案 1 :(得分:0)

我实际上已经弄明白了,它实际上只是利用'mov'取消引用指针引用的值或它引用的动态值。我认为这很难,但这只是我在思考的东西。