Kailo
Участник
- Сообщения
- 194
- Реакции
- 896
Не так давно, на MyArena возникли проблемы с запуском плагинов за авторством печально известного DEN-а или накрытые SmartPawn-ом.
В этом уроке будет рассказано, как обойти данное ограничение с помощью простой модификации smx.
Курсивный текст будет содержать поясняющую информацию про технические аспекты работы smx.
Не переживайте, если не поймете, для этого надо как минимум прочитать 1й урок из серии о структуре SMX.
В этом уроке вы разберетесь и не поняв эту часть.
Постановка задач
Чтобы понять, что нам надо сделать, давайте разберем как работает ограничение от Myarena.
Когда перестал работать Personal Weapons, и даже та версия, что декомпилирована мной,
народ быстро сообразил переписать данные об авторе плагина, после чего он начинал работать.
Обычно для плагинов от DEN информация об авторстве имеет следующий вид:
Т.к. имя плагина, его версия и описание меняется от плагина к плагину,значит проверяется имя автора и url,
которые везде одинаковы. Их нам и надо поменять в smx.
myinfo - глобальная переменная, а значит информация о её значении будет храниться в .data секции.
Тип данных - Plugin. Это очень специфичный тип данных вида struct (не путайте с enum struct).
В памяти smx он выглядит как массив значений, где числа записываются как обычно, а массивы в виде адресов.
Т.е. в объекте вместо строки мы найдем адрес на другую "глобальную переменную" где будет записана наша строка.
Со SmartPawn-ом полегче. Если вы хоть раз декомпилировали плагин после SmartPawn тем же Lysis, то могли видеть такое
Он оставляет пустую функцию с названием "PoweredBySmartPawn".
Именно по её наличию в плагине, плагин не будет включаться, даже если нет обфускации.
На каждую public функцию создается запись в .public секции со ссылкой на её имя в .names секции.
Модификация smx
Инструкция будет написано максимально ориентировано, на повторение шагов,
так что если вы понимаете происходящее и понимаете, что отклонение от точного её повторения не повредит, валяйте.
Для примера я возьму плагин c4_2020 за авторством DEN, который накрыт SmartPawn.
1. Первым делом подготовим окружение для работы.
Создаем папку в которой будем работать
Копируем и перемещаем наш smx в папку.
НЕ ЗАБЫВАЕМ СОЗДАТЬ РЕЗЕРВНУЮ КОПИЮ SMX, Т.К. В ХОДЕ НЕУДАЧНЫХ ИЗМЕНЕНИЙ ОН МОЖЕТ БЫТЬ БЕЗВОЗВРАТНО ИСПОРЧЕН!
А также, скачиваем Decompressor и помещаем его в ту же папку.
2. Снимаем сжатие с smx.
Для этого просто мышкой перетащите ваш smx на Decompressor.exe.
У вас появится decompressed.smx файл.
3. Редактируем файл
Открываем файл в Notepad++
В строке меню (да, это та что сверху) открываем вкладку "Поиск" > "Найти" (Ctrl+F)
Вводим данные из сведений об авторе, я предпочел "infozona".
Нажимая "Найти Далее" ищем по файлу, у меня получилось найти с 1-го раза.
Здесь по очереди видны все данные об авторстве: название, автор, версия, описание, 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 символов
Теперь устанавливаем курсор в начале имени автора, после чего делаем двойное нажатие на NULL в таблице символов, чтобы напечатать символ.
После чего удаляем D (Можно просто изначально выделить D).
Таким же образом заменяем первую букву (h) в адресе "http://infozon..."
Таким же образом как и ранее делаем поиск "PoweredBySmartPawn"
И тоже заменяем первую букву
По желанию проверяем что не ошиблись, и размер файла совпадает с исходным.
4. Сжатие smx
Закончив все преобразования, не забываем сохранить файл.
Теперь также перетаскиваем decompressed.smx на Decompressor.exe.
Получим файл compressed.smx.
(Decompressor.exe сам распознает является ли переданный файл сжатым или нет и выбирает нужную операцию создавая соответственно, или decompressed.smx, или compressed.smx)
По желанию переименовываем compressed.smx.
Готово. Теперь плагин будет работать на MyArena.
Для особенно вдохновившихся, вот пара модулей к PW, которые я не декомпилировал и которые не запускаются.
Результат можете выложить в этой теме, я сделаю ссылки из первого поста.
Сами попробуете, да и людям поможете, кто ищет.
В этом уроке будет рассказано, как обойти данное ограничение с помощью простой модификации smx.
Курсивный текст будет содержать поясняющую информацию про технические аспекты работы smx.
Не переживайте, если не поймете, для этого надо как минимум прочитать 1й урок из серии о структуре SMX.
В этом уроке вы разберетесь и не поняв эту часть.
Постановка задач
Чтобы понять, что нам надо сделать, давайте разберем как работает ограничение от Myarena.
Когда перестал работать Personal Weapons, и даже та версия, что декомпилирована мной,
народ быстро сообразил переписать данные об авторе плагина, после чего он начинал работать.
Обычно для плагинов от DEN информация об авторстве имеет следующий вид:
Т.к. имя плагина, его версия и описание меняется от плагина к плагину,значит проверяется имя автора и url,
которые везде одинаковы. Их нам и надо поменять в smx.
myinfo - глобальная переменная, а значит информация о её значении будет храниться в .data секции.
Тип данных - Plugin. Это очень специфичный тип данных вида struct (не путайте с enum struct).
В памяти smx он выглядит как массив значений, где числа записываются как обычно, а массивы в виде адресов.
Т.е. в объекте вместо строки мы найдем адрес на другую "глобальную переменную" где будет записана наша строка.
Со SmartPawn-ом полегче. Если вы хоть раз декомпилировали плагин после SmartPawn тем же Lysis, то могли видеть такое
Он оставляет пустую функцию с названием "PoweredBySmartPawn".
Именно по её наличию в плагине, плагин не будет включаться, даже если нет обфускации.
На каждую public функцию создается запись в .public секции со ссылкой на её имя в .names секции.
Модификация smx
Инструкция будет написано максимально ориентировано, на повторение шагов,
так что если вы понимаете происходящее и понимаете, что отклонение от точного её повторения не повредит, валяйте.
Для примера я возьму плагин c4_2020 за авторством DEN, который накрыт SmartPawn.
1. Первым делом подготовим окружение для работы.
Создаем папку в которой будем работать
Копируем и перемещаем наш smx в папку.
НЕ ЗАБЫВАЕМ СОЗДАТЬ РЕЗЕРВНУЮ КОПИЮ SMX, Т.К. В ХОДЕ НЕУДАЧНЫХ ИЗМЕНЕНИЙ ОН МОЖЕТ БЫТЬ БЕЗВОЗВРАТНО ИСПОРЧЕН!
А также, скачиваем Decompressor и помещаем его в ту же папку.
2. Снимаем сжатие с smx.
Для этого просто мышкой перетащите ваш smx на Decompressor.exe.
У вас появится decompressed.smx файл.
3. Редактируем файл
Открываем файл в Notepad++
В строке меню (да, это та что сверху) открываем вкладку "Поиск" > "Найти" (Ctrl+F)
Вводим данные из сведений об авторе, я предпочел "infozona".
Нажимая "Найти Далее" ищем по файлу, у меня получилось найти с 1-го раза.
Здесь по очереди видны все данные об авторстве: название, автор, версия, описание, 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 символов
Теперь устанавливаем курсор в начале имени автора, после чего делаем двойное нажатие на NULL в таблице символов, чтобы напечатать символ.
После чего удаляем D (Можно просто изначально выделить D).
Таким же образом заменяем первую букву (h) в адресе "http://infozon..."
Таким же образом как и ранее делаем поиск "PoweredBySmartPawn"
И тоже заменяем первую букву
По желанию проверяем что не ошиблись, и размер файла совпадает с исходным.
4. Сжатие smx
Закончив все преобразования, не забываем сохранить файл.
Теперь также перетаскиваем decompressed.smx на Decompressor.exe.
Получим файл compressed.smx.
(Decompressor.exe сам распознает является ли переданный файл сжатым или нет и выбирает нужную операцию создавая соответственно, или decompressed.smx, или compressed.smx)
По желанию переименовываем compressed.smx.
Готово. Теперь плагин будет работать на MyArena.
Сообщения автоматически склеены:
Для особенно вдохновившихся, вот пара модулей к PW, которые я не декомпилировал и которые не запускаются.
Результат можете выложить в этой теме, я сделаю ссылки из первого поста.
Сами попробуете, да и людям поможете, кто ищет.
Вложения
Последнее редактирование: