RU Русский
RU Русский
EN English
Войти
RU Русский
RU Русский
EN English
Возможности Тарифы Как начать Авторизация
Обфускация и нативная защита

Мы предлагаем комплексные решения для защиты Fabric модов, MCP клиентов, а также других Java приложений.

RottenEncryption.java
// шифруем данные...
> string объекты зашифрованы.
> boolean объекты мутированы.
> числовые значения зашифрованы.
Result: успешно!
RottenMain.java
// RottenGuard консоль
[Loading] конфигурация загружена успешно!
[Environment] обнаружена среда Fabric.
[Run] начало обфускации, применяю трансформеры кода...
[Result] выходной Jar: client_obf.jar
[Bye-bye] завершение сессии...
RottenRemapper.java
// ремаппинг проекта:
AutoGApple -> RottenObject_釗貔轜絖峖熞
ModuleRegister -> RottenObject_蠵嶪暝鵏藓皙勇跶
MouseMixin -> RottenObject_虑忕甓嵔鉇萧洏灢
Result: иерархия проекта перезаписана!
Демонстрация обфускации

Взгляните на результат

Пример итогового байт-кода после применения наших трансформеров защиты.

RottenObject_裿薡鋏萳籸搃优.java
Удерживайте курсор внутри для прокрутки кода

package RottenGuard.tech;

import java.awt.Color;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.class_1297;
import net.minecraft.class_1309;
import net.minecraft.class_243;
import net.minecraft.class_4587;
import net.minecraft.class_4588;
import net.minecraft.class_4597;

@RottenObject_奶檼黀蜒潬踖罋("Oops, the class is rotten! | Join us - https://rottenguard.tech")
public class RottenObject_裿薡鋏萳籸搃优 extends RottenObject_粉譲傃薕鲱逿悲 implements RottenObject_獇侥覔諌鸤鑂吷逌 {
    @ZWSPNUL 
    public static RottenObject_裿薡鋏萳籸搃优 RottenObject_狰鹗溷鐶娖賳檁;
    @ZWSPNUL 
    public RottenObject_廑亽泩糌映趫豼 RottenObject_釺怛孃韪鯹曡為;
    @ZWSPNUL 
    public RottenObject_櫵鸰亪由浟髺師 RottenObject_潳佮枵镩筄;
    @ZWSPNUL 
    public RottenObject_繐耉嫙繪辭蔔 RottenObject_樥喱姎獑釉咼遐;
    @ZWSPNUL 
    public RottenObject_嘙悬迵翿趂盱已 RottenObject_鰥躒尾溳诪熥謯;
    @ZWSPNUL 
    public RottenObject_鯚莆谮碉砳蒝鎭愚 RottenObject_孄乪櫣鿊脃屸猰柧;
    @ZWSPNUL 
    public RottenObject_鯚莆谮碉砳蒝鎭愚 RottenObject_螉妝偌恆禣憳汴;
    @ZWSPNUL 
    public RottenObject_鯚莆谮碉砳蒝鎭愚 RottenObject_笙溱键鄍陊郌漄捸;
    @ZWSPNUL 
    public class_243 RottenObject_柑墿匸栒擣寥逅;
    @ZWSPNUL 
    public class_1309 RottenObject_跌旝莃蚔戧;
    @ZWSPNUL 
    public float RottenObject_焊湗頪嵹恭鑜電害;
    @ZWSPNUL 
    public float RottenObject_鐡妿隐啻说願邐笚;
    @ZWSPNUL 
    public class_1297 RottenObject_愁歭鲆踉脱;
    @ZWSPNUL 
    public final List<RottenObject_鎼襰鳷汖壆房> RottenObject_瘍郹耫眖罆炄;
    @ZWSPNUL 
    public float RottenObject_盥旺鱗疆観挿瀾;
    @ZWSPNUL 
    public long RottenObject_摲淓絺麚鿻扨戝螜;
    @ZWSPNUL 
    public static final float RottenObject_鶜禩鱽厥觞磣梍 = c<invokedynamic>();
    @ZWSPNUL 
    public static final float RottenObject_鮫厳霬黂鵲徧 = c<invokedynamic>();
    @ZWSPNUL 
    public static final String[] RottenObject_雽楔營繿譿;
    @ZWSPNUL 
    public static int RottenObject_磇賣醎柖鳔捏;
    @ZWSPNUL 
    public static int RottenObject_戡徕鉍娇藴蜐;
    @ZWSPNUL 
    public static int RottenObject_縔晕脾櫙甡軔尐;

