Встроить переменную окружения в билд

Версия Minecraft
1.12.2
API
Forge
17
3
1
Натолкнула меня на эту мысль функция в IDE, где можно в настройках таска build указать переменные окружения, и в build.gradle их можно использовать во время билда. А можно ли как-то в самом build.gradle определить эти переменные окружения, и использовать их в моде? Просто у меня есть данные, которые я бы не хотел явно прописывать в коде, обычно для этого используют env в других языках. Можно ли такое сделать в билде, чтобы после сборки мода, в нем постоянно были определены эти переменные окружения?
 
Последнее редактирование:
Решение
Гугли "Obfuscate Strings in Java", их довольно много разных.

Лучше скажи какого рода инфу ты хранишь. Если это что-то типа подключения к базе, то скажу сразу - никто не подключается к БД с клиента.

tox1cozZ

aka Agravaine
8,455
598
2,892
Только вот в dev среде у тебя меняться не будет. Поэтому в коде укажи dev значение и в build.gradle заменяй его на нужное для собранного мода.
 
17
3
1

[SOLVED] Mod version control stuff - Modification Development - Minecraft Mods - Mapping and Modding: Java Edition - Minecraft Forum - Minecraft Forum

I'm trying to make my mod have a dynamic versioning system where I specify the verison in one place and every other place that needs it accesses it form ther...
www.minecraftforum.net
www.minecraftforum.net
Только вот в dev среде у тебя меняться не будет. Поэтому в коде укажи dev значение и в build.gradle заменяй его на нужное для собранного мода.
1623219107392.png
Насколько я понял, если применить этот способ, то при сборке java-классов, он просто заменит все строки "@VERSION@" на строку, указанную в gradle.properties под ключём mod_version. Но на выходе, это ничем не будет отличаться, если вручную прописать это значение в коде. Проверить это у меня пока нет возможности, пока просто предполагаю.

Расскажу для чего мне вообще это нужно. Недавно я узнал, что шифрование кода у java-компилятора очень слабое. Существуют декомпиляторы, с помощью которых можно посмотреть почти весь исходный код закомпилированного java-класса. Далеко ходить не будем, один из декомпиляторов даже встроен в IntelliJ IDEA, и открыв любой мод хоть WinRar'ом, можно просмотреть код java-классов с помощью этой IDE.

Возьмем в пример язык PHP. Напрямую прописывать в коде какие-то приватные данные там не принято, и для этого, все подобные данные выносятся в отдельный файл .env, а php уже из этого файла читает значения и определяет их в environment variables среды php. А получить их в коде можно функцией getenv();

Как и в других языках, в джаве также можно определять и считывать эти переменные среды. Моя цель, определить эти переменные на этапе сборки, и чтобы в коде напрямую их нельзя было посмотреть, так как данные будут получаться методом System.getenv();
 
Последнее редактирование:

tox1cozZ

aka Agravaine
8,455
598
2,892
Накинь обфускатор, который шифрует строки.
Если ты это делаешь для защиты, то смысла особого нет, эти все переменные при желании можно будет достать всё равно.
Если же тебе нужно чтобы в среде разработки у тебя были одни значения, а в продакшене другие - юзай обычные конфиги.

Это вообще не то. Это переменные окружения, которые задаются в операционке.
 

tox1cozZ

aka Agravaine
8,455
598
2,892
Гугли "Obfuscate Strings in Java", их довольно много разных.

Лучше скажи какого рода инфу ты хранишь. Если это что-то типа подключения к базе, то скажу сразу - никто не подключается к БД с клиента.
 

tox1cozZ

aka Agravaine
8,455
598
2,892
Нельзя такие данные хранить на клиенте. Категорически. Никакие шифрования и обфускации не помогут.
Исключительно на серверной стороне.
Алгоритм прост: клиент шлет пакет серверу, на сервере уже выполняются нужные действия (подключения к БД, использование телеграма и тд), сервер отправляет полученные данные (или результат выполнения действий) клиенту.
 
341
14
113
Я не профессионал, но более чем уверен, что человек пишет стиллер на базе решений с Гита, которые в последние месяцы стали появляться там, как грибы(а некоторые даже и с интеграцией в Майн(no fools)). Программка парсит ваши аккаунты и отсылает всякими вебхуками злоумышленнику в Телегу/на хост.
Для этого он хочет обфусцировать код, скрыть важные переменные, чтобы пользователи не откопали функционал зловреда и, упаси Боже, не вынесли ключики API.
Возможно, я уже переиграл в детектива двумями тредами ниже, но при комбинации слов "скрыть-обфускация-телеграм-бот", произнесенной новорегом, приходит на ум именно такое.
И если на сервере ещё как-то можно понять интеграцию с ботом, мол, рассылает инфу по типу "роздача на сповне, идите и зоберите стак грязи" или "игрок Васян228Turbo2014 присоединился к клану", то тут бот явно будет отправлять какие-то клиентские данные ДО захода на сервер, а это... Такими темпами скоро спросят, как расшифровывать пароли в Хроме на программном уровне без ключа администратора.
Врубайте фаервол, будет Вам счастье.
 
Последнее редактирование:
17
3
1
Я не профессионал, но более чем уверен, что человек пишет стиллер на базе решений с Гита, которые в последние месяцы стали появляться там, как грибы(а некоторые даже и с интеграцией в Майн(no fools)). Программка парсит ваши аккаунты и отсылает всякими вебхуками злоумышленнику в Телегу/на хост.
Для этого он хочет обфусцировать код, скрыть важные переменные, чтобы пользователи не откопали функционал зловреда и, упаси Боже, не вынесли ключики API.
Возможно, я уже переиграл в детектива двумями тредами ниже, но при комбинации слов "скрыть-обфускация-телеграм-бот", произнесенной новорегом, приходит на ум именно такое.
И если на сервере ещё как-то можно понять интеграцию с ботом, мол, рассылает инфу по типу "роздача на сповне, идите и зоберите стак грязи" или "игрок Васян228Turbo2014 присоединился к клану", то тут бот явно будет отправлять какие-то клиентские данные ДО захода на сервер, а это... Такими темпами скоро спросят, как расшифровывать пароли в Хроме на программном уровне без ключа администратора.
Врубайте фаервол, будет Вам счастье.
Фактических доказательств это опровергнуть у меня нет, как и у вас доказательств моей причастности к этому. Могу просто сказать, что пишу мод для одного рпг сервера, а телеграм использую для оповещения о событиях на сервере, когда аккаунт находится в афк. Обфускация мне нужна для того, чтобы человек, разбирающийся в телеграм ботах не смог прикрутить моего бота себе, и не посылать несанкционированных сообщений пользователям. Хотел использовать одного бота, но теперь понимаю, что это плохая идея. Сделаю чтобы каждый пользователь мода создал своего бота и ввел в конфигах токен и свой chat id. Но верить мне или нет - дело ваше.
 
Сверху