提醒您这是在ASM中完成的,没有其他语言。
我基本上有一个指针地址,这个指针指向另一个内存地址,这个内存地址包含我想要访问的值。
我如何访问/解除引用指针以允许我访问与指针指向的地址有关的特定值?
例如,我想篡改1-4值,但我目前停留在指针级别,我不知道什么样的ASM算法会对我有所帮助。
谢谢
答案 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'取消引用指针引用的值或它引用的动态值。我认为这很难,但这只是我在思考的东西。