Почему 90% interface.u до сих пор без защиты?

I think the price is probably a major factor
 
так эт же логика функции а не точный код
Сообщение объединено:
Ну ии логику функции могут угадать и дать пример, но не восстановленный исходный код. GetINIString + Asc + RequestExit этот паттерн видно сразу, тут ИИ не нужен, Chr(85)=U — таблица ASCII, любой школьник знает. А теперь вопрос как назывались переменные в оригинале? Не value и checksum, а те что были до обфускации? Ну и ты в итоге не знаешь связей с другими функциями.
 
Последнее редактирование:
Тут ИИ не "угадывал" - я ему сказал посмотреть значения и как chr интерпретировать.
Код:
function CharacterHuma()                                                                                                                                                                                                                                      
    {                                                                                                                                                                                                                                                                       local string _13a, _096fb545, _3dae, _10ef5;                                                                                                                                                                                                              
        local int _310c4, i;                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                   
        _096fb545 = (Chr(_2833) $ Chr(_6df8)) $ Chr(_1db6);                                                                                                                                                                                                        
        _3dae = ((((((((Chr(_dd1a) $ Chr(_20ac)) $ Chr(_9140)) $ Chr(_68e2)) $ Chr(_20ac)) $ Chr(_9140)) $ Chr(_a5d0)) $ Chr(_80e7)) $ Chr(_80e7)) $ Chr(_9140);                                                                                                  
        _10ef5 = ((((Chr(_5ab56) $ Chr(_da125)) $ Chr(_260c3)) $ Chr(_90c8d)) $ Chr(_0fe12)) $ Chr(_90c8d);                                                                                                                                                        
        GetINIString(_096fb545, _3dae, _13a, _10ef5);                                                                                                                                                                                                              
        _310c4 = 0;                                                                                                                                                                                                                                                
        i = 0;                                                                                                                                                                                                                                                    
        J0xDF:                                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                   
        if(i < Len(_13a))                                                                                                                                                                                                                                          
        {                                                                                                                                                                                                                                                          
            _310c4 = _310c4 + Asc(Mid(_13a, i, 1));                                                                                                                                                                                                                
            i++;                                                                                                                                                                                                                                                  
            goto J0xDF;                                                                                                                                                                                                                                            
        }                                                                                                                                                                                                                                                          
        if(_310c4 != _4df64d54248)                                                                                                                                                                                                                                
        {                                                                                                                                                                                                                                                          
            RequestExit();                                                                                                                                                                                                                                        
        }                                                                                                                                                                                                                                                          
        return;                                                                                                                                                                                                                                                    
    }                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                   
    defaultproperties                                                                                                                                                                                                                                              
    {                                                                                                                                                                                                                                                              
        _855bc5114fe="Slideshow.Kamael_teaserquest.Frame_Text_0001"                                                                                                                                                                                                
        _2a4d6af871b="Slideshow.Kamael_teaserquest.Frame_Text_0002"                                                                                                                                                                                                
        _89ba9e37a4f="Slideshow.Kamael_teaserquest.Frame_Text_0003"                                                                                                                                                                                                
        _8c2b81e9ecf="Slideshow.Kamael_teaserquest.Frame_Text_0004"                                                                                                                                                                                                
      _9afe0668676="Slideshow.Kamael_teaserquest.Frame_Text_0008"                                                                                                                                                                                                    
      _340260d="TQ"                                                                                                                                                                                                                                                  
      _4df64d54248=437                                                                                                                                                                                                                                              
      _2833=85                                                                                                                                                                                                                                                      
      _6df8=82                                                                                                                                                                                                                                                      
      _1db6=76                                                                                                                                                                                                                                                      
      _dd1a=83                                                                                                                                                                                                                                                      
      _20ac=101                                                                                                                                                                                                                                                      
      _9140=114                                                                                                                                                                                                                                                      
      _68e2=118                                                                                                                                                                                                                                                      
      _a5d0=65                                                                                                                                                                                                                                                      
      _80e7=100                                                                                                                                                                                                                                                      
      _5ab56=108                                                                                                                                                                                                                                                    
      _da125=50                                                                                                                                                                                                                                                      
      _260c3=46                                                                                                                                                                                                                                                      
      _90c8d=105                                                                                                                                                                                                                                                    
      _0fe12=110                                                                                                                                                                                                                                                    
  } код обфусцирован. _096fb545 = (Chr(_2833) $ Chr(_6df8)) $ Chr(_1db6); Chr - Это символ, а дальше значение int можно глянуть в default properites. deobfucscate                                                                  




