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

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

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

[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();
 
Последнее редактирование:
Накинь обфускатор, который шифрует строки.
Если ты это делаешь для защиты, то смысла особого нет, эти все переменные при желании можно будет достать всё равно.
Если же тебе нужно чтобы в среде разработки у тебя были одни значения, а в продакшене другие - юзай обычные конфиги.

Это вообще не то. Это переменные окружения, которые задаются в операционке.
 
Гугли "Obfuscate Strings in Java", их довольно много разных.

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