Здравствуйте, PanychY, Вы писали:
PY>Хочу решать так: оставляю modA.dll и подходящий ему modC.dll, переименовываю modC.dll подходящий для modB.dll в modC2.dll, и тут мне не хватает инструмента: нужно похимичить над таблицей иморта modB.dll так чтобы перенапрвить поиск символов в modC2.dll. Собственно инструмент в розыске: умеет добавить новую библиотеку импорта и перенаправить туда несколько символов из существующей.
Первым делом я был переименовал не в modC2.dll а в mod
D.dll, заменил 1 букву в имени. Потом открыл modB.dll, нашёл бы там по имени modC.dll и по всему тексту заменил бы на modD.dll
А уж потом бы колдовал с таблицей импорта (причём так же), если не получится.
Здравствуйте, CEMb, Вы писали:
CEM>Первым делом я был переименовал не в modC2.dll а в modD.dll, заменил 1 букву в имени. Потом открыл modB.dll, нашёл бы там по имени modC.dll и по всему тексту заменил бы на modD.dll
CEM>А уж потом бы колдовал с таблицей импорта (причём так же), если не получится.
Не получится. В modC2.dll(modD.dll) три сотни экспортов, и не хватает 3 функций. Пусть те что есть смотрят на modC.dll оригинальный, а недостающие — отдельным модулем(тем более они по ходу дела stateless.
Т.е. по сути есть зависимость с которой слинковались с новой версией, а по ходу работы есть старая(потому что какой-то другой модуль уже её подтянул). Нужен шим, но не на весь модуль, а на набор недостающих функций.
Здравствуйте, PanychY, Вы писали:
PY>Приветствую, коллеги
PY>Есть такая проблема:
PY>Хост приложение app.exe, в импортах у него modA.dll и modB.dll, которые в свою очередь зависят от modC.dll . Проблема в том появилась несостыковка в вариантах modC.dll с которыми дружат modA.dll и modB.dll на уровне таблиц экспорта: modA.dll хочет ProcX, а modB.dll хочет ProcY из modC.dll(помимо других экспортов). Оба вариант modC.dll есть, но заставить их работать в одном процессе — не получится, работает только один.
PY>Хочу решать так: оставляю modA.dll и подходящий ему modC.dll, переименовываю modC.dll подходящий для modB.dll в modC2.dll, и тут мне не хватает инструмента: нужно похимичить над таблицей иморта modB.dll так чтобы перенапрвить поиск символов в modC2.dll. Собственно инструмент в розыске: умеет добавить новую библиотеку импорта и перенаправить туда несколько символов из существующей.
PY>Сразу говорю: modC.dll модифицировать не получится, как и modA.dll и modB.dll (исходников нету), можно только препарирование на уровне PE-образа.
PY>Нагуглить что-то пока ничего не удается.
PY>Спасибо
Если можете грузить modA.dll и modB.dll динамически — тогда их можно положить в разные папки и использовать LoadLibraryEx для загрузки.
Если нет — можно все равно положить в разные папки и потанцевать с бубном вокруг private assembly manifest, но тут я вам не помощник