|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
Здравствуйте, уважаемые форумчане! К несчастью, в работе с dll у меня огромный пробел, а тут надо сразу, да еще и не совсем стандартно. В общем, осваиваю на бегу, но без вашей помощи не обойтись. К сути вопроса: есть dll1 и приложение, которое с этой dll1 успешно работает. Но есть потребность несколько расширить функционал, добавив сбор статистики. Ни разработчики dll1, ни разработчики приложения дорабатывать продукт не готовы, т.к. им этот функционал не интересен, поэтому надо как-то выкручиваться. В наличии dll, h и lib файлы. На выходе надо получить dll2, которая для приложения должна выглядеть совершенно так же, как dll1, но в некоторых функциях кроме того, что делает dll1, должны выполняться дополнительные действия. Теорию по dll изучаю, а как сделать такой клон, пока понять не могу. Объясните, пожадуйста, на простейшем примере, как это должно выглядеть? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 07:33 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills, Попробуй такую схему: пишешь dll, которая загружает и вызывает функции dll1. Подменяешь ей исходную dll1. Если всё работает - вставляешь свои костыли в вызовы. Напиши сначала сам минимальный пример, в котором будет приложение, dll и одна функция. Попробуй её подменить. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 07:59 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
Читай Рихтера Windows via C/C++ про перехват вызовов API-функций. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 08:08 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills добавив сбор статистики Для прогеров статистика это количество вызовов function X. Для руководства это посещение страницы Y 567 раз. Для второй, надо не перехватывать, а брать исходники и вставить в конструктор класса Y слово Log() ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 08:42 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills, Если есть исходники и ты программист, то глупо ими не воспользоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 08:43 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
Dima T Читай Рихтера Windows via C/C++ про перехват вызовов API-функций. это уже тяжёлая артиллерия обычно хватало варианта от crutchmaster ills Но есть потребность несколько расширить функционал, добавив сбор статистики. Ни разработчики dll1, ни разработчики приложения дорабатывать продукт не готовы а решение этой проблемы не из области программрования на С ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 08:46 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
crutchmaster, Мне понятно, что надо в свой проект подключить dll1.h и dll1.lib и реализовать вызов соответствующих функций. Мне не понятно, как получить в итоге клон, ведь функции исходной dll и новой называются одинаково? Например, в библиотеке dll1 есть экспортируемая функция, которая выводит банальное "Hello world" Код: plaintext 1.
В "расширенном" клоне эта функция должна к этому "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.
Все правильно, или я что-то не так понимаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 11:23 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
Dima T, Спасибо за рекомендацию, изучу ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 11:23 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, так нет исходников) и dll, и приложение - сторонние разработки. К разработчикам за расширением функционала обращались, получили отказ ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 11:26 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills PetroNotC Sharp, так нет исходников) и dll, и приложение - сторонние разработки. К разработчикам за расширением функционала обращались, получили отказ А про статистику промолчали. Так как вам нужна статистика совершенно чужого приложения. В народе говорят что это взлом. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 11:32 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Статистика - это несколько обобщенно и упрощенно) В некоторых функциях надо добавить запрос от пользователя дополнительных параметров, затем запрос к web-сервису для проверки этих параметров на актуальность, и еще добавить работу с дополнительной БД, в которую будут записываться результаты и еще некоторая информация, необходимая в дальнейшем для составления отчетов и контроля ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 11:42 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, собственно, с разработчиком dll эта работа согласована, но исходниками, естественно, никто не поделится (да это и бессмысленно, т.к. dll время от времени обновляется) Возможно, это и можно называть взломом, но тут цель сугубо созидательная, ни правообладателю исходной dll, ни правообладателю приложения имущественного вреда нанесено не будет ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 11:44 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills В некоторых функциях надо добавить запрос от пользователя дополнительных параметров, Еще конкретнее. Имя функции, ее параметры дайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 11:55 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills PetroNotC Sharp, так нет исходников) и dll, и приложение - сторонние разработки. К разработчикам за расширением функционала обращались, получили отказ Ну так и не трогай dll1. Создай еще одну dll, а в .h добавь декларацию экспортируемых функций. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 11:57 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Это не взлом. Это танцы на костылях по граблям и ямам. Через год надо будет обновить приложение, а ТС найдёт нормальную работу. Прослойка отвалится, приложение отвалится, сорцы потеряют. По-доброму тем разрабам надо приделать какие-то внешние хуки в своё приложение, а не заставлять клиентов заниматься чёрти чем. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:02 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, я исполнитель (собственно, это было обозначено в первом вопросе). Как может помочь название функции и ее параметры, если вопрос у меня в другом? Или это для того, чтобы убедиться, что я не собираюсь сделать что-то противозаконное? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:06 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills, Я сомневаюсь в идее. Поломать то все можно. Например, как вы добавите параметр если их длл его не примет? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:09 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills Код: plaintext 1. 2. 3. 4. 5.
Где добавка параметра? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:10 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills Мне не понятно, как получить в итоге клон, ведь функции исходной dll и новой называются одинаково? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:10 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
crutchmaster, Возможно, через год разработчики приложения поймут, что не только нам нужен этот функционал, и добавят его в новый релиз и необходимость в этой прослойке отпадет (и это будет здорово на самом деле). Естественно, разработчикам dll это не интересно, т.к. в ней это все реально не нужно, но мы тут заложники ситуации, поэтому приходится как-то выкручиваться :( ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:12 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills, Что за приложение хоть и что оно делает? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:13 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills crutchmaster, Возможно, через год разработчики приложения поймут, что не только нам нужен этот функционал, и добавят его в новый релиз и необходимость в этой прослойке отпадет (и это будет здорово на самом деле). Естественно, разработчикам dll это не интересно, т.к. в ней это все реально не нужно, но мы тут заложники ситуации, поэтому приходится как-то выкручиваться :( Ничего личного. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:13 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, параметры добавлять не нужно в функции, они остаются без изменений. Т.е. вместо Код: plaintext 1.
будет вывод диалога для ввода значения и запрос к web-сервису для проверки этого значения на актуальность. И уже после этих проверок выполнение функции исходной dll ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:15 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills вывод диалога ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:16 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, да нет, там гораздо сложнее, они не видят смысла в этой доработке и не хотят нагружать приложение ненужным функционалом ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:17 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills параметры добавлять не нужно ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:17 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp ills Где добавка параметра? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:17 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills они не видят смысла в этой доработке и не хотят нагружать приложение ненужным функционалом ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:18 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, об этом не думали, вы правы. А как тогда быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:18 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
egorych ну чего ты до парня докопался? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:20 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills А как тогда быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:21 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills, Тут рядом чел пишет только гуи на Qt. Если у вас как у него, то накидать шкурку раз плюнуть). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:24 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
egorych ills Мне не понятно, как получить в итоге клон, ведь функции исходной dll и новой называются одинаково? Вообще это интересный вопрос. Если у меня в приложении есть функция foo() и она же есть в двух сторонних dll с которыми мне нужно работать. Отказываться от линковки с dll? Странно это как-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:30 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp ills они не видят смысла в этой доработке и не хотят нагружать приложение ненужным функционалом Почему? После того как dll подгружается в адресное пространство процесса - код внутри dll мало чем отличается от кода внутри exe. Если обязанность dll осуществлять взаимодействие с сервером - и это нужно для повторного использования... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:34 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav Вообще это интересный вопрос. Если у меня в приложении есть функция foo() и она же есть в двух сторонних dll с которыми мне нужно работать. Отказываться от линковки с dll? Странно это как-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:35 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav, Потому что заморозится ГУИ на экране. Конечно на это можно плюнуть. petrav повторного использования... Тут надо все смотреть. Классы, шаблоны проектирования, слои, ООП. Обычно платформа определяет архитектуру. Если Qt кругом сигналы. То это многое решает по повторному коду. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:43 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
egorych petrav Вообще это интересный вопрос. Если у меня в приложении есть функция foo() и она же есть в двух сторонних dll с которыми мне нужно работать. Отказываться от линковки с dll? Странно это как-то. Слышал, конечно. Но как бы это всё же сторонний модуль. В .lib файле есть информация об именах экспортируемых функций. Неужели нет настройки линковщика что бы изменить эти **экспортируемые** названия. Там же простая таблица: "строковое имя функции - смещение/адрес". Т.е. я не могу подключить две dll если у них экспортируемые функции совпадают по названиям? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:44 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav, Потому что заморозится ГУИ на экране. Конечно на это можно плюнуть. Многопоточность не? Конечно, тут всё нужно смотреть. Может вызовы этой dll и так в другом потоке и им позволительно работать протяжённое время. А? Но вообще выглядит всё это как костыль. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:47 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav Т.е. я не могу подключить две dll если у них экспортируемые функции совпадают по названиям? В дельфи кроме длл есть пакеты. Это та же dll только с инфой о классах и типах. В шарпе тоже. Получается что в плюсах нет такого удобного механизма…? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:49 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav Многопоточность не? Но код нужно писать на событиях или сигналах. ЗАРАНЕЕ. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:50 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav Т.е. я не могу подключить две dll если у них экспортируемые функции совпадают по названиям? Нужен аргумент линковщика типа: --changeName=dll1.lib:funcName:newFuncName. И руками исправить заголовочник dll1.h. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:51 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav Но вообще выглядит всё это как костыль. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:51 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav Многопоточность не? Но код нужно писать на событиях или сигналах. ЗАРАНЕЕ. Тут дело в том, что информация от сервера очевидно не нужна ни старой dll, ни exe файлу. Это какой-то их личный костыль который они хотят впердолить между dll и exe и писать что-то в свою БД.. Не вижу проблем реализовать многопоточную архитектуру внутри новой dll. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:55 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav Не вижу проблем реализовать многопоточную архитектуру внутри новой dll. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 12:59 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills, я чёт не пойму, ладно dll не твоя, приложение то тоже не твоё что ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:02 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav Т.е. я не могу подключить две dll если у них экспортируемые функции совпадают по названиям? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:02 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
Basil A. Sidorov petrav Т.е. я не могу подключить две dll если у них экспортируемые функции совпадают по названиям? А подумать о том что я пишу? Это явная загрузка DLL. А я говорил про линковку и неявную загрузку DLL, если ты понимаешь о чём я говорю. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:05 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
kealon(Ruslan), Не его. Чужое. И хозяева против) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:05 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav, Я dll на плюсах не делал. А вот в exe везде заводил пространство имён. - в дллках есть такое? Решает вашу проблему? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:07 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav Не вижу проблем реализовать многопоточную архитектуру внутри новой dll. Я имею ввиду реализовать многопоточную архитектуру внутри новой DLL. Без изменений старой DLL и EXE. Это не проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:07 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav внутри новой DLL. Без изменений старой DLL Будет очередь в один поток и узкое место старая дллка. Как COM раньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:09 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
kealon(Ruslan), именно) было бы мое (наше), то и проблем бы никаких ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:12 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav внутри новой DLL. Без изменений старой DLL Будет очередь в один поток и узкое место старая дллка. Как COM раньше. Нет, в DllLoad() создаём свой поток. Он спит на условной переменной. Когда приходит вызов функции новой DLL... Нам осталось только передать информацию для запроса на сервер и записи данных в созданный поток. И перенаправить вызов в старую DLL. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:14 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Я как бы этого в его ответах просто не вижу, вся речь про dll и как её подцепить Поэтому у меня и возникло это предположение. Может тут реально надо начинать с "включить розетку" В обратной же ситуации для начала надо понять, не отвалится ли dll-ка при динамической загрузке ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:14 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav А я говорил про линковку и неявную загрузку DLL, если ты понимаешь о чём я говорю. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:15 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav, Я dll на плюсах не делал. А вот в exe везде заводил пространство имён. - в дллках есть такое? Решает вашу проблему? Я несколько усложнил задачу: мы подключаем две сторонние dll, которые экспортируют две Си-шные функции с одним именем. А в Си нет неймспейсов. Свою то функцию и переименовать можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:16 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Может тут реально надо начинать с "включить розетку" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:17 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav Нет, в DllLoad() создаём свой поток. Он спит на условной переменной. Когда приходит вызов функции новой DLL... Нам осталось только передать информацию для запроса на сервер и записи данных в созданный поток. И перенаправить вызов в старую DLL. Чтобы не было заморозки надо в посреднке за 0,05 сек передать управление обратно в exe. Дллка старая успевала. А ты как успеешь на сайт сходить? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:20 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav А в Си нет неймспейсов Только если математика какая на 4 ядра процессора. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:22 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav Нет, в DllLoad() создаём свой поток. Он спит на условной переменной. Когда приходит вызов функции новой DLL... Нам осталось только передать информацию для запроса на сервер и записи данных в созданный поток. И перенаправить вызов в старую DLL. Чтобы не было заморозки надо в посреднке за 0,05 сек передать управление обратно в exe. Дллка старая успевала. А ты как успеешь на сайт сходить? Я передаю информацию о запросе на сервер в другой поток - другой поток будет лезть на сервер. И сразу же вызываю старую dll, а потом сразу возвращаю управление в exe. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:23 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav в DllLoad() создаём свой поток. Что значит "в DllLoad()"? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:26 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav Я передаю информацию о запросе на сервер в другой поток - другой поток будет лезть на сервер. И сразу же вызываю старую dll, а потом сразу возвращаю управление в exe. Представь если я на onPaint строки таблицы спрашивал каким цветом красить должников в dll? 1000 запросов в сек. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:30 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav Я передаю информацию о запросе на сервер в другой поток - другой поток будет лезть на сервер. И сразу же вызываю старую dll, а потом сразу возвращаю управление в exe. Представь если я на onPaint строки таблицы спрашивал каким цветом красить должников в dll? 1000 запросов в сек. Так дело то в том, что EXE в onPaint() даже не предполагает, что есть какая-то БД, он думает, что общается со старой DLL - она ему всю инфу даёт для отрисовки. А прослойка в новой DLL просто статистику пишет в отдельном потоке . Я так вижу задачу. Другое дело, что там в прослойка-dll планировался какой-то запрос к пользователю ещё (GUI?). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:37 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav petrav Т.е. я не могу подключить две dll если у них экспортируемые функции совпадают по названиям? Нужен аргумент линковщика типа: --changeName=dll1.lib:funcName:newFuncName. И руками исправить заголовочник dll1.h. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 14:02 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav Другое дело, что там в прослойка-dll планировался какой-то запрос к пользователю ещё (GUI?). Проблема в модальных диалогах и т.д. И получения переменной без хидера. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 14:06 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills В наличии dll, h и lib файлы. Сколько прототипов в .h? Используется ли декорация имен? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 14:16 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav, а как это делается? где можно об этом почитать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 17:28 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills petrav, а как это делается? где можно об этом почитать? То что я описал достаточно сложно. Тут на пальцах не расскажешь. Нужно для начала Вам хотя бы создать эту промежуточную dll, которая будет просто вызывать старую dll и больше ничего. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 18:19 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills . В наличии dll, h и lib файлы. На выходе надо получить dll2, которая для приложения должна выглядеть совершенно так же, как dll1, но в некоторых функциях кроме того, что делает dll1, должны выполняться дополнительные действия. Как эти действия должны выглядеть? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 23:52 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills На выходе надо получить dll2, которая для приложения должна выглядеть совершенно так же, как dll1, но в некоторых функциях кроме того, что делает dll1, должны выполняться дополнительные действия. Когда я решал подобные задачи, я использовал 2 пути: 1. Когда библиотека экспортирует мало функций (мой критерий до 10-15), я писал библиотеку, которая экспортирует тот же список функций, что и оригинал, затем подкидывал программе свою библиотеку, которая уже и подгружала оригинал, в который форвадила вызовы. Пример - перехват функций DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer у оле-библиотеки. 2. Если библиотека экспортирует много функций, я внедрял в процесс свою библиотеку, которая перехватывала обращения только к интересующим меня функциям. Пример - перехват файловых операций Kernel32.dll Читал, что есть третий путь - создание специальной библиотеки, в секции экспорта которой сразу можно указать, что данная функция экспортируется данной библиотекой, а реализована в другой, но сам этот путь не исследовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 09:49 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
x1ca4064 Читал, что есть третий путь - создание специальной библиотеки, в секции экспорта которой сразу можно указать, что данная функция экспортируется данной библиотекой, а реализована в другой, но сам этот путь не исследовал. Дмитрий Мух alexeyvg пропущено... Я тоже вашу логику не понимаю. Что с того, что "вам хватит" эти 2-3 вакансии, если на них претендует ещё 5000 человек? Вам же не 2-3 оффера дали, которые вам достаточно заапрувить, вы просто увидели 3 подходящих вакансии. Это не описывает рынок. подходящих специалистов на хорошие вакансии тоже не много а из 2-3 подходящих вакансий, один оффер да есть крайний раз было 2 оффера из 3-х вакансий, последним уже написал, что определился и не пошёл на второе собеседование Вот как на мороз сходите, потом раскажете свою саксес-стори. Преложения почти ничего не значат, только реальный кеш - шанс нарваться на обман и оказаться в поиске на пол годика в текущей ситуации очень велик. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 08:49 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
kealon(Ruslan), пардонс, не туда написал ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 09:16 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
x1ca4064 Читал, что есть третий путь - создание специальной библиотеки, в секции экспорта которой сразу можно указать, что данная функция экспортируется данной библиотекой, а реализована в другой, но сам этот путь не исследовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 09:22 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
kealon(Ruslan) слабо верится, как минимум один jmp ещё добавится ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 10:19 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
Basil A. Sidorov kealon(Ruslan) слабо верится, как минимум один jmp ещё добавится я исходя из релоков соображение выношу, фактически по формату можно релок установить только на адреса своей dll-ки в принципе конечно можно зная что нужная dll грузится по стабильному адресу (например системные dll) задать жёсткий адресс но это будет как бы нелогично да и подозрительно если GetProcAddr будет выдавать адресс из другой dll ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 11:40 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
kealon(Ruslan) слабо верится, как минимум один jmp ещё добавится Посмотрите по фразе "dll export forwarding" ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 12:08 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
kealon(Ruslan) как я понимаю Предположение - мать всех провалов Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 12:36 |
|
|
start [/forum/topic.php?all=1&fid=57&tid=2017509]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
91ms |
get tp. blocked users: |
2ms |
others: | 266ms |
total: | 443ms |
0 / 0 |