Уроки моддинга
GTA Script GeneratorЗадать вопрос
  • О сайте
    • Проекту помогали
  • GTA SA, VC, III (PC, Classic)
    • Раздел 01. Основы
      • Общие сведения об уроках и минимальный набор программ
      • Установка Sanny Builder. Базовые настройки
      • Синтаксис, комментарии, опкоды, команды. Ключевые слова
      • Типы данных. Литералы. Константы
      • Типы проектов
      • Переменные. Операторы
      • 00012. Редактирование main.scm. Переменные (Часть 3)
      • 000175. Трюк с локальными массивами
      • 00073. Переменные, как члены класса. Коментарии в поиске опкодов. Макросы
      • 00017. Условия в Sanny Builder (Часть 1)
      • 00018. Условия в Sanny Builder (Часть 2)
      • 00019. Условия в Sanny Builder (Часть 3)
      • 000181. Условия в Sanny Builder (Часть 4)
      • 00045. Циклы (Часть 1 - while)
      • 00047. Циклы ( Часть 2 - for )
      • 00049. Циклы ( Часть 3 - repeat ). Вложенные циклы
      • 00087. Таблицы переходов
      • 00059. Подключение текстовых файлов, scm-функции
      • 000155. Использование SCM-функций (опкод 0AB1)
      • 000162. Используем scm-функции в качестве проверок
      • Координаты. Угол. Получение координат и угла Z
      • 000154. Вся правда о wait 0
    • Раздел 02. CLEO
      • Текст
        • 000158. Динамическая GXT-таблица или виртуальные GXT-записи
        • 00033. Работа с текстом
      • Игрок
        • 00021. Одежда СЖ
      • Транспорт
        • 00026. Создание транспорта
        • 000115. Работа с грузовиками и прицепами
        • 000172. Эктра-части автомобилей
        • 00042. Всё о поездах
        • 00080. Тюнинг транспорта, работа с компонентами тюнинга
        • 00029. Транспорт и команды, свойственны ему
        • 00046. Плавающие и лётные средства передвижения
        • 00082. Работа с частями автомобиля
      • Актёры
        • 000152. Заставляем актёра говорить. Аудио-таблицы
        • 000177. Трюк со специальными актёрами
        • 00020. Типы пешеходов, номера банд и отношение между ними
        • 00024. Модель. Создание актёра
        • 00028. Актёры и команды, свойственны им. Команды для игрока
        • 00056. Специальные актёры
        • 00060. События актёров
        • 00084. Модели поведения актёров
      • Объекты
        • 00030. Объекты и команды, свойственны им
        • 00025. Создание объекта
        • 000142. Метание объектов
      • 00027. Пикапы
      • 00031. Маркеры и сферы
      • 000122. Типы чекпоинтов, маркеров. Детальный обзор
      • 00055. Cleo. Основные понятия, отличия от main'а, простые примеры
      • 00061. Cleo-миссии
      • 00064. Работа со стартерами ( Cleo - Часть 1 )
      • 00065. Работа со стартерами ( Cleo - Часть 2 )
      • 00083. Запуск другого потока с Cleo-скрипта
      • 00079. Немного о глобальных CLEO-переменных
      • 00066. Работа со стартерами ( Дополнительные условия )
      • 000137. Группы в GTA San Andreas
      • 00098. Последовательность в анимации
      • 000120. Пути пешеходов и анимационные пути
      • 000178. RRR-файлы в GTA SA. Как их делать и использовать-
      • 000180. Длинные последовательности в анимации
      • 00022. Типы зон. Аудио-зоны
      • 00023. Работа с клавишами. Делаем сохранение
      • 00037. Анимация. Основные команды и примеры их использования
      • 00041. Работа с интерьерами
      • 00036. Катсцены и всё, что необходимо для примитивного видеоролика
      • 000174. Снова статистика игрока
      • 00040. Как создать свой чит-
      • 00090. Работа с гаражами
      • 000176. Выделение памяти
      • 00076. Статистика игрока
      • 00094. Пропуск видеороликов
      • 00072. Работа со светом. Прожектор
      • 00092. Работа с файлами ( форматированное чтение )
      • 00093. Работа с файлами ( Дозапись )
      • 00071. Визуальные эффекты в GTA San Andreas
      • 00069. Взрывы и всё, что связано с огнём.
      • 00086. Движения объектов и эффектов
      • 00068. Использование RC
      • 00067. Использование турелей
      • 00057. Работа с INI-файлами ( запись и считывание )
      • 00044. Работа с панелями ( таблицами )
      • 00043. Работа с аудио
      • 00038. Рисование на экране (Часть 1 - Текст)
      • 00039. Рисование на экране (Часть 2 - Текстуры)
    • Раздел 03. MAIN.SCM
      • 0009. Редактирование main.scm. Потоки и опкоды (Часть 1)
      • 00014. Редактирование main.scm. Потоки и опкоды (Часть 2)
      • 00013. Редактирование main.scm. Потоки и опкоды (Часть 3)
      • 00062. Работа со стартерами ( MAIN.SCM - Часть 1 )
      • 00063. Работа со стартерами ( MAIN.SCM - Часть 2 )
      • 00054. Внешние скрипты в main.scm
      • 00050. Статус-тексты
      • 00053. Таймеры
      • 00035. Делаем простую миссию
    • Раздел 04. Разное
      • 00088. Интересные опкоды (Часть 1)
      • 00089. Интересные опкоды (Часть 2)
      • Интересное в скриптинге
      • 000167. Интересное в скриптинге. Часть 2
      • 00081. Защита скриптов, снятие слабой защиты
      • 000157. Защита скриптов,снятие её + Подробнее об $NOSOURCE
      • 000121. Варианты использования main.scm
      • 000179. Избавляемся от "ёлочек"
      • 000171. Контроль за перемещениями мыши
      • 000182. Колода карт в GTA San Andreas
      • Работа с магазинами
      • 00091. Создания собственных классов и кейвордов
      • 00085. Работа с битами переменных
      • 00051. Работа с HEX. HEX-буфер
      • 00097. Написания DLL библиотек и использование их с скриптах
    • Раздел 05. Игровая память
      • 00058. Работа с игровой памятью (Часть 1- статические адреса)
      • 00074. Динамические адреса памяти. ( Часть 1 - структура актёра )
      • 00075. Динамические адреса памяти. ( Часть 2 - структура автомобиля )
      • 00077. Динамические адреса памяти. ( Часть 3 - структура объекта )
      • 00096. Игровая память. Динамические адреса (структура weapon.dat)
    • Раздел 06. Алгоритмы и примеры
      • 000153. Пример полноценной миссии "Ограбление"
      • 00095. Как сделать нервометр-
      • 00052. Пример полноценной миссии "Взрывчатка"
      • 000114. Делаем спидометр!
      • 000161. Очень длинные миссии в main.scm
      • 000112. Делаем графическое меню
      • 000113. Делаем гоночную миссию ( SARMC v0.9 )
      • 000133. Делаем диалоги в миссиях
      • 00032. Делаем простой скрипт (приходим к точке и убиваем нужную цель)
    • Раздел 07. Plugin SDK (SA)
      • Простейший плагин
      • Работа с массивами объектов
      • Рисуем
      • Короны
      • Класс шрифта (CFont)
    • Раздел 08. Руководство по программам
      • Руководство по использованию программы GTA-SA Crazy IMG Editor
      • Руководство по использованию программы Ped Editor
      • Руководство по использованию программы Rus2gxtCoder
      • Руководство по использованию программы FXT Editor
      • Руководство по использованию программы GTA Animation Manager
      • Руководство по использованию программы TXD Workshop
      • Руководство по использованию программы GTA GXT Editor
      • Руководство по использованию Map Editor
      • Руководство по использованию программы MapCleaner
  • GTA 4 (PC)
    • Раздел 01. ScriptHookDotNet
      • Всё, что необходимо перед началом скриптинга GTA 4
      • Создание проекта и его открытие
      • Наш первый скрипт. Необходимые условия его написания
      • 000102. Метки и прыжки
      • 00034. Что такое Blip- Основные комадны
      • 000107. Обзор класса GAME
      • 000108. Обзор класса PLAYER(Часть 1)
      • 000109. Обзор класса PLAYER(Часть 2)
      • 000110. Обзор класса PLAYER(Часть 3)
      • 000111. Vector - Что это такое и с чем его едят
      • 000116. Обзор класса World
      • 000117. Обзор класса Model
      • 000118. Обзор класса Vehicles
      • 000119. Обзор класса Ped
      • 000126. Pickup в GTA 4
      • 000127. Обзор класса Group
      • 000141. Списки в c#. Запуск нескольких скритов в GTA 4
  • Программирование
    • C#
      • 000103. Типы данных в C#. Базовые операции над ними.
      • 000104. Блочные конструкции. Условия
      • 000105. Блочные конструкции. Циклы
      • 000106. Массивы и структуры
      • 000123. Блочные конструкции. Перечисления
      • 000124. Блочные конструкции. Оператор управдения swith
      • 000125. Блочные конструкции. Цикл foreach
      • 000128. Как делать функции c#- Часть 1
      • 000129. Как делать функции c#- Часть 2
      • 000130. Альтернативные условия
      • 000131. Как делать функции c#- Часть 3
      • 000132. ООП в c# Часть 1
      • 000135. ООП в c# Часть 2 - Полиморфизм
      • 000136. Как делать функции c#- Часть 4
      • 000138. Детальнее о static
      • 000139. Блочные конструкции. Исключения
      • 000140. Делегаты и события в c#
      • 000143. Знакомство с формами
      • 000144. Панель элементов
      • 000149. Кнопки, Текст-боксы и метки
      • 000151. Запуск другой формы из основной, ListBox, MenuStrip
      • 000160. Сериализация и десериализация XML в c#
      • 000163. Консоль. Основные команды
      • 000165. Цикл foreach для своих классов
      • 000168. Перегрузка операторов в c#
      • 000169. Анонимные и динамические типы в c#
      • 000170. Анонимные функции и лямбда-выражения в c#
      • 000173. C# введение в Linq
      • 00048. Детальнее о ref, out и checked
      • 000150. Подключаем dll-библиотеку, работа с файлами
    • C++
      • Выбор среды компилирования, типы данных, первая программа
      • Математика, адреса данных
  • Полезные ссылки
    • Уроки от Vital (видео)
    • База опкодов (SBL)
    • Сайт Sanny Builder
    • Сайт CLEO
  • На удаление
    • Раздел 99. Старые уроки
      • 00010. Управление Sanny Builder и её особенности
      • 0000. Всё, что необходимо перед началом скриптинга
      • 000156. Вступление в скриптинг GTA 3
