Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
spyeye
31 / 31 / 1
Регистрация: 06.08.2012
Сообщений: 155
#1

Адресация и поиск переменной/функции - C++

05.03.2013, 15:35. Просмотров 533. Ответов 8
Метки нет (Все метки)

Здравствуйте!
Возникла такая задача.
Есть какой-то .exe файл (х64).
В иде я нашел переменную и её значение.
Через артмани я нашел адрес этой переменной.
Я читаю её через ReadProcessMemory().
Однако, если перезапустить этот .exe файл, то все адреса меняются и я не могу снова прочитать значение переменной.

---

Какое может быть решение?
Один мой знакомый высказал идею через .dll находить в процессе адрес переменной и там же с ней оперировать(изменять, вызывать и тому подобное).
Однако опять вопрос - а как мне обратиться к этой переменной, не зная точного адреса? (имеется название, точное).

P.S. Работаю в vs 2012.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2013, 15:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Адресация и поиск переменной/функции (C++):

Получить доступ к переменной класса при наличии такого же имени переменной в функции - C++
Например, есть приватная переменная clientName в классе. Также есть точно такая же переменная в конструкторе этого класса. И мне нужно...

Вызов функции внутри другой функции с передачей локальной переменной по ссылке - C++
Столкнулся с очень с интересной проблемой. Можно ли так делать? #include <iostream> using std::cout; void f(const int &ref){...

Поиск одной переменной под другой - C++
Добрые день, сразу прошу извинить за неопределенное название темы!! Вопрос такой: человек вводит число 42.0 например, а под этим...

Поиск информации в переменной типа std::wstring - C++
Этот код определяет видеокартку которая на компе стоит но данныен выводит в незнакомом мне виде немого преобразовать вывод в стринг Как...

Поиск значения переменной в текстовом файле на сервере - C++
Здравствуйте. Есть переменная в которую заносится строка. На сайт залит txt файл вида: Строка 1 Строка 2 Строка 3 Нужно...

Вычислить значение функции (значение переменной Х передается в качестве параметра функции) - C++
Написать функцию, которая возвращает вычисленное значение функции. Значение переменной Х передается в качестве параметра функции.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
05.03.2013, 15:53 #2
Цитата Сообщение от spyeye Посмотреть сообщение
Какое может быть решение?
Искать указатель на эту переменную.
spyeye
31 / 31 / 1
Регистрация: 06.08.2012
Сообщений: 155
05.03.2013, 15:55  [ТС] #3
Цитата Сообщение от kazak Посмотреть сообщение
Искать указатель на эту переменную.
Как искать указатель?

Переменная вида:
C++
1
char buf[] = "...";
Откуда тут возьмется указатель?
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
05.03.2013, 16:05 #4
buf фактически будет указателем.
spyeye
31 / 31 / 1
Регистрация: 06.08.2012
Сообщений: 155
05.03.2013, 16:07  [ТС] #5
Цитата Сообщение от kazak Посмотреть сообщение
buf фактически будет указателем.
Ну допустим это указатель. Только я все-равно не понимаю, как к нему обращаться внутри процесса.
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
05.03.2013, 16:23 #6
С начала определиться где buf находиться, buf уже будет содержать адрес данных.
spyeye
31 / 31 / 1
Регистрация: 06.08.2012
Сообщений: 155
05.03.2013, 16:25  [ТС] #7
Цитата Сообщение от kazak Посмотреть сообщение
С начала определиться где buf находиться, buf уже будет содержать адрес данных.
хе-хе, мой вопрос как бы и заключается в том, что я не знаю как найти, где находится buf в процессе.

Ида выдает один адрес, при запуске он меняется на какой-то другой.

Собственно как отловить переменную в процессе, зная её имя, но не зная адрес?
WhiteP
606 / 204 / 23
Регистрация: 20.11.2012
Сообщений: 426
05.03.2013, 16:45 #8
Цитата Сообщение от spyeye Посмотреть сообщение
Собственно как отловить переменную в процессе, зная её имя, но не зная адрес?
Имя? Программа с отладочными символами чтоль?
Ищи функцию, которая эту память buf выделяет. Если выделяется на стеке, то нужно знать адрес вершины стека в момент захода в функцию и смещение от начала кадра - это и есть адрес. Если память выделяется динамически, то искать функции new, malloc, heapalloc, virtualalloc и т.п. и перехватывать возвращаемый указатель.
spyeye
31 / 31 / 1
Регистрация: 06.08.2012
Сообщений: 155
05.03.2013, 19:19  [ТС] #9
Цитата Сообщение от WhiteP Посмотреть сообщение
Имя? Программа с отладочными символами чтоль?
Именно так. Других вариантов нету?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.03.2013, 19:19
Привет! Вот еще темы с ответами:

a,b и c.Присвоить максимальное из них переменной a,минимальное-переменной c,среднее переменной b - C++
даны произвольные числа a,b и c.Присвоить максимальное из них переменной a,минимальное-переменной c,среднее переменной b.

Ошибка в функции из за переменной - C++
Код выдает ошибку. Все переменые должны быть обьязательно в главной функции, в глобальной нельзя. И из за переменной С выдает ошибку...

Присвоение значения переменной из функции - C++
Доброго времени суток!!! Например в Pascal можно так: procedure myinc(var a:integer); begin a:=a+1; end; begin ...

Вызов функции. Перенос переменной - C++
Run-Time Check Failure #2 - Stack around the variable 'menu' was corrupted. Уже 2 часа не могу понять, почему эта ошибка... Помогите...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.03.2013, 19:19
Ответ Создать тему
Опции темы

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