【问题标题】:How would I access a pointers content value in ASM?如何访问 ASM 中的指针内容值?
【发布时间】:2016-10-24 01:04:23
【问题描述】:

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

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

  • 指针.地址
    • 动态地址
      • 与基本动态地址有关的偏移量
      • (00)值1
      • (02)值2
      • (03)值3
      • (04)值4

我将如何访问/取消引用指针以使我能够访问与指针指向的地址相关的某个值?

例如我想篡改值 1-4,但我目前停留在指针地址级别,我不知道哪种 ASM 算法对我有帮助。

谢谢

【问题讨论】:

标签: arrays pointers assembly


【解决方案1】:

没有您的代码,很难给出具体答案,但我们假设 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 地址模式是明智的,因为这些知识对于有效的汇编编程至关重要。

【讨论】:

    【解决方案2】:

    我实际上想通了,它只是本质上必须使用“mov”来取消引用指针所引用的值或它所引用的动态值。我认为这很难,但这只是我想多了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      • 1970-01-01
      相关资源
      最近更新 更多