Powered by GitBook
On this page

Was this helpful?

  1. GTA SA, VC, III (PC, Classic)
  2. Раздел 04. Разное

00081. Защита скриптов, снятие слабой защиты

Защита скриптов, снятие слабой защиты|В этом уроке мы рассмотрим защиту скриптов.|wmysterio|wmysterio||||Всем привет! Так или иначе нельзя быть уверенным в том, что защищенный скрипт никто не откроет. В этом уроке мы рассмотрим способы защиты ваших скриптов от хитрых пользователей, которые постоянно заливают скрипт под своим авторством. Я далеко не спец по защитам, поэтому урок выйдет кратким.

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

При попытке компиляции/декомпиляции Санник сообщает об ошибкак, таких как "метка X не найдена" или скрипт не будет похож на себя, тоесть в место привычных опкодов Санник напишет кучу символов и цифр или вообще какие то иероглифы. Компилировать такой код можно, но любое его изменение приводит к какой то ошибке, в т.ч. к зависанию игры. Сильная защита не позволит Саннику открыть скрипт. Пойдёт декомпиляция, но никакого результата не будет, то есть либо Sanny Builder зависнет, либо откроет пустой скрипт.

Перейдём к слабой защите. Для начала напишем простой скрипт:

{$CLEO}
0000:
thread 'MyThread '

