Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.06.22;
Скачать: CL | DM;

Вниз

Прокси-интерфейс   Найти похожие ветки 

 
Дмитрий СС   (2013-12-10 22:29) [0]

Пусть ей некий интерфейс с n функциями (декларация safecall).
Параметры функций этого интерфейса неизвестны, имеется только указатель на экземпляр (Source).
Насколько сложно написать прокси-объект (Proxy), который будет иметь такой же интерфейс, но все вызовы будет перенаправлять на Source.
Ну и одну или несколько функций, параметры которых известны, подменить.

Для чего это нужно? Мне нужно изменить поведение одного готового ком-объекта. При этом автор этого объекта может в дальнейшем добавлять новые методы - они тоже должны проксироваться.

Если это сделать невозможно или крайне сложно (т.е., например, потребуется анализ кода каждой функции), то скажу что у библиотеки этой есть typelibrary, может с помощью нее получится сделать прокси с ранним связыванием?

Хочется не изобретать ничего.


 
Rouse__   (2013-12-11 00:04) [1]

Если без вникания в терию пере хвата, то берешь tlb и по ней генерируешь проксю в виде комсервака с гуидом оригинального. Для оригинала генерируешь новый гуид и регишь его в системе, причем этот же гуид ты должен изменить в теле экзешника у оригинального файла. Пос чего сначала будет вызываться твой код, из которого ты будешь вызывать оригинальные методы с твоим модификациями


 
МАКсим007   (2013-12-11 06:07) [2]

Я думал без изменения библиотеки сделать. там ДЛЛка, думаю я смогу получить из нее объект прямыми вызовами экспортированных функций. Там вроде просто все. Фабрика и все дела.

На счет интерфейса я подумал что можно сделать так:
Создаю массив из указателей длиной k > n. Каждый указатель указывает на JMP <Source + i * 4>, где i - это номер указателя в массиве, а <Source + i * 4> адрес оригинальной функции.
Нужные мне функции я буду помнить по номеру.

Это общая концепция основывается на моих знаниях архитектуры процессора и знаниях об интефейсах (что интерфейс это список лишь указателей).

Как такая идея?



Страницы: 1 вся ветка

Текущий архив: 2014.06.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.008 c
15-1386534602
Юрий
2013-12-09 00:30
2014.06.22
С днем рождения ! 9 декабря 2013 понедельник


15-1386315211
oldman
2013-12-06 11:33
2014.06.22
Не ли у кого конвертера GDBTOXML?


15-1385982908
брат Птибурдукова
2013-12-02 15:15
2014.06.22
Новый шаблон ответа в "начинающих"


3-1298974464
Очень злой
2011-03-01 13:14
2014.06.22
не могу создать AdoConnection в потоке


15-1386102602
Юрий
2013-12-04 00:30
2014.06.22
С днем рождения ! 4 декабря 2013 среда