Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
ВДВ777
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110
1

адресс начала класса

17.02.2014, 18:15. Просмотров 919. Ответов 12
Метки нет (Все метки)

есть к примеру класс:

C++
1
2
3
4
5
6
7
class abc
{
public:
func1();
func2();
};
abc ABC;
Хотелось бы посмотреть его расположение в памяти.

Как вывести адрес начала класса или хотя бы любой функции внутри него и возможно ли вообще это сделать , пробнул такими способами:

C++
1
2
3
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , ABC);
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , *(DWORD*)ABC);
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , &ABC);
Выводится бред какой-то...
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2014, 18:15
Ответы с готовыми решениями:

Проверка строки на ip адресс
Помоги те написать прогу. Проверить является ли введенная строка IP...

Как получить адресс функции находящейся в классе?
посмотрите плз.. не вдаваясь в извращенную задумку, задача такова: нужно...

функция с возврощающим типом void, возвращает адресс
void * memcpy ( void * destination, const void * source, size_t num );...

Программа, которая выводит на карте адресс человека
Добрый день. Программированием занимаюсь недавно, всего 2 недели. И уже куча...

Не меняет адресс массива после завершения функции
Добрый день. Есть ф-ция которая добавляет дополнительный элемент в...

12
THE--MASTER
Заблокирован
17.02.2014, 18:19 2
abc *ABC = new abc;
в дебаггере в окне Memory1 вводишь ABC или копируешь туда адрес, который ты видишь при надеведии на него мышкой. Окно памяти настраиваешь как тебе удобно
0
Croessmah
++Ͻ
14630 / 8379 / 1582
Регистрация: 27.09.2012
Сообщений: 20,583
Записей в блоге: 2
Завершенные тесты: 1
17.02.2014, 18:22 3
Цитата Сообщение от ВДВ777 Посмотреть сообщение
Хотелось бы посмотреть его расположение в памяти.
никак, класс это лишь описание
0
ВДВ777
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110
17.02.2014, 18:30  [ТС] 4
Цитата Сообщение от Croessmah Посмотреть сообщение
никак, класс это лишь описание
а функцию внутри класса?
0
coloc
погромист
411 / 247 / 30
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
17.02.2014, 18:47 5
ВДВ777, разберись что такое класс и объект, почитай об указателях а потом выброси всю дурь с головы. А если уже нетерпеж то
C++
1
std::cout << &ABC;
0
ВДВ777
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110
17.02.2014, 19:07  [ТС] 6
Цитата Сообщение от coloc Посмотреть сообщение
ВДВ777, разберись что такое класс и объект, почитай об указателях а потом выброси всю дурь с головы. А если уже нетерпеж то
C++
1
std::cout << &ABC;
C++
1
2
3
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , ABC);
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , *(DWORD*)ABC);
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , &ABC);
эти примеры я просто так выложил??? Я уже это пробнул и не раз
0
DrOffset
8151 / 4729 / 1157
Регистрация: 30.01.2014
Сообщений: 7,703
17.02.2014, 19:10 7
Цитата Сообщение от ВДВ777 Посмотреть сообщение
эти примеры я просто так выложил??? Я уже это пробнул и не раз
Чем конкретно не устраивает предложенный вывод? Не пойми меня не правильно, просто мне не очень ясно что значит "бред".
0
coloc
погромист
411 / 247 / 30
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
17.02.2014, 19:19 8
ВДВ777, а ты че думал адрес выведется типу ,,ул. Пушкина 19/А,,?
1
ВДВ777
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110
17.02.2014, 19:21  [ТС] 9
Цитата Сообщение от DrOffset Посмотреть сообщение
Чем конкретно не устраивает предложенный вывод? Не пойми меня не правильно, просто мне не очень ясно что значит "бред".
разные адреса выводит каждый раз - то есть 3 примера которые я привел выше - выводят 3 разных адреса , мало того эти адреса не каким боком не относятся к моей программе , выходят за рамки выделенной памяти для проги и её модулей , короче левые адреса

