Я работаю в программе, используя информацию DWARF и ELF. Я подключен к другой программе с помощью инструмента под названием Pin. У меня есть адреса из глобальных переменных, объявленных в программе «Y», и я подключаю их к своему модулю Pin, который я буду называть «X».
Я получаю кучу адресов для этих глобальных переменных. К сожалению, у меня возникают проблемы, когда я пытаюсь их разыменовать. Например (прямо сейчас я делаю что-то вручную, чтобы увидеть, делает ли он то, что должен делать):
char * limit, * address1;
for(address1 = (char *) 0x804A040, limit = address1 + bytesize; address1 < limit; address1++)
cout << *(address1) << "\n";
Я должен получить переменную, хранящуюся по этому адресу, который представляет собой char *
к слову. Должен ли я разыменовывать два указателя в этом случае? Адрес, а затем char *
хранится в этом адресе?
Это отлично работает, когда я хочу разыменовать переменную int
, но всякий раз, когда я пытаюсь разыменовать указатель или переменную char, я получаю значения non-ASCII
...
for
имеет только два аргумента, разделенных точкой с запятой, но для корректности требуется три. - person mrb   schedule 26.09.2012char *
, точнее слово"0xDEADBEEF"
, которое являетсяchar array
изsize 10
, по крайней мере, из моего понимание размеров шрифта - person attis   schedule 26.09.2012char *addr = (char *)0x804A040;
printf("%s\n", addr)
. Если это указатель на массив символов, вам следует проверить мой ответ. - person Toribio   schedule 26.09.2012