Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
#1

Как найти переменную в памяти? - C++

11.01.2013, 17:46. Просмотров 1126. Ответов 6
Метки нет (Все метки)

Доброго времени суток

Допустим, объявлена переменная int
C++
1
int r=58;
У этой переменной можно узнать адрес
C++
1
cout<<&r;
Как посмотреть значение по этому адресу в hex-редакторе? Пробовал через ArtMoney посмотреть значение по этому адресу в процессе, но там показывает неправильно, а должно показывать 58. Есть ли способ проследить это значение с помощью редактора?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2013, 17:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как найти переменную в памяти? (C++):

Можно ли разместить переменную в нужную ячейку памяти и реально ли хранить данные, разбросанными по памяти? - C++
Добрый день. Не могу найти информацию по двум вопросам : 1) могу ли я разместить переменную в нужную ячейку памяти. Например: int a...

Выделение памяти под переменную - C++
Драсте, уважаемые. Мне надо выделить переменную на 25мег, чтоб в ней хранить все просчёты выполненые программой. (Пробовал в BCB6 и в BCW...

Выделение памяти под переменную в структуре - C++
Например есть структура struct StrDL { char Str; char Simv; }; и как выделить память под Str ? Типа этого например ...

Сколько памяти выделяется под структурную переменную - C++
Подскажите, пожалуйста. Сколько памяти выделяется под структурную переменную типа cell? struct cell { unsigned char bit:1; //i-ый...

Можно ли создать в C++ ограниченную переменную (для экономии памяти) без использования классов - C++
Например, переменную, скажем, test, которая принимает значение в диапазоне (-180..+180)

Как найти не только числовую информацию в памяти процесса ? - C++
Написал я программку на с++ он открывает процесс игры и выводит мне в консоль количество хп . Нужный адрес я нашел через артмани . И...

6
WhiteP
606 / 204 / 23
Регистрация: 20.11.2012
Сообщений: 426
11.01.2013, 18:25 #2
ViktorKozlov,
В файле и в памяти значения адресов разные (т.к. секции в памяти выраниваются по 4Кб границам (обычно), а в файле - по 512-байтным (размер сектора диска). Это раз.
Автоматическую переменную (стековую) в файле не найдешь, т.к. она получается динамически в зависимости от того, куда система загрузит модуль и разместит стек. Само значение 58 скорее всего будет прям в коде.
Статические и глобальные переменные в файле есть в секции инициализированных данных (хотя тут от оптимизации компилятором зависит и от того, действительно ли они инициализируются литералом).
1) Найти ее можно, определив ее адрес на этапе выполнения, и вычесть из него адрес начала секции в памяти (есть в заголовке PE). Потом вычесть ImageBase (тоже в заголовке PE).
2) Потом найти смещение секции в файле (для этого нужно посмотреть PE заголовок) и прибавить полученное на первом этапе смещение...

Стоп, или нужно именно в процессе, а не в файле? Тогда должно быть именно по этому адресу.
1
Nick Alte
Эксперт С++
1643 / 1015 / 120
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
11.01.2013, 18:30 #3
Адрес переменной, выводимый в cout, пригоден для использования в ArtMoney без каких-либо смещений, напрямую.
1
WhiteP
606 / 204 / 23
Регистрация: 20.11.2012
Сообщений: 426
11.01.2013, 18:37 #4
Если в процессе, то конечно должно быть там же...
1
Миниатюры
Как найти переменную в памяти?  
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
11.01.2013, 18:49  [ТС] #5
Цитата Сообщение от WhiteP Посмотреть сообщение
или нужно именно в процессе, а не в файле?
Нужно в процессе, но через ArtMoney почему-то не получается. Там показывает или 0, или крестики, хотя должно быть 58
0
WhiteP
606 / 204 / 23
Регистрация: 20.11.2012
Сообщений: 426
11.01.2013, 18:57 #6
У меня все как надо. Да и не может быть иначе.
1
Миниатюры
Как найти переменную в памяти?  
Catstail
Модератор
23004 / 11371 / 1852
Регистрация: 12.02.2012
Сообщений: 18,609
11.01.2013, 19:39 #7
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
Нужно в процессе, но через ArtMoney почему-то не получается. Там показывает или 0, или крестики, хотя должно быть 58
- это твоя картинка? Так 3A16=5810
0
11.01.2013, 19:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2013, 19:39
Привет! Вот еще темы с ответами:

Записать день в переменную d,месяц в переменную m, год в переменную y - C++
Как можно получить системную дату? Мне надо записать день в переменную d,месяц в переменную m, год в переменную y Заранее Спасибо!

Процедура, записывающая в переменную X минимальное из значений X и Y, а в переменную Y – максимальное - C++
Описать процедуру Minmax(X, Y), записывающую в переменную X минимальное из значений X и Y, а в переменную Y – максимальное из этих значений...

Как объявить 10 значную переменную такой как 9876543210 - C++
Какой тип переменной используется для объявления 10 значной переменной такой как 9876543210? пробовал double, но компилятор выдаёт...

Как объявить переменную, как диапазон чисел - C++
Даны 2 числа A и B, оба трёхзначные (от 100 до 999) Как их объявить в начале? int A,B; Ведь A и B могут быть числами (-2 147...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.