Сейчас на форуме: jinoweb (+6 невидимых) |
eXeL@B —› Программирование —› Исправить Dll loader для Delphi |
Посл.ответ | Сообщение |
|
Создано: 05 марта 2019 18:30 · Поправил: Kindly · Личное сообщение · #1 Несколько лет без проблем использовал юнит DLL Loader by Aphex для выполнения функций dll из ресурсов. Но теперь столкнулся с неработоспособностью юнита на одной из библиотек. Code:
Я не шарю в PE до такой степени, чтоб исправить юнит самостоятельно. Подсобит кто? Проект в аттаче. d0f9_05.03.2019_EXELAB.rU.tgz - deltamax.zip ----- Array[Login..Logout] of Life |
|
Создано: 05 марта 2019 19:00 · Личное сообщение · #2 |
|
Создано: 05 марта 2019 19:29 · Поправил: Kindly · Личное сообщение · #3 |
|
Создано: 05 марта 2019 19:30 · Личное сообщение · #4 |
|
Создано: 05 марта 2019 19:33 · Личное сообщение · #5 |
|
Создано: 05 марта 2019 19:47 · Личное сообщение · #6 Вобщем с импортом там как ни странно нормально все. В DllMain есть GetModuleFileNameW на hInstance DllMain, разумеется винда ничего про эту длл не знает, она ее не грузила. Code:
----- 2 оттенка серого |
|
Создано: 05 марта 2019 19:54 · Личное сообщение · #7 |
|
Создано: 05 марта 2019 20:03 · Поправил: Kindly · Личное сообщение · #8 f13nd пишет: Вобщем с импортом там как ни странно нормально все. В DllMain есть GetModuleFileNameW на hInstance DllMain, разумеется винда ничего про эту длл не знает, она ее не грузила. тут я прошляпил, что использовал Unicode вариант этой dll без соответствующих правок, но это важное исправление тем не менее проблему не решило. вот бинарь c ANSI версией библиотеки, там же dmx.RES под сорцы: https://www.upload.ee/files/9658879/deltamax_.zip.html Alchemistry костыли не хотелось бы юзать ----- Array[Login..Logout] of Life |
|
Создано: 05 марта 2019 20:08 · Личное сообщение · #9 Kindly пишет: тут я прошляпил, что использовал Unicode вариант этой dll без соответствующих правок Да не выйдет. Либо стелсить GetModuleFileName либо вон совсем дикое шаманство творить. Оно берет путь к длл и по-моему хочет отрубить расширение, чтоб слепить из этого путь к каким-то еще своим файлам (которых тоже видимо не будет). Еще можно патчить саму длл, чтобы выбросить всю эту помойку из нее. ----- 2 оттенка серого |
|
Создано: 05 марта 2019 20:17 · Личное сообщение · #10 |
|
Создано: 05 марта 2019 20:21 · Личное сообщение · #11 |
|
Создано: 05 марта 2019 20:29 · Личное сообщение · #12 f13nd пишет: Твоя длл не рассчитана на такое использование. я полагал, что юнит должен универсально работать со всеми 32-бит dll. таскать dll рядом не комильфо для консольной апликухи. если поправить не получается, может поделитесь у кого есть аналогичные стабильные загрузчики для дельфи? в гугле всякое перепробовал, но чтоб стабильно работало, в том числе и на Windows 10, только этот юнит нашел. ----- Array[Login..Logout] of Life |
|
Создано: 05 марта 2019 20:33 · Поправил: f13nd · Личное сообщение · #13 Kindly пишет: я полагал, что юнит должен универсально работать со всеми 32-бит dll Чичаз на колене сделанный загрузчик под 200 строчек тебе сымитирует полноценную загрузку модуля с учетом всех возможных маразмов, которые в длл могут оказаться. Я обычно рипаю дллки, чтобы не таскать отдельно, но относительно этой дважды подумал бы надо ли. Надо разбираться для чего ей это дополнительное файло и критично ли, чтобы оно было. ЗЫ: вон инсталляторам совсем не стрёмно выкидывать файло в %TEMP% и оттуда загружать ----- 2 оттенка серого |
|
Создано: 05 марта 2019 21:44 · Личное сообщение · #14 |
|
Создано: 06 марта 2019 17:21 · Поправил: ajax · Личное сообщение · #15 |
|
Создано: 06 марта 2019 18:47 · Личное сообщение · #16 |
|
Создано: 06 марта 2019 22:35 · Личное сообщение · #17 Kindly легче написать новый, чем это было править добавил хук GetModuleFileName, чтобы либа не крашилась. разберешься, думаю 9813_06.03.2019_EXELAB.rU.tgz - unitdmax.zip ----- От многой мудрости много скорби, и умножающий знание умножает печаль | Сообщение посчитали полезным: Kindly |
|
Создано: 06 марта 2019 23:29 · Личное сообщение · #18 ajax пишет: добавил хук GetModuleFileName, чтобы либа не крашилась. разберешься, думаю 9813_06.03.2019_EXELAB.rU.tgz - unitdmax.zip спасибо, взлетело! в pOptions надо было out объявить, чтоб видна была работа, но это никому не нужные кроме меня ньюансы. респект! вопрос решен, тему закрываю. ----- Array[Login..Logout] of Life |
eXeL@B —› Программирование —› Исправить Dll loader для Delphi |
Эта тема закрыта. Ответы больше не принимаются. |