while true
 if
 0AB0: key_pressed 49 // 1
 then
 Player.Money($PLAYER_CHAR) += 100
 end
wait 0
end

С виду всё понятно. Нажимаем 1 - дают 100 баксов. Этот скрипт можно свободно открыть и отредактировать. Теперь давайте сделаем простую замену имени потока. Скопируем выражение "Player.Money", и вставим в название потока, то есть в "thread". Должно быть так:

{$CLEO}
0000:
thread 'Player.Money'

while true
 if
 0AB0: key_pressed 49 // 1
 then
 Player.Money($PLAYER_CHAR) += 100
 end
wait 0
end

Нажимаем кнопку компиляции и видим, что никаких ошибок не возникает. Запускаем игру, и видим, что никаких аномалий не произошло. Давайте закроем Sanny Builder и попробуем им открыть созданный нами скрипт. Вы увидите эту бадягу:

{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP 
thread 'PLAYER.MONEY' 

:PLAYER.MONEY_21
if 
0AB0: key_pressed 49 
else_jump @PLAYER.MONEY_43 
Player.Money($PLAYER_CHAR) += 100

:PLAYER.MONEY_43
wait 0 
jump @PLAYER.MONEY_21

Нажимает "Компилировать" и... ОБЛОМ! Компилятор пишет "Неверный символ в идентификаторе PLAYER.MONEY_21".

Многие из Вас подумали, что этот скрипт не составит труда переделать, заменив все метки на правильные. Это правильный подход, но всё же это маленький скрипт. А представьте, что код скрипта состоит из 1000 строк. Будете все метки переименовать на нужные? Это тоже правильный подход, однако вручную всё это делать - безумие. Если вы вручную переделали такой скрипт - то вы один из самых безумных людей, которых я знаю :) Мы будем подменивать метки на нужные, однако будем использовать функцию замены. Весь процесс пройдёт как минимум в два этапа:

  • замена всех имен меток;

  • замена всех прыжков на метки;

  • возможно нужно будет заменять и другие потоки, если какой то чел заменит все метки из main.scm на классы;