Добавлено через 1 минуту
Цитата Сообщение от coloc Посмотреть сообщение
ВДВ777, а ты че думал адрес выведется типу ,,ул. Пушкина 19/А,,?
вот я и создал данную тему , чтобы мне разъяснили как найти адрес начала класса
0
DrOffset
8151 / 4729 / 1157
Регистрация: 30.01.2014
Сообщений: 7,703
17.02.2014, 19:26 10
Цитата Сообщение от ВДВ777 Посмотреть сообщение
разные адреса выводит каждый раз - то есть 3 примера которые я привел выше - выводят 3 разных адреса , мало того эти адреса не каким боком не относятся к моей программе , выходят за рамки выделенной памяти для проги и её модулей , короче левые адреса
Ну там в двух случаях вообще не адреса выводятся.
C++
1
2
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , ABC); // это не адрес
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , *(DWORD*)ABC); // и это не адрес
Адрес выводится только тут:
C++
1
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , &ABC);
Теперь осталось выяснить каким образом ты определил что "адреса не каким боком не относятся к моей программе"?
0
ВДВ777
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110
17.02.2014, 19:41  [ТС] 11
Цитата Сообщение от DrOffset Посмотреть сообщение
Ну там в двух случаях вообще не адреса выводятся.
C++
1
2
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , ABC); // это не адрес
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , *(DWORD*)ABC); // и это не адрес
Адрес выводится только тут:
C++
1
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , &ABC);
Теперь осталось выяснить каким образом ты определил что "адреса не каким боком не относятся к моей программе"?
взял обычный редактор памяти "cheat engine" и просмотрел диапазон памяти программы , dma точно нет , так как не использовал виртуальные функции (да и те адреса которые выводятся находятся почти в самом конце оперативной памяти) , только статические адреса , найти конец и начало модуля не сложно , как минимум вручную глянуть или как максимум так:

C++
1
2
3
4
5
6
7
8
9
MODULEINFO GetModuleData (char* module_name)
{
    MODULEINFO moduleInf = {0};
    HMODULE hModule = GetModuleHandle (module_name);
    if (hModule == NULL)
    return moduleInf;
    GetModuleInformation(GetCurrentProcess(), hModule , &moduleInf ,sizeof(MODULEINFO) );
    return moduleInf;
}
0
DrOffset
8151 / 4729 / 1157
Регистрация: 30.01.2014
Сообщений: 7,703
17.02.2014, 20:04 12
Лучший ответ Сообщение было отмечено ВДВ777 как решение

Решение

Цитата Сообщение от ВДВ777 Посмотреть сообщение
взял обычный редактор памяти "cheat engine"
Чисто ради интереса сейчас попробовал эту программу и прекрасно нашел свой адрес выведенный через:
C++
1
2
A a;
printf("%x\n", &a);
Что-то ты не так делаешь
А вообще советую почитать книжки на тему организации памяти в windows. Ну или для начала здесь.
Ну а адреса в своей программе все-таки лучше смотреть отладчиком.
1
ВДВ777
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110
17.02.2014, 20:08  [ТС] 13
Цитата Сообщение от DrOffset Посмотреть сообщение
Чисто ради интереса сейчас попробовал эту программу и прекрасно нашел свой адрес выведенный через:
C++
1
2
A a;
printf("%x\n", &a);
Что-то ты не так делаешь
А вообще советую почитать книжки на тему организации памяти в windows. Ну или для начала здесь.
Ну а адреса в своей программе все-таки лучше смотреть отладчиком.
да, спс, способ верный у меня тоже получилось все , просто нужно было "call" вписать подкласса , только так отображается верный адресс , тему можно закрыть
0
17.02.2014, 20:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2014, 20:08

Работа с функцией. Дано количество часов, минут и секунд с начала суток. Вычислить общее количество секунд с начала суто
Дано количество часов, минут и секунд с начала суток. Вычислить общее...

С начала суток часовая стрелка повернулась на "y" градусов. Сколько часов и минут прошло с начала суток?
С начала суток часовая стрелка повернулась на &quot;y&quot; градусов. Сколько часов и...

Как считать адресс из байт кода или очумелые хуки
Здравствуйте. Пишу dll с одним хуком. Есть некая переменная(funcAddress),...


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

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

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