Форум: "Прочее";
Текущий архив: 2014.06.22;
Скачать: [xml.tar.bz2];
ВнизПрокси-интерфейс Найти похожие ветки
← →
Дмитрий СС (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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.002 c