Начнём с первого этапа. Копируем название потока ( thread ). Далее нажимаем горячие клавиши CTRL+<kbd>R и в поле "Искать" вставляем скопированный текст, поставив знак ":" перед текстом. Если этого не сделать, то все классы переименуются, а этого нам ненужно. В поле "Заменить на:" пишем название потока. В моём случаи поток и все его метки будут иметь название "MONEY", и так же обязательно добавим знак ":". Нажимаем "Ок". При нахождении совпадения нажимаем кнопку "Да для всех", чтобы не нажимать каждый раз "Далее".

Второй этап делается точно так же, только в место символа ":" пишем "@". В результате таких действий скрипт на глазах изменится, в нашем случаи он будет иметь вид:


{$VERSION 3.1.0027}
{$CLEO .cs}
 
//-------------MAIN---------------
0000: NOP 
thread 'MONEY' 
 
:MONEY_21
if 
0AB0: key_pressed 49 
else_jump @MONEY_43 
Player.Money($PLAYER_CHAR) += 100
 
:MONEY_43
wait 0 
jump @MONEY_21

Нажимаем "Компилировать" и ву-а-ля! Всё прекрасно скомпилировалось. Осталось только поправить значения на нужные =)

Не забывайте об авторских правах и не нарушайте чужих! Этот урок написан с целью ознакомления по защите ( а не взлому! ) скриптов. В любом случаи скриптинг тоже является не совсем законным, так что о правах заявлять не стоит так сильно.

Остальные методы защиты рассматривать не будем, так как я в них ещё не ознакомлен. К томуже редактировать скрипты других авторов было бы нарушением его интелектуальной деятельности. Если нужно отредактировать скрипт, то лучше обратится к его автору.

Надеюсь, этот урок был Вам полезен, только используйте его в мирных целях =)|4112|1|0|40549587png449135400120``\|94787455png379266

`\||zashhita_skriptov_snjatie_slaboj_zashhity|1499757633
Previous000167. Интересное в скриптинге. Часть 2Next000157. Защита скриптов,снятие её + Подробнее об $NOSOURCE

Last updated 3 years ago

Was this helpful?