![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Molodec |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 249 Регистрация: 20.12.2010 Где: Украина Репутация: нет Всего: 1 |
Здравствуйте!
Создаю библиотеку .dll для одной из игр с помощью загруженного SDK и Visual C++ 6.0. Меня интересует следующий вопрос, например, при создании переменной как мне отследить по какому смещению он будет записана в бинарном файле. То есть, объявляю переменную типа int a=0; Как мне отследить это самое значение - 0 в бинарном файле с помощью Hex редактора? Например, чтобы в любой момент поместить туда другое значение потом? Есть ли такая возможность? Заранее благодарен. |
|||
|
||||
Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 3 Всего: 32 |
Читай переменные из файла, не городи чушь.
-------------------- ![]() |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
Molodec, если переменная статическая, то выведя ее адрес (VA) можно получить адрес смещения реального в exe-шке. В общем читать по теме: PE формат и http://stackoverflow.com/questions/2170843...virtual-address например (там есть ключевые моменты).
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
Molodec |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 249 Регистрация: 20.12.2010 Где: Украина Репутация: нет Всего: 1 |
А можете на счёт этого немного подсказать, как вывести виртуальный адрес? Открыл сейчас dll через exam diff pro и он выстроил модель, заголовки, адреса и т. д. И я так понял это перечислены смещения переменных? Хотя, могу ошибаться:
И таких блоков довольно много. Статьи почитал. Но пока что не совсем со всем разобрался. Поэтому прошу небольшой подсказки. |
||||
|
|||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
Molodec,
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
Molodec |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 249 Регистрация: 20.12.2010 Где: Украина Репутация: нет Всего: 1 |
jonie, спасибо Вам большое. Понял. Но в игре создается много объектов, в которых есть эта переменная и следовательно много адресов получается. И все они разные. Это же касается .ехе?
Я о std::cout<<"addr:"<<std::hex<<&var А при самой компиляции можно как-то просмотреть где будет храниться стандартное значение переменной в dll? То значение, что было задано при инициализации? ------------ Но я вывожу вот таким вот образом: CPrintF(TRANS("%x killed"),GetModuleHandle(NULL)); Специальный компилятор, через который проходят файлы и который генерирует из них *.cpp файлы, понимает эту запись. А Вашу, к сожалению, нет.
Это сообщение отредактировал(а) Molodec - 15.1.2011, 21:54 |
|||
|
||||
jonie |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
Вы читаете что я говорю или нет?
Для переменных класса конечно так не получится, т.к. они размещены в куче.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||||
|
|||||||
Molodec |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 249 Регистрация: 20.12.2010 Где: Украина Репутация: нет Всего: 1 |
jonie, прошу прощения. Сразу и не понял, о чем именно речь была.
На счёт компилятора - он принимает специальные файлы. Написаны они не на С++, но на Си подобном языке. То есть, синтаксис похож, но стандартных объектов и их методов нет. Например, весь #include берется из своих файлов, а не из стандартных С++. Спасибо за то, что постарались мне помочь. Жаль, безусловно, что нет способа, хотя, все возможно. Подожду хотя бы до среды. Потом, если что, помечу вопрос как решенный. |
|||
|
||||
Molodec |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 249 Регистрация: 20.12.2010 Где: Украина Репутация: нет Всего: 1 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |