试图覆盖特定地址的内存

问题描述 投票:1回答:1

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

但是,我不了解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
objective-c memory pointers osx-mountain-lion xcode4.4
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

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

© www.soinside.com 2019 - 2024. All rights reserved.