    public static RottenObject_裿薡鋏萳籸搃优 RottenObject_秗輡火叶慪() {
        return RottenObject_肰豨虼離侘宣();
    }

    @ZWSPNUL 
    public RottenObject_裿薡鋏萳籸搃优() {
        if (c<invokedynamic>() != c<invokedynamic>()) {
            super(RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()), RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()), RottenObject_鍵欆爝婵怫鸄栕.RottenObject_菞袄稃靆芌问澙);
            this.RottenObject_釺怛孃韪鯹曡為 = (new RottenObject_帔趌艒次途憯()).RottenObject_力儈岶忔饐竼褈(c<invokedynamic>()).RottenObject_軚琱瞰炁澱(c<invokedynamic>());
            this.RottenObject_潳佮枵镩筄 = new RottenObject_櫵鸰亪由浟髺師();
            RottenObject_繐耉嫙繪辭蔔 var10001 = new RottenObject_繐耉嫙繪辭蔔(RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()), RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()));
            String[] var10002 = new String[c<invokedynamic>()];
            var10002[RottenObject_濅觮鬑标鞔(c<invokedynamic>())] = RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>());
            var10002[RottenObject_濅觮鬑标鞔(c<invokedynamic>())] = RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>());
            var10002[c<invokedynamic>()] = RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>());
            var10002[c<invokedynamic>()] = RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>());
            var10002[c<invokedynamic>()] = RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>());
            this.RottenObject_樥喱姎獑釉咼遐 = var10001.RottenObject_燃谖坕珆乥抶堏練(var10002).RottenObject_壠嬕浛肔籨峷稸(RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()));
            this.RottenObject_鰥躒尾溳诪熥謯 = (new RottenObject_嘙悬迵翿趂盱已(RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()), RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()))).RottenObject_玚騨蓢猦呸邪橃枕(c<invokedynamic>(), c<invokedynamic>()).RottenObject_暅楶甅昺弾咳(() -> this.RottenObject_睳焯佀昹陎瀩());
            this.RottenObject_孄乪櫣鿊脃屸猰柧 = (new RottenObject_鯚莆谮碉砳蒝鎭愚(RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()), RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()))).RottenObject_埾嗡潡跒妒竑((new Color(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>())).getRGB());
            this.RottenObject_螉妝偌恆禣憳汴 = (new RottenObject_鯚莆谮碉砳蒝鎭愚(RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()), RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()))).RottenObject_埾嗡潡跒妒竑((new Color(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>())).getRGB());
            this.RottenObject_笙溱键鄍陊郌漄捸 = (new RottenObject_鯚莆谮碉砳蒝鎭愚(RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()), RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()))).RottenObject_埾嗡潡跒妒竑((new Color(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>())).getRGB()).RottenObject_鴻鑣璿曘娾澔雎孕(() -> this.RottenObject_樋啔挡郶栎京私騣());
            this.RottenObject_柑墿匸栒擣寥逅 = null;
            this.RottenObject_跌旝莃蚔戧 = null;
            this.RottenObject_焊湗頪嵹恭鑜電害 = c<invokedynamic>();
            this.RottenObject_鐡妿隐啻说願邐笚 = c<invokedynamic>();
            this.RottenObject_愁歭鲆踉脱 = null;
            this.RottenObject_瘍郹耫眖罆炄 = new ArrayList();
            this.RottenObject_盥旺鱗疆観挿瀾 = c<invokedynamic>();
            this.RottenObject_摲淓絺麚鿻扨戝螜 = System.currentTimeMillis();
            RottenObject_狰鹗溷鐶娖賳檁 = this;
            this.RottenObject_鰥躒尾溳诪熥謯.RottenObject_麌幓疳岿漁袾閕俑(c<invokedynamic>());
            RottenObject_溹澝騈桫祼魪牓嚭[] var3 = new RottenObject_溹澝騈桫祼魪牓嚭[c<invokedynamic>()];
            var3[RottenObject_濅觮鬑标鞔(c<invokedynamic>())] = this.RottenObject_樥喱姎獑釉咼遐;
            var3[RottenObject_濅觮鬑标鞔(c<invokedynamic>())] = this.RottenObject_鰥躒尾溳诪熥謯;
            var3[c<invokedynamic>()] = this.RottenObject_孄乪櫣鿊脃屸猰柧;
            var3[c<invokedynamic>()] = this.RottenObject_螉妝偌恆禣憳汴;
            var3[c<invokedynamic>()] = this.RottenObject_笙溱键鄍陊郌漄捸;
            this.settings(var3);
        } else {
            while(true) {
                try {
                    try {
                        throw new RuntimeException();
                    } catch (NullPointerException var1) {
                        throw new Error();
                    }
                } catch (Throwable var2) {
                }
            }
        }
    }

    public float RottenObject_鞖翸缱攉扥栞() {
        return this.RottenObject_哫挧黼魞亇爿试郴();
    }

    @RottenObject_糹笨鋧縙羈
    @ZWSPNUL 
    public void RottenObject_迗祮陳緯闗業鏝(RottenObject_悊鑁曻距猹 var1) {
        if (c<invokedynamic>() == c<invokedynamic>()) {
            while(true) {
                try {
                    try {
                        throw new RuntimeException();
                    } catch (NullPointerException var18) {
                        throw new Error();
                    }
                } catch (Throwable var19) {
                }
            }
        } else {
            float var2 = this.RottenObject_鞖翸缱攉扥栞();
            class_1309 var3 = null;
            if (RottenObject_屇飨埾凂靃鸚嚔.RottenObject_盏珹燭桝餃鉴判狍() != null && RottenObject_屇飨埾凂靃鸚嚔.RottenObject_盏珹燭桝餃鉴判狍().RottenObject_虉鹘玝蹺跏窍褘瞽()) {
                var3 = RottenObject_屇飨埾凂靃鸚嚔.RottenObject_哬舐郓熩帨;
            }

            if (var3 == null) {
                this.RottenObject_柑墿匸栒擣寥逅 = null;
                this.RottenObject_跌旝莃蚔戧 = null;
                this.RottenObject_釺怛孃韪鯹曡為.RottenObject_砠鵱坻鉥鵗(RottenObject_諰郔皢鸆倏昽.RottenObject_廕珁俷圎杲艢韜劽);
                RottenObject_褷曳雜执梨醴酙.RottenObject_碭犖鞢簛鳡嚭煃泑();
            } else {
                this.RottenObject_釺怛孃韪鯹曡為.RottenObject_砠鵱坻鉥鵗(RottenObject_諰郔皢鸆倏昽.RottenObject_鍩洹踐声盕恙苎笎);
                float var4 = this.RottenObject_釺怛孃韪鯹曡為.RottenObject_鶺般匁椬坜皅().floatValue();
                if (!(var4 <= c<invokedynamic>())) {
                    this.RottenObject_焊湗頪嵹恭鑜電害 += c<invokedynamic>() * var2;
                    if (this.RottenObject_焊湗頪嵹恭鑜電害 > c<invokedynamic>()) {
                        this.RottenObject_焊湗頪嵹恭鑜電害 = c<invokedynamic>();
                    }

                    float var5 = c<invokedynamic>() * var2;
                    this.RottenObject_鐡妿隐啻说願邐笚 = var3.field_6235 > 0 ? (float)var3.field_6235 / c<invokedynamic>() : Math.max(c<invokedynamic>(), this.RottenObject_鐡妿隐啻说願邐笚 - var5);
                    RottenObject_褷曳雜执梨醴酙.RottenObject_嵊饗窀儔髩霈鵆(var2);
                    if (this.RottenObject_樥喱姎獑釉咼遐.RottenObject_矯劒刽脁龎缉鈿(RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()))) {
                        this.RottenObject_竬暣嵤櫮槥(var1.RottenObject_衆遆躷猾夆鑖薊(), var3, var4);
                    } else {
                        class_4587 var6 = var1.RottenObject_衆遆躷猾夆鑖薊();
                        class_4597.class_4598 var7 = RottenObject_滹瘈靛吶鱩璡锉.method_22940().method_23000();
                        class_243 var8 = RottenObject_滹瘈靛吶鱩璡锉.field_1773.method_19418().method_71156();
                        float var9 = var1.RottenObject_榢饠髞樿衩();
                        class_243 var10 = var3.method_30950(var9);
                        if (this.RottenObject_跌旝莃蚔戧 == var3 && this.RottenObject_柑墿匸栒擣寥逅 != null) {
                            float var11 = Math.min(c<invokedynamic>(), var9 * c<invokedynamic>());
                            double var12 = var10.field_1352 - this.RottenObject_柑墿匸栒擣寥逅.field_1352;
                            double var14 = var10.field_1351 - this.RottenObject_柑墿匸栒擣寥逅.field_1351;
                            double var16 = var10.field_1350 - this.RottenObject_柑墿匸栒擣寥逅.field_1350;
                            this.RottenObject_柑墿匸栒擣寥逅 = new class_243(this.RottenObject_柑墿匸栒擣寥逅.field_1352 + var12 * (double)var11, this.RottenObject_柑墿匸栒擣寥逅.field_1351 + var14 * (double)var11, this.RottenObject_柑墿匸栒擣寥逅.field_1350 + var16 * (double)var11);
                        } else {
                            this.RottenObject_柑墿匸栒擣寥逅 = var10;
                            this.RottenObject_跌旝莃蚔戧 = var3;
                        }

                        var6.method_22903();
                        var6.method_22904(this.RottenObject_柑墿匸栒擣寥逅.field_1352 - var8.field_1352, this.RottenObject_柑墿匸栒擣寥逅.field_1351 - var8.field_1351, this.RottenObject_柑墿匸栒擣寥逅.field_1350 - var8.field_1350);
                        if (this.RottenObject_樥喱姎獑釉咼遐.RottenObject_矯劒刽脁龎缉鈿(RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()))) {
                            this.RottenObject_杊粹斵晶镔畎(var6, var7, var3, var4);
                        } else if (this.RottenObject_樥喱姎獑釉咼遐.RottenObject_矯劒刽脁龎缉鈿(RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()))) {
                            this.RottenObject_师罿翝繿萿偯秆(var6, var7, var3, var4);
                        } else if (this.RottenObject_樥喱姎獑釉咼遐.RottenObject_矯劒刽脁龎缉鈿(RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()))) {
                            this.RottenObject_枼挢栌榙氱荰堤柵(var6, var7, var3, var4, var2);
                        } else if (this.RottenObject_樥喱姎獑釉咼遐.RottenObject_矯劒刽脁龎缉鈿(RottenObject_儎暬汧伉早(c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>(), c<invokedynamic>()))) {
                            if (this.RottenObject_瘍郹耫眖罆炄.isEmpty() || this.RottenObject_愁歭鲆踉脱 != var3) {
                                this.RottenObject_卻匫镱褺塅咾瓕箕(var3);
                                this.RottenObject_愁歭鲆踉脱 = var3;
                            }

                            this.RottenObject_訸橂衝趇糁鲧(var6, var7, var3, var4, var2);
                        }

                        var7.method_22993();
                        var6.method_22909();
                    }
                }
            }
        }
    }

    public void RottenObject_竬暣嵤櫮槥(class_4587 var1, class_1309 var2, float var3) {
        this.RottenObject_氡奤鬚韖偙谍疡謯(var1, var2, var3);
    }

    public void RottenObject_枼挢栌榙氱荰堤柵(class_4587 var1, class_4597 var2, class_1309 var3, float var4, float var5) {
        this.RottenObject_棂蟣跟搘躩掸嫾(var1, var2, var3, var4, var5);
    }

    public void RottenObject_杊粹斵晶镔畎(class_4587 var1, class_4597 var2, class_1309 var3, float var4) {
        this.RottenObject_嵤鬽謸郙鞉(var1, var2, var3, var4);
    }

    public void RottenObject_师罿翝繿萿偯秆(class_4587 var1, class_4597 var2, class_1309 var3, float var4) {
        this.RottenObject_忖寵吷鵜瓰(var1, var2, var3, var4);
    }

    public void RottenObject_棷姶鑖盐过猼靄(class_4587 var1, class_4588 var2, RottenObject_駄阊掬瞜慩逮樱簵 var3, float var4, int var5) {
        this.RottenObject_忷觅褼影嗚峍料(var1, var2, var3, var4, var5);
    }

    public void RottenObject_卻匫镱褺塅咾瓕箕(class_1297 var1) {
        this.RottenObject_嬃衱鑜砣濅(var1);
    }

    public void RottenObject_訸橂衝趇糁鲧(class_4587 var1, class_4597 var2, class_1309 var3, float var4, float var5) {
        this.RottenObject_缢鐦鯬鵃咷(var1, var2, var3, var4, var5);
    }

    public int RottenObject_栬洵粘勉罴(int var1, float var2) {
        return this.RottenObject_吨蓴嘛鼥倂圯裯(var1, var2);
    }

    public int RottenObject_旁鱜莔毻偤黝(int var1, float var2) {
        return this.RottenObject_谒榚鯟樉彽礬擀(var1, var2);
    }

    public int RottenObject_擡弶轇婹淪蔵仪(int var1) {
        return this.RottenObject_腲礠歱綜吡蚻(var1);
    }

    public int RottenObject_闇鏼疏娴穣獚(int var1, int var2, float var3) {
        return this.RottenObject_梮爂凂獺傇(var1, var2, var3);
    }

    public int RottenObject_髢鿹栨悕诶(int var1, int var2) {
        return this.RottenObject_姆脠踙俗着蔠夾懱(var1, var2);
    }

    @ZWSPNUL 
    static {
        if (c<invokedynamic>() != c<invokedynamic>()) {
            RottenObject_雽楔營繿譿 = new String[c<invokedynamic>()];
        } else {
            while(true) {
                try {
                    try {
                        throw new RuntimeException();
                    } catch (NullPointerException var0) {
                        throw new Error();
                    }
                } catch (Throwable var1) {
                }
            }
        }
    }

    public static String RottenObject_儎暬汧伉早(String var0, String var1, String var2, String var3, String var4, int var5, int var6) {
        return RottenObject_澲樭碾莓鬍蟚(var0, var1, var2, var3, var4, var5, var6);
    }

    public static Boolean RottenObject_濅觮鬑标鞔(int var0) {
        return RottenObject_珙鈷糶鵃烡(var0);
    }
}
Архитектура защиты

Многоуровневая безопасность

Наша система превращает ваш исходный код в неприступный монолит, анализировать который становится экономически нецелесообразно.

Ренейминг

Искажение семантики кода. Классы, методы и поля превращаются в бессмысленный набор символов, нечитаемый для человека.

Шифрование

Изоляция констант и строк. Критически важные данные скрываются внутри байт-кода с помощью динамических вызовов.

Оптимизация

Нулевое влияние на FPS. Интеллектуальный подход к защите гарантирует, что производительность останется на максимальном уровне.

Запутывание потока

Внедрение ложных ветвлений и переходов, которые ломают логику работы автоматических декомпиляторов и анализаторов кода.

Мутация логики

Математическое искажение вычислений. Арифметические и логические операции усложняются с помощью непрозрачных предикатов.

Очистка метаданных

Удаление отладочной информации и любых "следов", которые могут помочь в реверс-инжиниринге вашего продукта.

Планы подписки

Выберите свой тариф

Гибкие решения как для малых, так и для крупных коммерческих проектов.

Месяц
Год

Лайт-пакет

Для проектов: Java приложения, моды, чит-клиенты
Входит в подписку:
  • Применение всех трансформеров кода обфускатора RottenGuard
  • Возможность отключить лишнее по вашему запросу
Выберите тип проекта:
Моды **
Моды **
Чит-клиенты
Java-приложение
Стоимость подписки: 700₽ / мес
Выбрать Лайт
* Стоимость обсуждается индивидуально.
** Только для модов. Чит-моды приравниваются к чит-клиентам.