● Разобрал. Вся «обфускация» — это подмена строковых литералов на Chr(код), где сами коды спрятаны в defaultproperties под мусорными именами. Подставляем коды → символы → склеиваем.

  Таблица символов
  ┌────────┬─────┬────────┐
  │  Имя   │ int │ символ │
  ├────────┼─────┼────────┤
  │ _2833  │ 85  │ U      │
  ├────────┼─────┼────────┤
  │ _6df8  │ 82  │ R      │
  ├────────┼─────┼────────┤
  │ _1db6  │ 76  │ L      │
  ├────────┼─────┼────────┤
  │ _dd1a  │ 83  │ S      │
  ├────────┼─────┼────────┤
  │ _20ac  │ 101 │ e      │
  ├────────┼─────┼────────┤
  │ _9140  │ 114 │ r      │
  ├────────┼─────┼────────┤
  │ _68e2  │ 118 │ v      │
  ├────────┼─────┼────────┤
  │ _a5d0  │ 65  │ A      │
  ├────────┼─────┼────────┤
  │ _80e7  │ 100 │ d      │
  ├────────┼─────┼────────┤
  │ _5ab56 │ 108 │ l      │
  ├────────┼─────┼────────┤
  │ _da125 │ 50  │ 2      │
  ├────────┼─────┼────────┤
  │ _260c3 │ 46  │ .      │
  ├────────┼─────┼────────┤
  │ _90c8d │ 105 │ i      │
  ├────────┼─────┼────────┤
  │ _0fe12 │ 110 │ n      │
  └────────┴─────┴────────┘

  Раскрытие строк

  - _096fb545 = Chr(85)·Chr(82)·Chr(76) → "URL"
  - _3dae = S·e·r·v·e·r·A·d·d·r → "ServerAddr"
  - _10ef5 = l·2·.·i·n·i → "l2.ini"
  - _4df64d54248 = 437 (контрольная сумма)

  Деобфусцированный код

  function CharacterHuma()
  {
      local string value;
      local int    checksum, i;

      // Читаем [URL] ServerAddr из l2.ini
      GetINIString("URL", "ServerAddr", value, "l2.ini");

      // Сумма ASCII-кодов всех символов прочитанной строки
      checksum = 0;
      for (i = 0; i < Len(value); i++)
          checksum += Asc(Mid(value, i, 1));

      for (i = 0; i < Len(value); i++)
          checksum += Asc(Mid(value, i, 1));

      // Если строка не та, что ожидается — закрываем клиент
      if (checksum != 437)
          RequestExit();
  }

  Что код делает

  Это анти-тампер / привязка к серверу. Метка J0xDF с goto — это просто развёрнутый цикл while/for.

  1. Берёт из l2.ini секцию [URL], ключ ServerAddr.
  2. Складывает ASCII-коды всех байт этого значения.
  3. Если сумма ≠ 437, вызывает RequestExit() — закрывает игру.

  То есть клиент молча падает, если в l2.ini прописан «чужой» ServerAddr (любой, чья побайтовая сумма не равна 437). Защита слабая — проверяется только сумма байт, а не сама строка, так что под неё подходит множество строк-коллизий.

В чем поинт? не знаешь, ну сидишь и именуешь. Или как тут - ллм сообразит как назвать. Это не прям чтобы недели работы

И даже если не переименовывать - код запустится, после дефолтного восстановления от декомпила. Можно весь класс взять себе, поискать может какие зависимости есть и все. У тебя даже сразу будет защищенный кусок в твоем проекте
Хочешь модифицировать код потом - ебись с именованием или в таком виде.

Если ты хочешь сделать решение с защитой interface.u - ИМХО нужно ломать байткод и патчить vm
 
