Главная страница
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.009 c
2-1377575039
Abcdef123
2013-08-27 07:43
2014.06.22
inherited; не работает. Как выполнить все события?


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


15-1385843401
Юрий
2013-12-01 00:30
2014.06.22
С днем рождения ! 1 декабря 2013 воскресенье


15-1386575834
oldman
2013-12-09 11:57
2014.06.22
С днем рождения!


15-1386058324
LDV
2013-12-03 12:12
2014.06.22
html-редактор