Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2012, 17:11   #1
zanyda12
 
Регистрация: 24.09.2012
Сообщений: 6
Лампочка Pointer из ctor

Всем доброго времени суток.
Такая проблема, по C++
Есть пара классов dtor и ctor, также существуют функции на вычисление pointer'a на ctor и dtor в PE.
Функция на вычисление этого pointer'a на dtor написана, а на ctor - не написана*в PE*. Напишите функцию на вычисления pointer'a по классу ctor из PE.
буду очень признателен D:
zanyda12 вне форума Ответить с цитированием
Старый 24.09.2012, 19:42   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Кто-нибудь что-нибудь понял?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.09.2012, 21:19   #3
zanyda12
 
Регистрация: 24.09.2012
Сообщений: 6
По умолчанию

Извините немного набордачил.
Тобишь есть какой то класс в PE и нужно получить адрес (не важно какой класс) его конструктора (тоесть адрес ctor'a).
Деконструктор виртуален, получить его - не проблема.
Тоесть есть рандомный класс в dll, неважно какой и можно получить его vtable и виртуальный dtor
Класс уже найден, просто нужен адрес ctor'a.

Последний раз редактировалось zanyda12; 24.09.2012 в 21:40.
zanyda12 вне форума Ответить с цитированием
Старый 24.09.2012, 23:21   #4
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,692
По умолчанию

Если я вас правильно понял, то Вам нужно почитать про фабрики объектов.
Например в этой книге: http://www.ozon.ru/context/detail/id/3829080/
Kostia вне форума Ответить с цитированием
Старый 25.09.2012, 07:00   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,342
По умолчанию

Лушче скажите зачем вам все это - возможно получите более дельный совет.
Вызвать конструктор можно и так:
new (ptr_to_memory) type;
Прочитайте про inplace new
waleri вне форума Ответить с цитированием
Старый 25.09.2012, 13:35   #6
zanyda12
 
Регистрация: 24.09.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Лушче скажите зачем вам все это - возможно получите более дельный совет.
Вызвать конструктор можно и так:
new (ptr_to_memory) type;
Прочитайте про inplace new
Меня попросили
если что, то класс не экспортируется из dll
к dll нет исходников такчто не рекомпилит
pdb тоже нет

Вот пример
Цитата:
//sampleDLL.cpp

class CBaseClass
{public:
CBaseClass()
{
printf("CBaseClass()\n");
}
virtual ~CBaseClass()
{
printf("~CBaseClass()\n");
}

virtual DoThis()
{
}

int m_iNum;
char m_szName[32];
};

class CClassublic CBaseClass
{public:
CClass()
{
printf("CClass()\n");
}
~CClass()
{
printf("~CClass()\n");
}

virtual DoThat()
{
}

int m_nType;
};








//program.cpp

class CExtractedClass
{public:

CExtractedClass()
{
static void*ctor = FTFGetCTor("CClass","sample.dll");
static void**vtable = FTVGetVTable("CClass","sample.dll") ;
FTVSetVTable(this,vtable);
FTFCallCTor(this,ctor);
}

virtual ~CExtractedClass()
{
static void**vtable = FTVGetVTable("CClass","sample.dll") ;
static void*dtor = vtable[0];
FTFCallDTor(this,dtor);
}

virtual DoThis(){}
virtual DoThat(){}

char m_Unk[44];
};

Последний раз редактировалось zanyda12; 25.09.2012 в 13:38.
zanyda12 вне форума Ответить с цитированием
Старый 25.09.2012, 14:15   #7
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,342
По умолчанию

Мне интересно как работает FTVGetVTable...

Легче дизассемблиравать DLL и посмотреть где исползуется данный vtablе, благо адрес уже есть...
waleri вне форума Ответить с цитированием
Старый 25.09.2012, 14:32   #8
zanyda12
 
Регистрация: 24.09.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Мне интересно как работает FTVGetVTable...

Легче дизассемблиравать DLL и посмотреть где исползуется данный vtablе, благо адрес уже есть...
нужна функция для автоматического поиска конструктора, а не по сигнатуре, она написана, но с ней есть некоторые проблемы, а именно она для некоторых классов находит оператор new и delete и некак не узнать что есть что
zanyda12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тип Pointer Crystallon Общие вопросы Delphi 2 20.06.2011 13:34
Pointer Different Общие вопросы Delphi 6 11.03.2011 23:15
pointer demonara Помощь студентам 0 22.10.2010 22:23
Pointer Superlotles Помощь студентам 5 12.10.2009 17:24
handle <> pointer Altera Общие вопросы Delphi 8 08.10.2008 21:11