Посмотрите видео ниже, чтобы узнать, как установить наш сайт в виде веб-приложения на главном экране.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
так эт же логика функции а не точный кодКод: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)); // Если строка не та, что ожидается — закрываем клиент if (checksum != 437) RequestExit(); }
31 секунда дипсика, даже комментарии вежливо написал
Тут ИИ не "угадывал" - я ему сказал посмотреть значения и как chr интерпретировать.так эт же логика функции а не точный код
Сообщение объединено:Ну ии логику функции могут угадать и дать пример, но не восстановленный исходный код. GetINIString + Asc + RequestExit этот паттерн видно сразу, тут ИИ не нужен, Chr(85)=U — таблица ASCII, любой школьник знает. А теперь вопрос как назывались переменные в оригинале? Не value и checksum, а те что были до обфускации? Ну и ты в итоге не знаешь связей с другими функциями.
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). Защита слабая — проверяется только сумма байт, а не сама строка, так что под неё подходит множество строк-коллизий.
Вот именно. Логика восстанавливается через ии да. Но чтобы модифицировать этот код под себя, нужно вручную восстановить все переменные. А их в классе 50+. И связей между функциями сотни.ну сидишь и именуешь
ну да все же доссом ломают interface.uУверен у NCSoft у которого угоняли исходники сервера и все что только можно, задавались теми же вопросами. Да как так то, как вы можете? Уроды вы! Может есть какая то мега защита от всего и вся?
Да нет этой защиты и не будет никакой. Кому надо нагнет все ДДОСом.
Можно глупый вопрос, зачем вообще лезть в клиент? Если конечно речь не про GvE или как там эта поделка называется.
Вот именно поэтому и не обфусцируют, тк смысла в этом 0.Зачем тратить неделю на разбор чужого обфусцированного кода, если можно за пару дней написать свой?
Можешь объяснить зачем это защищать? Ну откроют, может даже к себе что-то возьмут и что дальше? В чем ценность?Ситуация. За две недели ко мне пришло 4 человека с просьбой распаковать их собственный interface.u. У кого-то потеряли исходники, кому-то нужны были старые наработки, кому-то просто интересно стало покопаться. Я открываю файлы. И что я вижу? Никакой защиты. Ну, кроме AA, но это так, для галочки. Декомпилируется всё за секунды. Я не злой и не хочу никого высмеивать. Но мне правда интересно: почему так много людей не защищают свой код? Я же понимаю, что вы вкладываете в интерфейс время, душу, уникальные фишки. А потом просто выкладываете его в папку System, и любой желающий может забрать всё это за пару минут. Может, вы не знаете, что .u файл можно защитить? Или думаете, что это сложно? Или вам просто всё равно? Может, я ошибаюсь? Может, у вас есть причины не заморачиваться с защитой? Расскажите, правда интересно.
мало того, что этот код нах никому не сдался, так еще и есть шанс, что клиент будет у игроков потом обсираться в криты или чего хуже - MS Defender-ы и прочие антивири будут орать "эта вирус! эта вирус!" и удалять этот файл, и 90% игроков даже разбираться не будут, а просто выкинут клиент в парашу и напишут на форуме: "гавно, так и не смог запустить"Можешь объяснить зачем это защищать? Ну откроют, может даже к себе что-то возьмут и что дальше? В чем ценность?
Защитник орёт на обфусцированный interface.u? Ты перепутал обфускацию с бэкдором. Криты не от обфускации, а от кривого кода.мало того, что этот код нах никому не сдался, так еще и есть шанс, что клиент будет у игроков потом обсираться в криты или чего хуже - MS Defender-ы и прочие антивири будут орать "эта вирус! эта вирус!" и удалять этот файл, и 90% игроков даже разбираться не будут, а просто выкинут клиент в парашу и напишут на форуме: "гавно, так и не смог запустить"
Ну если не ценишь свое время и деньги, то не зачем)Можешь объяснить зачем это защищать? Ну откроют, может даже к себе что-то возьмут и что дальше? В чем ценность?
прогони свой обфусцированный interface.u через вирустотал и посмотриЗащитник орёт на обфусцированный interface.u? Ты перепутал обфускацию с бэкдором. Криты не от обфускации, а от кривого кода.
Сообщение объединено:Ну если не ценишь свое время и деньги, то не зачем)
Ну ок, кто-то открыл эту шляпу и забрал себе. Какой прямой ущерб мне от этого?Ну если не ценишь свое время и деньги, то не зачем)
Представляю заголовки новостейMonokini2 так вот чего тьі не обфусцируешь свой код, чтобьі дефендер твою вирусню не детектил!!! Сколько майнишь на анрил скриптах наивньіх пользователей?
Ты месяц кодил Вася скопировал за 2 минуты, игроки ушли к Васе, ты сидишь с дошираком. Вот тебе и прямой ущерб. А мог бы обфусцировать и Вася бы доширак елНу ок, кто-то открыл эту шляпу и забрал себе. Какой прямой ущерб мне от этого?
Если твои игроки уходят из-за того что кто-то какие-то файлы украл, то тут проблема явно не шифровани файловТы месяц кодил Вася скопировал за 2 минуты, игроки ушли к Васе, ты сидишь с дошираком. Вот тебе и прямой ущерб. А мог бы обфусцировать и Вася бы доширак ел
все равно если это действительно целый механизм, то он скорее всего имеет сервер сайд и толку от того что сопрут окно с клиента - ноль.Ну конечно! Игроки уходят не потому что файлы украли, а потому что у Васи теперь такие же фишки, но донат дешевле. А откуда у Васи фишки? Правильно из твоего незащищённого interface.u
Посмотреть вложение 95907