我试图使用C ++更改寄存器的整数值。
这就是我所拥有的......
DWORD_PTR* value_pointer= NULL;
__asm
{
MOV [value_pointer], esp
}
// Create a pointer so we can modify the integer value stored in ESP, via value_pointer...
// We do +0x10 because the address is actually +0x10 ahead, I just couldn't compile the code using MOV [value_pointer], DWORD PTR SS:[ESP+0x10]
// Assume ESP+0x10 holds an integer value of 8
char* adjustable_value_pointer = ((char*)value_pointer + 0x10);
adjustable_value_pointer += 4;
现在,如果我们假设ESP + 0x10最初保持整数值为8,那么在此代码运行后再次引用ESP + 0x10(在汇编中)时,该值现在应为12,而不是8。
但这对我来说似乎不起作用......
请帮忙吗?!
答案 0 :(得分:0)
value_pointer
应该是DWORD_PTR
而不是DWORD_PTR*
,并且您不需要声明新指针,您可以使用{{1}的数组索引}作为基础(并根据步幅调整索引):
value_pointer
将value_pointer[4] += 4;
4
s(0x16字节)的大小添加到DWORD
,并访问该地址的内存。