powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / обертка-клон для dll
25 сообщений из 78, страница 1 из 4
обертка-клон для dll
    #39896039
ills
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые форумчане!
К несчастью, в работе с dll у меня огромный пробел, а тут надо сразу, да еще и не совсем стандартно. В общем, осваиваю на бегу, но без вашей помощи не обойтись.
К сути вопроса: есть dll1 и приложение, которое с этой dll1 успешно работает. Но есть потребность несколько расширить функционал, добавив сбор статистики. Ни разработчики dll1, ни разработчики приложения дорабатывать продукт не готовы, т.к. им этот функционал не интересен, поэтому надо как-то выкручиваться. В наличии dll, h и lib файлы. На выходе надо получить dll2, которая для приложения должна выглядеть совершенно так же, как dll1, но в некоторых функциях кроме того, что делает dll1, должны выполняться дополнительные действия.
Теорию по dll изучаю, а как сделать такой клон, пока понять не могу. Объясните, пожадуйста, на простейшем примере, как это должно выглядеть?
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896049
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ills,

Попробуй такую схему: пишешь dll, которая загружает и вызывает функции dll1. Подменяешь ей исходную dll1. Если всё работает - вставляешь свои костыли в вызовы. Напиши сначала сам минимальный пример, в котором будет приложение, dll и одна функция. Попробуй её подменить.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896052
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читай Рихтера Windows via C/C++ про перехват вызовов API-функций.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896067
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ills
добавив сбор статистики
какой? Для кого?
Для прогеров статистика это количество вызовов function X.
Для руководства это посещение страницы Y 567 раз.
Для второй, надо не перехватывать, а брать исходники и вставить в конструктор класса Y слово Log()
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896070
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ills,
Если есть исходники и ты программист, то глупо ими не воспользоваться.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896071
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Читай Рихтера Windows via C/C++ про перехват вызовов API-функций.

это уже тяжёлая артиллерия

обычно хватало варианта от crutchmaster


ills
Но есть потребность несколько расширить функционал, добавив сбор статистики. Ни разработчики dll1, ни разработчики приложения дорабатывать продукт не готовы

а решение этой проблемы не из области программрования на С
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896195
ills
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster,

Мне понятно, что надо в свой проект подключить dll1.h и dll1.lib и реализовать вызов соответствующих функций. Мне не понятно, как получить в итоге клон, ведь функции исходной dll и новой называются одинаково?
Например, в библиотеке dll1 есть экспортируемая функция, которая выводит банальное "Hello world"
Код: plaintext
1.
extern "C" dll1_API void hello_world();


В "расширенном" клоне эта функция должна к этому "Hello world" выводить еще, например, "Привет, мир".

Для того, чтобы все заработало, мне надо сделать следующее:
1) переименовать библиотеку dll1 в dll1old (она же будет использоваться, в моей библиотеке, а моя библиотека должна называться dll1, чтобы с ней могло работать приложение)
2) добавить в проект dll1.h от исходной библиотеки и подключить dll1.lib
3) в своем проекте создать cpp и h файлы, в которых будет реализация новой функции hello_world. Или h-файл создавать не надо, т.к. он идентичен добавленному от исходной библиотеки? А если надо, то что в нем прописывать?
4) и, собственно, в cpp-файле
Код: plaintext
1.
2.
3.
4.
5.
void hello_world()
{
	cout << "Привет, мир" << endl;
	hello_world();
}


Все правильно, или я что-то не так понимаю?
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896196
ills
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,
Спасибо за рекомендацию, изучу
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896199
ills
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,

так нет исходников) и dll, и приложение - сторонние разработки. К разработчикам за расширением функционала обращались, получили отказ
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896210
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ills
PetroNotC Sharp,

так нет исходников) и dll, и приложение - сторонние разработки. К разработчикам за расширением функционала обращались, получили отказ
это прояснили. Понятно.
А про статистику промолчали.
Так как вам нужна статистика совершенно чужого приложения. В народе говорят что это взлом.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896221
ills
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,