Про-пакет

Для проектов: Моды, чит-клиенты
Входит в подписку:
  • Всё из пакета «Лайт»
  • Админ-панель и кастомизируемый лаунчер
  • Настроенная бд и авторизация клиента
  • Подключение домена к серверу и DDoS-защита
  • Бот-поддержка и сопровождение проекта
Выберите тип проекта:
Чит-клиенты
Чит-клиенты
Моды *
Стоимость подписки: 5000₽/единоразово + 1000₽/мес
Выбрать Про
* Только для модов. Чит-моды приравниваются к чит-клиентам.
** Стоимость обсуждается индивидуально.

Эксклюзив

Для проектов: Java-приложения *
Входит в подписку:
  • Персональная разработка лаунчера под ваш проект
  • Индивидуальное отношение к защите и дизайну
Ваш тип проекта:
Java-приложение
Java-приложение
Стоимость подписки: Персональная **
Связаться с нами
* Приложения Windows 10/11 любой другой категории (не моды/чит-клиенты).
** Стоимость обсуждается индивидуально.
Процесс работы

Как начать?

Всего несколько шагов отделяют вас от надёжной защиты.

01 5 минут

Написать в бота

Простое приветствие с указанием интересующей вас услуги в нашем боте поддержки.

02 30-40 минут

