试图覆盖特定地址的内存

时间:2012-09-11 17:45:48

标签: objective-c memory pointers osx-mountain-lion xcode4.4

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

但是,我不理解Objective C,并且我需要从固定的内存地址读取25个字节到变量中,然后用不同的集合替换这25个字节。

我用指针和所有*和&而@符号意味着。

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

我尝试过这样的事情:

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

1 个答案:

答案 0 :(得分: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

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