purebasic.info

PureBasic forum
Текущее время: Сб ноя 17, 2018 3:34 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 57 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
 Заголовок сообщения: Re: Загрузка виртуальной DLL из exe
СообщениеДобавлено: Вт окт 29, 2013 7:30 am 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
SereZa писал(а):
pablov, предлагаю чуточку изменить

Изменил
MrF писал(а):
А зачем передавать размер? Разве его нельзя получить?

Логично

По поводу паковать\не паковать Dll. Мое мнение лучше все же при возможности паковать. Размещение PE файла внутри исполняемого файла в открытом виде (сигнатурный поиск по "MZ" найдет 2 штуки) для некоторых антивирусов может показаться странным, да и исследователи программ увидят это дело. Опять же exe-щник меньше будет

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Загрузка виртуальной DLL из exe
СообщениеДобавлено: Вт окт 29, 2013 1:15 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1709
Откуда: Алматы
Благодарил (а): 16 раз.
Поблагодарили: 46 раз.
Пункты репутации: 5
если паковать, то не возникнет ли проблемы с самим ехешником, если он тоже потом будет запакован? всмысле длл запакована, прикручена к ехе, и тут еще сам ехе запакован?

и даст ли вообще запаковаться upx ехешнику, если в нем будет что-то запакованное? (помница делал инсталлятор, и в нем запакованные ехе проекта. поскольку там еще немного кода этой самой установки и проверки обновлений, думал сверху еще запаковать - однако не дает :) пишет что не может быть запакован. плохо... хотелось бы все-таки запаковать еще раз для шифрования всяких текстовых строк, которые видно в незапакованном виде, которые можно изменить в блокноте.)

MrF, так указания этого размера требуется для создания алокейт мемори, в который потом будет вписана распакованная библиотека. если этого места не хватит - то будет ошибка, поэтому придется по созданию проекта вписывать размер библиотеки в распакованном виде. может быть запакованное PBшными средствами и можно как-то получить исходный размер, однако тут предполагается наличие и других запаковщиков - предусмотреть все варианты не предоставляется возможным. например мой bz2 - там так и пишут, что размер распакованного файла типа не известен
Код:
1
Because the compression ratio of the compressed data cannot be known in advance, there is no easy way to guarantee that the output buffer will be big enough.


можно конечно забабахать с запасом в алокет мемори 10 гигабайт - там точно не ошибешься, однако это же не наш метод :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Загрузка виртуальной DLL из exe
СообщениеДобавлено: Вт окт 29, 2013 4:07 pm 
Не в сети
профессор

Зарегистрирован: Вс июн 10, 2012 8:18 am
Сообщений: 1294
Благодарил (а): 60 раз.
Поблагодарили: 49 раз.
Пункты репутации: 14
SereZa писал(а):
если паковать, то не возникнет ли проблемы с самим ехешником, если он тоже потом будет запакован? всмысле длл запакована, прикручена к ехе, и тут еще сам ехе запакован?

Не возникнут. jpg, png - тоже сжатые файлы.

SereZa писал(а):
предусмотреть все варианты не предоставляется возможным

Ну тогда можно, при упаковке, размер файла записывать в первые 4 байта, а дальше уже записывать упакованное тело длл.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Загрузка виртуальной DLL из exe
СообщениеДобавлено: Пт мар 21, 2014 10:11 am 
Не в сети
ассистент

Зарегистрирован: Вт ноя 05, 2013 1:29 pm
Сообщений: 16
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
GetModuleHandle() легко правится в LDR_DATA_TABLE_ENTRY даже при таком загрузчике.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Загрузка виртуальной DLL из exe
СообщениеДобавлено: Сб мар 22, 2014 8:10 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
d33n вы обчем, уважаемый

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Загрузка виртуальной DLL из exe
СообщениеДобавлено: Вс мар 23, 2014 11:45 am 
Не в сети
ассистент

