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

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

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

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

17.02.2014, 18:15. Просмотров 392. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос адресс начала класса (C++):

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

функция с возврощающим типом void, возвращает адресс - C++
void * memcpy ( void * destination, const void * source, size_t num ); std::cout<<memcpy(arr1,arr2 sizeof(arr))<<std::endl;

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

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

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

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

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

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

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

Как вывести адресс на который указывает указатель типа 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; ...

this это адресс объекта, а *this это сам объект. я всё правельно понял? - C++
this это адресс объекта, а *this это сам объект. я всё правельно понял?

Приём константных векторов класса, как аргументов в методе другого класса - C++
Есть такой класс: class Order { private: int numberOrder; map &lt;string, int&gt; catalogDish; double totalCost; public: ...


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

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

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