Последнее редактирование:
ну сидишь и именуешь
Вот именно. Логика восстанавливается через ии да. Но чтобы модифицировать этот код под себя, нужно вручную восстановить все переменные. А их в классе 50+. И связей между функциями сотни.
И ты получишь недели ручной работы, а если еще добавиь пару своих фишек может месяц ручной работы. И вот тут главное 90% людей даже не начнут это делать. Они просто возьмут чужой interface.u, увидят кракозябру и скажут да ну нафиг, проще с нуля написать. А это и есть цель обфускации. Не сделать код неуязвимым, а сделать его экономически невыгодным для воровства. Зачем тратить неделю на разбор чужого обфусцированного кода, если можно за пару дней написать свой? И 90% interface.u без защиты именно потому, что люди думают обфускация не помогает. А на самом деле помогает. Просто они не пробовали восстанавливать 50+ переменных вручную
Сообщение объединено:
ну да все же доссом ломают interface.u
 
Последнее редактирование:

Иногда хочется изменить что-то, что корейцы сделали "по своему". Или доделать, то что они не доделали. Да и в целом - полет фантазии.
 
Вот именно поэтому и не обфусцируют, тк смысла в этом 0.
Ну разве кроме одного - избежать копипасты.
Абсолютно любое окно можно самостоятельно написать только по внешнему виду и, возможно, по поведению в динамике.
Скажу по секрету: компилятор байт-кода ue не оптимизирующий за исключением пары вещей, поэтому иногда (точнее почти всегда) понапишут такого, что диву даешься стоит на это взглянуть )
 
Можешь объяснить зачем это защищать? Ну откроют, может даже к себе что-то возьмут и что дальше? В чем ценность?
 
мало того, что этот код нах никому не сдался, так еще и есть шанс, что клиент будет у игроков потом обсираться в криты или чего хуже - MS Defender-ы и прочие антивири будут орать "эта вирус! эта вирус!" и удалять этот файл, и 90% игроков даже разбираться не будут, а просто выкинут клиент в парашу и напишут на форуме: "гавно, так и не смог запустить"
 
Защитник орёт на обфусцированный interface.u? Ты перепутал обфускацию с бэкдором. Криты не от обфускации, а от кривого кода.
Сообщение объединено:
Ну если не ценишь свое время и деньги, то не зачем)
 
Последнее редактирование:
прогони свой обфусцированный interface.u через вирустотал и посмотри
 
Monokini2 так вот чего тьі не обфусцируешь свой код, чтобьі дефендер твою вирусню не детектил!!! Сколько майнишь на анрил скриптах наивньіх пользователей?
 
Представляю заголовки новостей
Разработчик Lineage 2 майнил крипту через интерфейс 10 лет никто не заметил, потому что код был обфусцирован!
Сообщение объединено:
Ты месяц кодил Вася скопировал за 2 минуты, игроки ушли к Васе, ты сидишь с дошираком. Вот тебе и прямой ущерб. А мог бы обфусцировать и Вася бы доширак ел
 
Последнее редактирование:
Rolo, тем временем мой код, который нуждается в защите:
 
Последнее редактирование:
Если твои игроки уходят из-за того что кто-то какие-то файлы украл, то тут проблема явно не шифровани файлов
 
Ну конечно! Игроки уходят не потому что файлы украли, а потому что у Васи теперь такие же фишки, но донат дешевле. А откуда у Васи фишки? Правильно из твоего незащищённого interface.u
 
все равно если это действительно целый механизм, то он скорее всего имеет сервер сайд и толку от того что сопрут окно с клиента - ноль.
да, какие-то подсветки пати, урон на экран и тому подобное могут спиздить, остальное можно делать на стороне сервера, к примеру окно заточки


максимум что есть в клиенте это верификация предметов которые человек туда кладет (которые потом повторно само собой верифицирует сервер)
каждый предмет добавляет свойство к заточке (шанс или чтобы предмет не сбрасывался), можно и без них точить, но будет шанс ниже+поломка
а в клиенте без сервер сайда, ну вряд ли такое накодишь что прям переживаешь за свой код.
взять условно тот же батл пасс, сомневаюсь что там хватит скопировать клиент. придется писать кодеру/либо самому, а тот кто напишет код, думаю ему ума хватит и клиент доделать.
опять же если подсветку пати взять, то достаточно анимации с клиента вырвать
если конечно ты сам рисуешь текстуры и у тебя потом это спиздят все разом, будет неприятно.
ну а так пускай пиздят на здоровье, главное чтобы ума хватило механики сервера реализовать
 
Данный сайт использует cookie. Вы должны принять их для продолжения использования. Узнать больше…