Зарегистрирован: Вт ноя 05, 2013 1:29 pm
Сообщений: 16
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Многие длл полузуют свои ресурсы из секции ресурсов: иконки, картинки, диалоги С твоим загрузчиком они жестоко обломаются. Чтобы исправить это и не переписывать все заново я посоветовал тебе сделать запись в LDR_DATA_TABLE_ENTRY имено оттуда берут адрес длл апи функции
И вобще инде правильно сказал
Цитата:
Так в том и дело, что у вас не загрузка, а простое проецирование, настройка импорта и фиксапов. Помимо этого в нтлдр есть есчо много всяких разных плюшек. GetModuleHandle() для вашего модуля не будет работать. Нотифи доставляться при создании тредов также не будет. Импорт бывает разный, также и модуль более сложный, чем пара директорий, например как же вы забыли про директорию конфигурации..


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Загрузка виртуальной DLL из exe
СообщениеДобавлено: Вс мар 23, 2014 12:07 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
d33n писал(а):
И вобще инде правильно сказал

Ах вот в чем дело, да Индя правильно сказал, но к сожалению не предоставил ни одной строчки кода как в общем-то и вы
Языком трясти, не сарай мести (с) старая поговорка

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re:
СообщениеДобавлено: Сб май 31, 2014 9:29 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Indy писал(а):
Помимо этого в нтлдр есть есчо много всяких разных плюшек. GetModuleHandle() для вашего модуля не будет работать. Нотифи доставляться при создании тредов также не будет. Импорт бывает разный, также и модуль более сложный, чем пара директорий, например как же вы забыли про директорию конфигурации, где /safeseh :lol:
Цитата:
Что означает ручная настройка импорта?


Индя, расскажи если владеешь, как рсурсы добыть??

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Загрузка виртуальной DLL из exe
СообщениеДобавлено: Вс июн 01, 2014 9:24 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
pablov, Инди забаненый :lol:

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Загрузка виртуальной DLL из exe
СообщениеДобавлено: Пт июн 13, 2014 3:38 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Никита Однороб писал(а):
pablov, Инди забаненый :lol:

Ну и чего тут веселово, здря забанили

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Загрузка виртуальной DLL из exe
СообщениеДобавлено: Пн июн 26, 2017 5:49 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1709
Откуда: Алматы
Благодарил (а): 16 раз.
Поблагодарили: 46 раз.
Пункты репутации: 5
не понимаю я что он от меня хочет. эти долбанные дополнительные бассдллки требуют чтоб рядом с ехешником валялся оригинальный басс.длл. почему они не могут читать свои нужные команды из виртуальной библиотеки? вроде получилось то что мне надо - конвертирование, но что теперь рядом с ехе файлом басс.длл таскать чтоль? подразумевается что ехешник один и типа портабельный. создавать рядом с собой еще один файл не айс совсем... хочется чтоб все внутри было спрятано. как правильно заимпортировать чтоб из тела ехе читалось? думал наконец то отступил сраный творческий кризис - попрограмлю... а тут второй день сижу в унынии блин застрявши в одном месте.


Вложения:
bassimp.zip [145.99 KiB]
Скачиваний: 45
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Загрузка виртуальной DLL из exe
СообщениеДобавлено: Вт июн 27, 2017 1:03 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 648
Благодарил (а): 2 раз.
Поблагодарили: 34 раз.
Пункты репутации: 9
SereZa писал(а):
не понимаю я что он от меня хочет. эти долбанные дополнительные бассдллки требуют чтоб рядом с ехешником валялся оригинальный басс.длл. почему они не могут читать свои нужные команды из виртуальной библиотеки? вроде получилось то что мне надо - конвертирование, но что теперь рядом с ехе файлом басс.длл таскать чтоль? подразумевается что ехешник один и типа портабельный. создавать рядом с собой еще один файл не айс совсем... хочется чтоб все внутри было спрятано. как правильно заимпортировать чтоб из тела ехе читалось? думал наконец то отступил сраный творческий кризис - попрограмлю... а тут второй день сижу в унынии блин застрявши в одном месте.

Да походу собственно действительно нужно чтобы все в памяти было чтобы из проги в нужную функцию обратится.
И тут походу или сразу длл суёшь в прогу и она автоматом грузится в память(причём скорее целиком,то бишь тебе нужно пару функций из этой длл а она автоматом занимает в памяти весь свой ресурс в 150 функций).
Или как минимум 2 варианта.
1.)Собственно эту длл перевисти с помощью проги в статическую либу.
2.)Расковырять её создав обычную функцию для компиляции в впроге.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 57 ]  На страницу Пред.  1, 2, 3, 4

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB