- 4,804
- 6,475
И так пришло время заняться развитием портала.
По окончанию урока вы сможете сами написать свой собственный, уникальный криптор. Так же вы приобретете скилл понятия как работают крипторы - вы сможете слегкостью калькулятором декриптовать любой скрипт руками.
В уроке используется по байтовый крипт - т.е. криптуется не весь скрипт сразу каким-то математическим действием, а каждый байт индивидуально, можно даже алгоритм составить по которому для каждого байта будет своя формула крипта, но об этом как-нибудь в другой раз.
Т.к. мы работаем на клео и т.к. работаем с каждым байтом индивидуально процесс крипта и декрипта займет много времени. Да-да вы не ослышались - скорость запуска скрипта будет зависеть от его размера и сложности алгоритма.
Криптовать мы будем способом инвертирования всех байт - это самый простой способ. 1 байт = от 0x00 до 0xFF (Кто не знаком с HEX, пожалуйста ознакомьтесь, ибо с ним работать удобнее, чем с десятичной системой счисления), к примеру у нас в скрипте байт который мы обрабатываем равен 0x04 значит после инвертирования он будет равен 0xFF - 0x04 = 0xFB
И так приступим, тут я набросал код, который криптует скрипт инвертором, но на выходе мы получаем только закриптованые данные, а не рабочий скрипт, по этому не спешите с тестами, да и криптует он минуты 3 из-за того что скрипт весит 19кб (по этому лучше не сохранять в скрипте исходный код - он будет весить в 10 раз меньше)
http://pastebin.com/2m9C0xEE
После компиляции и запуска в игре под чатом будет отображен прогресс крипта (X/19201), после чего создастся файл Invertion.bin в папке с игрой, содержащий инвертированый код.
Теперь давайте рассмотрим код для запуска этого скрипта. Да-да как я уже говорил, нужно декриптовать скрипт перед запуском, кто-то возможно этому удивится, но так работают все крипторы, потому что игра не умеет работать с закриптованным скриптом, и что бы наш скрипт работал его надо декриптовать в памяти игры.
http://pastebin.com/qMvx1jVx
Что же мы видем? Код криптора и декриптора практически не изменился! Если мы оставим запись в файл, как при крипте, то наш скрипт тупо декриптуется и сохранится в папку с игрой. Но не всегда код на столько одинаков, обычно изменяется математическая операция над байтами, но почему не изменилась у нас? Ответ прост, как я писал в начале урока, для простоты в уроке используется метод инвертирования в качестве крипта. Как 0xFF - 0x04 = 0xFB, так и 0xFF - 0xFB = 0x04.
Примечания:
19201 - размер скрипта который мы закриптовываем/раскриптовываем
функцию декрипта скрипта в памяти можно скрыть только другой такой функцией, т.е. можно только усложнить декрипт скрипта, но не защитить скрипт от него (это касается абсолютно всех криптеров)
Лучше ебашить не по байту как в уроке, а по 4 байта - принцип не изменится, а криптоваться и декриптоваться будет в 4 раза быстрее
По окончанию урока вы сможете сами написать свой собственный, уникальный криптор. Так же вы приобретете скилл понятия как работают крипторы - вы сможете с
В уроке используется по байтовый крипт - т.е. криптуется не весь скрипт сразу каким-то математическим действием, а каждый байт индивидуально, можно даже алгоритм составить по которому для каждого байта будет своя формула крипта, но об этом как-нибудь в другой раз.
Т.к. мы работаем на клео и т.к. работаем с каждым байтом индивидуально процесс крипта и декрипта займет много времени. Да-да вы не ослышались - скорость запуска скрипта будет зависеть от его размера и сложности алгоритма.
Криптовать мы будем способом инвертирования всех байт - это самый простой способ. 1 байт = от 0x00 до 0xFF (Кто не знаком с HEX, пожалуйста ознакомьтесь, ибо с ним работать удобнее, чем с десятичной системой счисления), к примеру у нас в скрипте байт который мы обрабатываем равен 0x04 значит после инвертирования он будет равен 0xFF - 0x04 = 0xFB
И так приступим, тут я набросал код, который криптует скрипт инвертором, но на выходе мы получаем только закриптованые данные, а не рабочий скрипт, по этому не спешите с тестами, да и криптует он минуты 3 из-за того что скрипт весит 19кб (по этому лучше не сохранять в скрипте исходный код - он будет весить в 10 раз меньше)
http://pastebin.com/2m9C0xEE
После компиляции и запуска в игре под чатом будет отображен прогресс крипта (X/19201), после чего создастся файл Invertion.bin в папке с игрой, содержащий инвертированый код.
Теперь давайте рассмотрим код для запуска этого скрипта. Да-да как я уже говорил, нужно декриптовать скрипт перед запуском, кто-то возможно этому удивится, но так работают все крипторы, потому что игра не умеет работать с закриптованным скриптом, и что бы наш скрипт работал его надо декриптовать в памяти игры.
http://pastebin.com/qMvx1jVx
Что же мы видем? Код криптора и декриптора практически не изменился! Если мы оставим запись в файл, как при крипте, то наш скрипт тупо декриптуется и сохранится в папку с игрой. Но не всегда код на столько одинаков, обычно изменяется математическая операция над байтами, но почему не изменилась у нас? Ответ прост, как я писал в начале урока, для простоты в уроке используется метод инвертирования в качестве крипта. Как 0xFF - 0x04 = 0xFB, так и 0xFF - 0xFB = 0x04.
Примечания:
19201 - размер скрипта который мы закриптовываем/раскриптовываем
функцию декрипта скрипта в памяти можно скрыть только другой такой функцией, т.е. можно только усложнить декрипт скрипта, но не защитить скрипт от него (это касается абсолютно всех криптеров)
Лучше ебашить не по байту как в уроке, а по 4 байта - принцип не изменится, а криптоваться и декриптоваться будет в 4 раза быстрее
Последнее редактирование: