[Урок] Простая модификация smx | Запуск плагинов на MyArena

Kailo

Участник
Сообщения
168
Реакции
755
Не так давно, на MyArena возникли проблемы с запуском плагинов за авторством печально известного DEN-а или накрытые SmartPawn-ом.
В этом уроке будет рассказано, как обойти данное ограничение с помощью простой модификации smx.
Курсивный текст будет содержать поясняющую информацию про технические аспекты работы smx.
Не переживайте, если не поймете, для этого надо как минимум прочитать 1й урок из серии о структуре SMX.
В этом уроке вы разберетесь и не поняв эту часть.


Постановка задач
Чтобы понять, что нам надо сделать, давайте разберем как работает ограничение от Myarena.
Когда перестал работать Personal Weapons, и даже та версия, что декомпилирована мной,
народ быстро сообразил переписать данные об авторе плагина, после чего он начинал работать.
Обычно для плагинов от DEN информация об авторстве имеет следующий вид:
1576179041523.png
Т.к. имя плагина, его версия и описание меняется от плагина к плагину,значит проверяется имя автора и url,
которые везде одинаковы. Их нам и надо поменять в smx.
myinfo - глобальная переменная, а значит информация о её значении будет храниться в .data секции.
Тип данных - Plugin. Это очень специфичный тип данных вида
struct (не путайте с enum struct).
В памяти smx он выглядит как массив значений, где числа записываются как обычно, а массивы в виде адресов.
Т.е. в объекте вместо строки мы найдем адрес на другую "глобальную переменную" где будет записана наша строка.


Со SmartPawn-ом полегче. Если вы хоть раз декомпилировали плагин после SmartPawn тем же Lysis, то могли видеть такое
1576181894341.png
Он оставляет пустую функцию с названием "PoweredBySmartPawn".
Именно по её наличию в плагине, плагин не будет включаться, даже если нет обфускации.
На каждую public функцию создается запись в .public секции со ссылкой на её имя в .names секции.

Модификация smx
Инструкция будет написано максимально ориентировано, на повторение шагов,
так что если вы понимаете происходящее и понимаете, что отклонение от точного её повторения не повредит, валяйте.
Для примера я возьму плагин c4_2020 за авторством DEN, который накрыт SmartPawn.

1. Первым делом подготовим окружение для работы.
Создаем папку в которой будем работать
Копируем и перемещаем наш smx в папку.
НЕ ЗАБЫВАЕМ СОЗДАТЬ РЕЗЕРВНУЮ КОПИЮ SMX, Т.К. В ХОДЕ НЕУДАЧНЫХ ИЗМЕНЕНИЙ ОН МОЖЕТ БЫТЬ БЕЗВОЗВРАТНО ИСПОРЧЕН!
А также, скачиваем Decompressor и помещаем его в ту же папку.
1576182909094.png

2. Снимаем сжатие с smx.
Для этого просто мышкой перетащите ваш smx на Decompressor.exe.
У вас появится decompressed.smx файл.
1576182988782.png

3. Редактируем файл
Открываем файл в Notepad++

В строке меню (да, это та что сверху) открываем вкладку "Поиск" > "Найти" (Ctrl+F)
Вводим данные из сведений об авторе, я предпочел "infozona".
1576183333491.png
Нажимая "Найти Далее" ищем по файлу, у меня получилось найти с 1-го раза.
1576183370774.png
Здесь по очереди видны все данные об авторстве: название, автор, версия, описание, url.
Описание выглядит как странный набор символов, т.к. выбрана кодировка ANSI (это указано в правом нижнем углу).
Весь текст плагина был сохранен в кодировки UTF-8 (для стандартных символов и английских они совпадают с ANSI, а вот для русских нет).
Кодировка может быть переключена: Строка меню > Раздел "Кодировки" > "Кодировка ANSI" или "Кодировка UTF-8"
Я рекомендую использовать ANSI при редактировании. Так меньше шансов налажать и сломать smx (да, не забудьте сохранить резервную копию оригинального).
Немного технической информации о строках. Любая строка должна иметь в конце "нулевой символ", это символ со значением 0, в Notepad++ он отображается как NUL.
Появление символа NUL сообщает системе о конце строки, даже если фактически после него есть другие символы.
Таким образом, если заменить первый символ на NUL, то система будет считать что строка пустая.
Все строки по кол-ву символов кратны 4. Даже если записывается пустая строка (один символ NUL) то он добавит еще 3 NUL символа за ним.

Наша цель изменить строки автора и url. Нам достаточно поменять любой символ в строке, и тогда плагин будет работать.
Важно помнить, что кол-во символов в файле должно остаться неизменным. Увидеть кол-во символов в файле, можно в нижней строке состояния "length 2 053 158".
Так и должно оставаться после редактирования.

Мы могли бы просто к примеру заменить первые буквы слов на любые другие и все, но я хочу вас научить, как можно написать NUL символ.
Для этого открываем Строка Меню > Раздел "Правка" > Таблица Символов (4-ая снизу)
Справа появится таблица ANSI символов
1576195224227.png
Теперь устанавливаем курсор в начале имени автора, после чего делаем двойное нажатие на NULL в таблице символов, чтобы напечатать символ.
После чего удаляем D (Можно просто изначально выделить D).
1576195458753.png
Таким же образом заменяем первую букву (h) в адресе "http://infozon..."

Таким же образом как и ранее делаем поиск "PoweredBySmartPawn"
И тоже заменяем первую букву
1576195730010.png
По желанию проверяем что не ошиблись, и размер файла совпадает с исходным.

4. Сжатие smx
Закончив все преобразования, не забываем сохранить файл.
Теперь также перетаскиваем decompressed.smx на Decompressor.exe.
Получим файл compressed.smx.
(Decompressor.exe сам распознает является ли переданный файл сжатым или нет и выбирает нужную операцию создавая соответственно, или decompressed.smx, или compressed.smx)
По желанию переименовываем compressed.smx.
Готово. Теперь плагин будет работать на MyArena.
1576195966750.png
Сообщения автоматически склеены:

Для особенно вдохновившихся, вот пара модулей к PW, которые я не декомпилировал и которые не запускаются.
Результат можете выложить в этой теме, я сделаю ссылки из первого поста.
Сами попробуете, да и людям поможете, кто ищет.
 

Вложения

Последнее редактирование:

Kruzya

Социопат
Команда форума
Сообщения
9,148
Реакции
7,433
Рофлите? В самом начале темы сказано же:
Не так давно, на MyArena возникли проблемы с запуском плагинов за авторством печально известного DEN-а или накрыты SmartPawn-ом.
В этом уроке будет рассказано, как обойти данное ограничение с помощью простой модификации smx.
 

R1KO

fuck society
Команда форума
Сообщения
8,876
Реакции
6,505
Оффтоп
 

StormX

Участник
Сообщения
570
Реакции
132
Отличная статья Kailo, спасибо! 😀
Как же я рад, что завелся 1 плагин, который был очень нужен мне.
 

Dragokas

Участник
Сообщения
97
Реакции
30
Он оставляет пустую функцию с названием "PoweredBySmartPawn".
Именно по её наличию в плагине, плагин не будет включаться, даже если нет обфускации.
А в чём ее суть? Что-то вроде проверки хеш-суммы?

давайте разберем как работает ограничение от Myarena.
в итоге так и не понятно при чём здесь MyArena
и каков замысел встроенной проверки URL.
Обычно делают наоборот, сверяют с эталоном,
или с чем то вроде ip-хоста на который залочен плагин,
но у вас именно порча строки заставляет обойти проверку,
что за странный такой алгоритм проверки, на ваш взгляд?
 

Kailo

Участник
Сообщения
168
Реакции
755
@Dragokas @R1KO
За объяснением замыслов MyArena обращайтесь к MyArena.
Я лишь могу констатировать факт, что если в плагине есть функция с именем "PoweredBySmartPawn" или в авторе плагина написано "DEN (vk.com/oldmapper)", или в url "http://infozona-51.ru", то плагин будет выгружен сразу после загрузки.
Вероятно, есть еще такие имена функций или авторы плагинов, чьи плагины будут выгружаться.
Эти ограничения сделали авторы MyArena, вот при чем тут она.
Как они сделали?
Скорее всего в ProcessCmd стоит PluginListener (это событие загрузки плагина в расширениях), и там производится проверка и вызов Unload если нужно.
Вообще, почему заблокировать DEN и так понятно, он и тут в списке мошенников.
Почему заблокировать SmartPawn тут 2 идеи: может потому что DEN его любит использовать в своих плагинах или хотели может Ultra заблочить так же (он тоже под SmartPawn).
Или им просто не нравится, то что такие плагины нет смысла выкачивать с сервера (Не подумайте, вообще ни кого не обвиняю в чем-то и не утверждаю, но в теории у MyArena есть возможность скачать плагин с вашего сервера, но вот если он будет под SmartPawn или другой обфускацией его сложновато вскрыть).
 

Banana

Участник
Сообщения
570
Реакции
41
Предлагаете бежать с майарены? (да)
 

-=HellFire=-

Kernel panic - not syncing: Fatal exception
Сообщения
1,305
Реакции
460
Smart Protect видимо больше на арене не заработает) Как только можно пытался, всю инфу о нём в 0 свел, но всё бестолку, хоть и плагин запущен показывает. А так спасал для бана по железу, эх.
Либо арена уже что-то новое придумала.
@Kailo Спасай
 
Последнее редактирование:
Сверху