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

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

Войти
Регистрация
Восстановить пароль
 
ВДВ777
-4 / 0 / 0
Регистрация: 12.03.2013
Сообщений: 110
#1

адресс начала класса - C++

17.02.2014, 18:15. Просмотров 379. Ответов 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);
Выводится бред какой-то...
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2014, 18:15     адресс начала класса
Посмотрите здесь:

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

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

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

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

С начала суток часовая стрелка повернулась на "y" градусов. Сколько часов и минут прошло с начала суток? - C++
С начала суток часовая стрелка повернулась на "y" градусов. Сколько часов и сколько минут прошло с начала суток? #include...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
THE--MASTER
Заблокирован
17.02.2014, 18:19     адресс начала класса #2
abc *ABC = new abc;
в дебаггере в окне Memory1 вводишь ABC или копируешь туда адрес, который ты видишь при надеведии на него мышкой. Окно памяти настраиваешь как тебе удобно
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
17.02.2014, 18:22     адресс начала класса #3
Цитата Сообщение от ВДВ777 Посмотреть сообщение
Хотелось бы посмотреть его расположение в памяти.
никак, класс это лишь описание
ВДВ777
-4 / 0 / 0
Регистрация: 12.03.2013
Сообщений: 110
17.02.2014, 18:30  [ТС]     адресс начала класса #4
Цитата Сообщение от Croessmah Посмотреть сообщение
никак, класс это лишь описание
а функцию внутри класса?
coloc
погромист
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
17.02.2014, 18:47     адресс начала класса #5
ВДВ777, разберись что такое класс и объект, почитай об указателях а потом выброси всю дурь с головы. А если уже нетерпеж то
C++
1
std::cout << &ABC;
ВДВ777
-4 / 0 / 0
Регистрация: 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);
эти примеры я просто так выложил??? Я уже это пробнул и не раз
DrOffset
6918 / 4111 / 939
Регистрация: 30.01.2014
Сообщений: 6,905
17.02.2014, 19:10     адресс начала класса #7
Цитата Сообщение от ВДВ777 Посмотреть сообщение
эти примеры я просто так выложил??? Я уже это пробнул и не раз
Чем конкретно не устраивает предложенный вывод? Не пойми меня не правильно, просто мне не очень ясно что значит "бред".
coloc
погромист
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
17.02.2014, 19:19     адресс начала класса #8
ВДВ777, а ты че думал адрес выведется типу ,,ул. Пушкина 19/А,,?
ВДВ777
-4 / 0 / 0
Регистрация: 12.03.2013
Сообщений: 110
17.02.2014, 19:21  [ТС]     адресс начала класса #9
Цитата Сообщение от DrOffset Посмотреть сообщение
Чем конкретно не устраивает предложенный вывод? Не пойми меня не правильно, просто мне не очень ясно что значит "бред".
разные адреса выводит каждый раз - то есть 3 примера которые я привел выше - выводят 3 разных адреса , мало того эти адреса не каким боком не относятся к моей программе , выходят за рамки выделенной памяти для проги и её модулей , короче левые адреса

Добавлено через 1 минуту
Цитата Сообщение от coloc Посмотреть сообщение
ВДВ777, а ты че думал адрес выведется типу ,,ул. Пушкина 19/А,,?
вот я и создал данную тему , чтобы мне разъяснили как найти адрес начала класса
DrOffset
6918 / 4111 / 939
Регистрация: 30.01.2014
Сообщений: 6,905
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);
Теперь осталось выяснить каким образом ты определил что "адреса не каким боком не относятся к моей программе"?
ВДВ777
-4 / 0 / 0
Регистрация: 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;
}
DrOffset
6918 / 4111 / 939
Регистрация: 30.01.2014
Сообщений: 6,905
17.02.2014, 20:04     адресс начала класса #12
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от ВДВ777 Посмотреть сообщение
взял обычный редактор памяти "cheat engine"
Чисто ради интереса сейчас попробовал эту программу и прекрасно нашел свой адрес выведенный через:
C++
1
2
A a;
printf("%x\n", &a);
Что-то ты не так делаешь
А вообще советую почитать книжки на тему организации памяти в windows. Ну или для начала здесь.
Ну а адреса в своей программе все-таки лучше смотреть отладчиком.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2014, 20:08     адресс начала класса
Еще ссылки по теме:

Как вывести адресс на который указывает указатель типа char*. - C++
Эта программа : #include &lt;iostream&gt; using namespace std; int main() { int a={1, 2, 3, 4}; int* g=a; cout&lt;&lt;g&lt;&lt;endl; ...

Нужен пример неизменяемого класса и класса от которого нельзя наследоваться - C++
Здравствуйте! Нужно привести пример неизменяемого класса и класса от которого нельзя наследоваться.

Составьте программу, выводящую на экран сообщения об отличниках класса, о средней успеваемости учащихся класса - C++
Опишите, используя структуру записи, школьный журнал. Предусмотрите в записи поля для хранения информации о фамилии учащегося, предмете,...

Разное значение переменной класса, в разных экземплярах класса - C++
Вот примерный код: class Test { private: static int countC; static int countD; void initWeight(){ double a; ...


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

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

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