1

我意识到试图篡改来自另一个应用程序或操作系统的内存被认为是糟糕的编程。

但是,我不懂 Objective C,我需要从一个固定的内存地址读取 25 个字节到一个变量中,然后用不同的 set 替换这 25 个字节

我对指针以及所有 * 和 & 和 @ 符号的含义都很糟糕。

我正在使用 XCode 4.4.1 在 Mac OS X 10.8 (Mountain Lion) 中尝试此操作。

我试过这样的事情:

char *myPtr = (char*) 0x7FFA8000 // just an example, not the real memory address
char myString[] = *myPtr
4

1 回答 1

4

如果是 25 个字符,你可以这样做:

char *myPtr = (char*) 0x7FFA8000; // pointer to arbitrary memory address
char myString[26];                // buffer to copy data to
memcpy(myString, myPtr, 25);      // do the copy
myString[25] = '\0';              // make sure string is terminated

写回任意地址:

char *myPtr = (char*) 0x7FFA8000; // pointer to arbitrary memory address
char myString[26];                // buffer to copy data from
memcpy(myPtr, myString, 25);      // do the copy

请注意,在这两种情况下,您只是在访问自己进程的虚拟地址空间中的内存——您不是在读取/写入操作系统或其他进程的内存。

于 2012-09-11T17:47:44.630 回答