![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
а смещение тебе наверное компилятор в комментариях сгенерированного бинарного кода напишет, так? Окуда ты это магическое число взял? Тебя не должно волновать то, что тип который должен занимать 1 байт, занимает 4 к примеру? Оффсеты как считать будешь? А то что вместо объекта в памяти лежит указатель на него (речь о виртуальном базовом классе) тебя тоже не волнует? Или то что по указателю объекта mystruct
лежит не int q, а указатель на vtable. Это все конечно не важно, ведь у нас есть магическое число 0x3C, которое решает все проблемы. |
||||
|
|||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
azesmcar, ты тоже не знаешь о чем говориш.
|
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
||||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
а есть еще оптимизация, и там можгут быть совввсем другие выкрутасы с vtable в том числе. Тем более что с vtable все тоже сложно (пример: http://www.rsdn.ru/article/cpp/fastdelegate.xml)
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
GoldFinch |
|
||||||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
azesmcar, берем прогу
компилим в релизе без отладочной информации грузим в IDA, ищем "x=", находим Foo1::print() в начале которого видим
откуда мы получаем что смещение x_ равно 0x4 и можем восстановить код
|
||||||
|
|||||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
поздравляю, ты нашел указатель на VMT!
осталось сделать чуть менее тривиальный пример, что-бы посмотреть как выравниваются члены класса в памяти ![]()
из дизассемблированого кода вестимо, видимо к этому ответу относился комментарий: xD ты забыл мягкий знак! |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
Lazin, при реверсировании мне совершенно без разницы, выравнивание там, или просто поле которое не используется
в обоих случаях я пишу "char stuff_xx[delta];" если я не собираюсь пользоваться указателем на вмт - он stuff, если собираюсь, он int*, то же можно сказать и о других полях Это сообщение отредактировал(а) GoldFinch - 2.7.2009, 13:35 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |