我正在编写一个程序,我必须修改目标进程内存/读取它.
到目前为止,我使用void*来存储地址并将其转换为char*如果我需要更改它们(添加偏移量或修改一般)
我听说过在stdint.h中定义的那个类型,但我没有看到使用它进行char*转换的指针算法的差异(这对我来说似乎更C89友好)
所以我的问题是:我应该将哪两种方法用于指针算法?在任何情况下我是否应该考虑使用uintptr_t而不是char*?
编辑1
基本上我只需知道这是否会产生
0x00F00BAA hard coded memory adress in target
process
void* x = (void*)0x00F00BAA;
char* y = (void*)0x00F00BAA;
x = (uintptr_t)x + 0x123;
y = (char*)y + 0x123;
x == y?
x == (void*)0x00F00CCD?
y == (void*)0x00F00CCD?
Run Code Online (Sandbox Code Playgroud)