【发布时间】:2012-09-25 20:09:18
【问题描述】:
我正在使用 DWARF 和 ELF 信息的程序工作。我使用名为 Pin 的工具迷上了另一个程序。我有来自“Y”程序中声明的全局变量的地址,并将其连接到我将称为“X”的 Pin 模块中。
我得到了这些全局变量的一堆地址。不幸的是,当我尝试取消引用它们时遇到了麻烦。例如(现在我正在手动做事情,看看它是否在做应该做的事情):
char * limit, * address1;
for(address1 = (char *) 0x804A040, limit = address1 + bytesize; address1 < limit; address1++)
cout << *(address1) << "\n";
我应该得到存储在那个地址中的变量,它是一个单词的char *。在这种情况下我是否必须取消引用两个指针?地址以及存储在该地址中的char *?
当我想取消引用 int 变量时,这非常有效,但是每当我尝试取消引用 char 指针或变量时,我都会得到 non-ASCII 值...
【问题讨论】:
-
您的
for语句只有两个分号分隔的参数,但需要三个才能有效。 -
您希望打印字符串的地址还是字符串本身?
-
您是要从当前进程还是单独进程中读取数据?
-
@PeteFordham 我期待自己得到字符串。我得到的字面意思是:@@�
-
我正在尝试从 Pin 所连接的进程中读取数据,因此它将是由我的 Pin 模块 @AdamRosenfield 控制的“当前进程”
标签: c++ c pointers dereference variable-address