Форум программистов, компьютерный форум, киберфорум
Delphi: FireMonkey
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Артемида1996
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 219
RAD XE3+

Как в FireMonkey (под Android) подключить динамическую библиотеку?

06.04.2025, 19:06. Показов 1613. Ответов 15

Студворк — интернет-сервис помощи студентам
Пытаюсь динамически подключить динамическую библиотеку в Android:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm1.Button1Click(Sender: TObject);
var
I : Integer;
SoName : THandle;
EnterPoint : function(X, Y : Integer) : Integer;
begin
SoName := LoadLibrary('/storage/emulated/0/Android/data/com.embarcadero.PilotLibrary/files/libTestLibrary.so');
if SoName <> 0 then
begin
ShowMessage('All right');
EnterPoint := GetProcAddress(SoName, 'EnterPoint');
I := EnterPoint(3, 5);
Label1.Text := IntToStr(I);
end
else
ShowMessage('Something going wrong');
end;
Однако, при попытке запуска, у меня лишь выскакивает сообщение Something going wrong, то есть библиотека не была подключена. Вопрос: в чем тут дело и как это фиксить?
Алсо, проект самой библиотеки компилирую нажатием правой кнопки мыши на libTestLibrary и выбором в выпадающем меню пункта Compile, если что.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.04.2025, 19:06
Ответы с готовыми решениями:

Открыть HTML в Webbrowser Firemonkey Android
Возможно ли открыть html файл который находиться на устройстве через webbrowser или любой другой...

Судоку на Android / Delphi: FireMonkey
Пишу свое первое приложение на Андроид заполняю таблицу с текстового файла, что бы значение были...

Вывод данных, StringGrid, Grid, Firemonkey, Android
Здравствуйте. У меня такой вопрос. Как мне из grid (или stringgrid) при нажатии на определенную...

15
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,656
Записей в блоге: 21
06.04.2025, 22:27
файлы к проекту загружаются через Project - Deployment
Remote Path = .\assets\internal соответствует TPath.GetHomePath
ну и нужно учитывать:
-Архитектуру процессора (ABI).
-Пути загрузки.
-Ограничения безопасности Android.
-Требования Google Play.
0
 Аватар для Артемида1996
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 219
06.04.2025, 22:29  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
файлы к проекту загружаются через Project - Deployment
Remote Path = .\assets\internal соответствует TPath.GetHomePath
Подождите, а если я хочу чтобы приложение грузило библиотеку с сервера, а только потом уже подключало?
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,656
Записей в блоге: 21
06.04.2025, 22:33
никакая безопасность не даст вам загрузить в систему безопасное приложение, а потом к нему вредоносную библиотеку
так что в лучшем случае - скриптовые библиотеки
0
 Аватар для Артемида1996
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 219
06.04.2025, 22:44  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
никакая безопасность не даст вам загрузить в систему безопасное приложение, а потом к нему вредоносную библиотеку
Да почему сразу вредоносную-то? Допустим, я доработала некий новый функционал, но не хочу обновлять приложение в самом магазине, просто добавлю новый функционал в динамическую библиотеку и даю приложению команду эту библиотеку загрузить и подключить.
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,656
Записей в блоге: 21
06.04.2025, 22:48
всем известно, что если написать "клянусь, мое ПО не вредоносное" - при загрузке в Гугл Плей, то он сразу пропускает все проверки
2
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,330
06.04.2025, 22:57
Цитата Сообщение от Артемида1996 Посмотреть сообщение
просто добавлю новый функционал в динамическую библиотеку и даю приложению команду эту библиотеку загрузить и подключить.
Это у вас она не вредоносная. Но у многих нехороших граждан сразу возникнет соблазн и сразу воспользуются этим.
0
 Аватар для Артемида1996
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 219
07.04.2025, 17:23  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
Это у вас она не вредоносная. Но у многих нехороших граждан сразу возникнет соблазн и сразу воспользуются этим.
Как они это сделают, хотела бы я знать....