Статистика - это несколько обобщенно и упрощенно) В некоторых функциях надо добавить запрос от пользователя дополнительных параметров, затем запрос к web-сервису для проверки этих параметров на актуальность, и еще добавить работу с дополнительной БД, в которую будут записываться результаты и еще некоторая информация, необходимая в дальнейшем для составления отчетов и контроля
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896225
ills
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,

собственно, с разработчиком dll эта работа согласована, но исходниками, естественно, никто не поделится (да это и бессмысленно, т.к. dll время от времени обновляется)
Возможно, это и можно называть взломом, но тут цель сугубо созидательная, ни правообладателю исходной dll, ни правообладателю приложения имущественного вреда нанесено не будет
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896233
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ills
В некоторых функциях надо добавить запрос от пользователя дополнительных параметров,
вы исполнитель или постановщик?
Еще конкретнее. Имя функции, ее параметры дайте.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896236
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ills
PetroNotC Sharp,

так нет исходников) и dll, и приложение - сторонние разработки. К разработчикам за расширением функционала обращались, получили отказ

Ну так и не трогай dll1. Создай еще одну dll, а в .h добавь декларацию экспортируемых функций.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896242
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

Это не взлом. Это танцы на костылях по граблям и ямам. Через год надо будет обновить приложение, а ТС найдёт нормальную работу. Прослойка отвалится, приложение отвалится, сорцы потеряют. По-доброму тем разрабам надо приделать какие-то внешние хуки в своё приложение, а не заставлять клиентов заниматься чёрти чем.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896249
ills
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,

я исполнитель (собственно, это было обозначено в первом вопросе). Как может помочь название функции и ее параметры, если вопрос у меня в другом? Или это для того, чтобы убедиться, что я не собираюсь сделать что-то противозаконное?
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896250
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ills,
Я сомневаюсь в идее. Поломать то все можно.
Например, как вы добавите параметр если их длл его не примет?
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896251
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ills
Код: plaintext
1.
2.
3.
4.
5.
void hello_world()
{
	cout << "Привет, мир" << endl;
	hello_world();
}


Где добавка параметра?
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896252
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ills
Мне не понятно, как получить в итоге клон, ведь функции исходной dll и новой называются одинаково?
забыть про статическую линковку подменяемой библиотеки к проекту и вызывать её функции динамически, используя LoadLibrary, GetProcAddress, etc
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896253
ills
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster,

Возможно, через год разработчики приложения поймут, что не только нам нужен этот функционал, и добавят его в новый релиз и необходимость в этой прослойке отпадет (и это будет здорово на самом деле). Естественно, разработчикам dll это не интересно, т.к. в ней это все реально не нужно, но мы тут заложники ситуации, поэтому приходится как-то выкручиваться :(
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896254
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ills,

Что за приложение хоть и что оно делает?
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896257
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ills
crutchmaster,

Возможно, через год разработчики приложения поймут, что не только нам нужен этот функционал, и добавят его в новый релиз и необходимость в этой прослойке отпадет (и это будет здорово на самом деле). Естественно, разработчикам dll это не интересно, т.к. в ней это все реально не нужно, но мы тут заложники ситуации, поэтому приходится как-то выкручиваться :(
понятно. Денег им нет заплатить и решили что сами все сделаете.
Ничего личного.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896259
ills
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,

параметры добавлять не нужно в функции, они остаются без изменений. Т.е. вместо
Код: plaintext
1.
cout << "Привет, мир" << endl;

будет вывод диалога для ввода значения и запрос к web-сервису для проверки этого значения на актуальность. И уже после этих проверок выполнение функции исходной dll
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896260
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ills
вывод диалога
а если там поток?
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896261
ills
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,

да нет, там гораздо сложнее, они не видят смысла в этой доработке и не хотят нагружать приложение ненужным функционалом
...
Рейтинг: 0 / 0
25 сообщений из 78, страница 1 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / обертка-клон для dll
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]