Обсуждение и вопросы

Расскажем интересующие вас моменты интеграции и начнем процесс сотрудничества.

03 5-10 минут

Оплата тарифа

Оплаченный тариф будет зачислен на ваш аккаунт.

04 5 минут

Настройка защиты

Вы можете гибко настроить процесс: исключить те или иные трансформеры RottenGuard, если есть желание.

05 20 минут

Проверка работы

Тестируем и убеждаемся, что защита работает корректно и не влияет на функционал.

06 5 минут

Обратная связь

При желании, вы всегда можете оставить нам отзыв в специальном чате.

Итог: быстрое подключение тарифа «Лайт-пакет»

Остальные тарифы требуют индивидуального обсуждения сроков и настройки.

Ответы на вопросы

Отвечаем на самые популярные вопросы о нашей защиты

Зачем нужна обфускация?
Обфускация необходима для предотвращения кражи и несанкционированного использования вашего исходного кода. Это гарантирует безопасность вашего проекта от злоумышленников и конкурентов, желающих испортить вам день.
Как сильно защита влияет на производительность?
Благодаря передовым методам оптимизации, наша обфускация практически не влияет на производительность. Вы можете быть уверены, что FPS вашего клиента или скорость работы приложения останутся на комфортном уровне.
Насколько сложно интегрировать клиент в лаунчер?
Процесс интеграции максимально прост. От вас потребуется лишь оплата и выбор стиля лаунчера. Если возникнут трудности, мы всегда готовы помочь.
С кем возможно сотрудничество?
Мы обеспечиваем защиту для любых версий Minecraft (Fabric, MCP клиенты и моды), а также для отдельных Java-приложений, разработанных под Windows 10/11.
Можно ли оплачивать анонимно?
Да, для обработки платежей задействована система, которая не раскрывает персональные данные клиента, ограничиваясь передачей исключительно информации о сумме транзакции.
Можно ли оплачивать, находясь не в России?
Безусловно. Данный и иные сопутствующие вопросы решаются в индивидуальном порядке. Мы предложим оптимальный вариант использования нашего продукта с учетом ваших обстоятельств.

Надежность – наш приоритет.

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