Добавлено через 29 минут
Цитата Сообщение от krapotkin Посмотреть сообщение
всем известно, что если написать "клянусь, мое ПО не вредоносное" - при загрузке в Гугл Плей, то он сразу пропускает все проверки
Хорошо, ну а насчет вот этого вашего рецепта:
Цитата Сообщение от krapotkin Посмотреть сообщение
файлы к проекту загружаются через Project - Deployment
Remote Path = .\assets\internal соответствует TPath.GetHomePath
Я так и сделала. Добавила файл .so, переписала код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.Button1Click(Sender: TObject);
var
I : Integer;
PathToDll : String;
SoName : THandle;
EnterPoint : function(X, Y : Integer) : Integer;
begin
PathToDll := TPath.GetHomePath + 'libTestLibrary.so';
SoName := LoadLibrary(PChar(PathToDll));
if SoName <> 0 then
begin
ShowMessage('All right');
EnterPoint := GetProcAddress(SoName, 'EnterPoint');
I := EnterPoint(3, 5);
Label1.Text := IntToStr(I);
end
else
ShowMessage('Something going wrong');
end;
Но по-прежнему получаю только сообщение Something going wrong.
0
Модератор
4115 / 2347 / 807
Регистрация: 15.11.2015
Сообщений: 9,330
07.04.2025, 19:55
Цитата Сообщение от Артемида1996 Посмотреть сообщение
Как они это сделают, хотела бы я знать....
В смысле "как"? Точно так же, как и вы хотите - создадут приложение, которое будет в рантайме подгружать непроверенную библиотеку, а уже она сможет спокойно хозяйничать на чужом телефоне.
0
Модератор
10364 / 5651 / 3397
Регистрация: 17.08.2012
Сообщений: 17,246
09.04.2025, 20:47
Артемида1996, небольшое пояснение. Ваша библиотека, например, на сервисе Google Play (как, в общем-то, и где угодно в общем доступе) очень быстро сможет стать вредоносной, если Вашу программу будет хоть кто-то скачивать. В неё будет внедрён бесчеловечными кулхацкерами какой-нибудь зловред с целью личного обогащения. Механизмов целая гора, начиная с банальных rope и dll injection, или чего-нибудь потяжелее, кончая комбинациями этого дела с новомодными вызовами встроенных в ОС вполне легитимных функций в личных целях. В этом случае, если программа не сильно популярна, Вам, возможно, удастся обнаружить подлог, с помощью мониторинга содержимого выложенной в общий доступ dll. А уж если Ваша программа снискает хоть какую-то популярность, то Вы даже и не заметите, что Вы участвуете в чьём-то обогащении, поскольку обогащаемые позаботятся, чтобы по Вашему запросу Вам приходила именно та dll, которую Вы в последний раз выложили.

Казалось бы, вообще говоря, по идее, вроде бы, как ожидается, ну прям вот так хочется, первым объектом атаки должна быть сама Ваша программа. Но - dll заразить легче и полезнее, чем, к примеру, apk или exe, а хитропопость кулхацкеров никто не отменял.
0
 Аватар для Артемида1996
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 219
12.04.2025, 17:55  [ТС]
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Артемида1996, небольшое пояснение. ...
Как они это сделают, если скачивания и загрузку DLL полностью контролирую я? И элеметарно скачивает библиотеку приложение оттуда, откуда я ему укажу?

Добавлено через 42 секунды
И да, я так и не получила ответ krapotkin, на мой последний к нему вопрос:
Цитата Сообщение от Артемида1996 Посмотреть сообщение
Я так и сделала. Добавила файл .so, переписала код:
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,656
Записей в блоге: 21
12.04.2025, 21:19
я с самого начала написал, что никто не даст исполнить левый код
и потом несколько постов - почему

пора просто передумать
или переехать на скриптовый язык
0
13.04.2025, 00:43

Не по теме:

Цитата Сообщение от Артемида1996 Посмотреть сообщение
Как они это сделают, если скачивания и загрузку DLL полностью контролирую я?
Вы работаете непосредственно в серверном помещении за служебным терминалом, где крутится , к примеру, Google Play? Если это не так, то я бы на Вашем месте не был бы так уверен. Да и за упомянутым терминалом тоже был бы уверен не на все 100%.

Например, MITM-атака на SSL Вашего канала связи, также известная как атака HTTPS... И Вы будете продолжать считать, что на сервере Ваша информация. Ну, может быть, будет немножко помедленнее скорость связи. От MITM, оттого, что сервер далеко, или оттого, что Роскомнадзор лютует... Кто ж знает...

Хотя, в принципе, беспокоиться, скорее всего, незачем: это злодеяние (подмена информации на Вашем сервере и хранение Вашей информации на злодейском сервере) весьма хлопотно, и имеет смысл, если Ваша dll, заботливо заражённая любителем чистогана, заразит ну очень много компьютеров.

0
 Аватар для Артемида1996
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 219
13.04.2025, 02:50  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
я с самого начала написал, что никто не даст исполнить левый код
и потом несколько постов - почему
Вы не объяснили как добавить в проект so-библиотеку. Чтобы она хотя бы статически запускалась.
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,656
Записей в блоге: 21
13.04.2025, 08:17
сам не добавлял, но на офсайте есть это. андроид там упомянут
https://docwiki.embarcadero.co... es_(Delphi)
если не взлетит, рекомендую спрсить на другом форуме, посвященному специально и отдельно fire-monkey
0
 Аватар для Артемида1996
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 219
13.04.2025, 18:28  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
сам не добавлял,
Вы же сами создавали динамическую библиотеку, как раз с расширением .so
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.04.2025, 18:28
Помогаю со студенческими работами здесь

Как узнать длительность видео (QuickTime) в Delphi XE2 FireMonkey?
Помогите! Нужно банально узнать длительность ролика MOV Проект сделан на FireMonkey Спс

Как не допустить одновременного запуска двух копий FireMonkey приложения?
Подскажите пожалуйста!)

Ни как не могу найти FireMonkey.
Помогите найти firemonkey. Я наверное весь инет перерыл, что то не могу найти его. У меня еще есть...

Как перенести ActiveX в FireMonkey Desktop Application?
Вообщем, история печальная. Сделал большой проект Firemonkey Desktop Application в Delphi Xe5,...

Как добавить сокеты в firemonkey
как добавить сокеты в firemonkey? Компоненты клиент сокет и сервер сокет


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru