Просмотр полной версии : Защита свф
Для всех кто говорит, что байткодом защитить нельзя...
function fuckdecomplier(){
__bytecode__("96")
}
спасает от flash decomplier, swf decomplier, flare, flasm если стоит вначале кода (защищает только код этого кадра) можно завесить декомпиляторы если через _root._url определить что это декомпилятор и сделать чтонить типо такого
if(a){
while(true){
fuckdecomplier()
}
}
где a условие наличия декомпилятора
Если на пустой кадр поставить:
__bytecode__("3e96020005019d0200f6ff96020005019d0200ecff96020005019d0200e2ff00")
от этого асв 4 виснет(обязательно пустой кадр) там нет стопа так что он просто проматается и это не заметно
Это основано на глюке асв и поэтому эта защита только от асв 4.(пятый вскрывает)
от zlashа можно защитится этим:
function fuckdecomplier2(){
__bytecode__("9d0000960000")
__bytecode__("8e")
}
Пример защиты байткодом - www.sch1234.ru (http://sch1234.ru) Защита не очень хорошая(пи-код не защищен но это для школы:mosking: ) Там можно тоже пару моментов подчерпнуть...
Ловится свободно
В хексе конечно можно вскрыть но от хекса даже экзеку не защитишь.
Но от простых зевак и средних зевак точно защитишь
Один из методов взлома это копировать байткод во флеш
но тогда можно поставить ловушку функцией MMSave() и написать любопытному чтонить например в аутоэкзек
Поэтому советую ломать защиту на эмуляторе(для sch1234 это не относится)
А ктонить знает как от асв 5 защитить?
Пока есть только код только на 100-150 строчек а это многовато и заметно для хекса, потому что найти одну лишнею пару не так просто как огромной кусок мусора((
ЗЫ поиск юзал ничего вразумительного не нашел(( по байткоду всего 7 закрытых тем а по защите все пишут что программки это круто а они быстро ломаются только об этом здесь не принято))
А ктонить знает как от асв 5 защитить?Что асв5 вскрывает этого достаточно.
Ну найдешь ты против него защиту. Выйдет асв 6 и вскроет ее или ты постоянно будешь swf переделывать?
Это всё замечательно. Но зачем?
Ты изобрёл что-то сверх оригинальное? Что-то новое?
Если да, то зачем скрывать это? Как говорит нокс, ныне рулят те, кто вовсю кричит о том, что это сделал именно он, а не скрывает это.
Это всё замечательно. Но зачем?
Ты изобрёл что-то сверх оригинальное? Что-то новое?
Если да, то зачем скрывать это? Как говорит нокс, ныне рулят те, кто вовсю кричит о том, что это сделал именно он, а не скрывает это.
Это Нокс редактирую Роберта Пеннера "Программирование во Flash MX" прочитал?:)
Я защиту использую для того чтобы коды и пасворды скрывать код пусть читают)) Если поймут то герои, я сам его через месяц не пойму))
асв6 врятли будет вскрывать свфки защищеные от асв 5 так как там уже флеш 9 и ас3 и скорей вего у него будет встроен модуль асв5 для вскрытия флэшек версий 8 и ниже
Пароли во флеше не хранят.
А где их хранят. Например в игре есть пароль, который дается за выполнение определеного действия. И как ты представляешь этот пароль вне игры?
И так человек если декомпилирует ничего не узнает а большинство в хексе ради этого рыться не будут
А защиту я ставлю одной строчкой: #include zashita.as Мне не в ломы. Знающие люди поймут как реализовано, а остальные пусть учатся.
Совсем знающие мож даже взломают если не в лом))
Homo Sapiens
15.06.2006, 19:52
На крайняк в коде хэши храни, но это самый последний вариант, а по-нормальному - прямо на сервере
Вообще никто не хранит пароли на стороне клиента, не в Java апплетах, не в SWF плеерах, не хранят.
Я не на сайте размещаю, у меня нет не стороны клиента. У меня всё в свф, если в инете то проще сделать неуловимой)) А хешировать долго... Я обычно солку с числом рендомным сохраняю и от него все пароли) Так что часок на взлом защиты а потом ещё в матиматике разбирайся(сначала в коде разобраться и понять где она) и с таблицей кодов клавиш разбирайся.
По моим расчетам надо 2-3 часа минимум чтоб всё хорошо сделать и найти все пароли
Это не рацианально и не думаю что ктонить ломал хотя я в основном просто друзьям носил так что мож на форуме каком встретятся, но не часто
Единственная свфка в инете это сайт школы. На нем защита для прикола стоит. И потом, благодаря тому что комисия изумилась как вылетают декомпиляторы, этот сайт второе место в городе взял среди школьников.
Techmaker
16.06.2006, 01:42
такая защита бред, hex код всеровно остаётся.
Для начала анкомпрес потом ищи лишние 8e для справки это код открытия и закрытия функции. И если ты не очень с пикодом дружишь и у тебя нет таблицы байткода то тебе её сломать не светит. А если инклуд поставить раз в 100 строчек то найти нужные и ненужные 8e достаточно сложно.
Там весь байткод коректный только незавершенный, битый если хочешь.
Можно ещё произвольный набор символов поставить тогда возможно минут за 15 найти.
И к сведению с помощью хекса ломается любая программа только с разной степенью сложности...
слушай, ты понимаешь, что даже машинный код ломают? вот есть откомпиленые экзешники, их ломают, это значит что ЛЮБУЮ флэшку взломать можно, и при этом особо не напрягаясь
DarkLight
16.06.2006, 12:51
Ну если про асв 5, то ничего особо сложного тут нет. Движок декомпиляции подглючивает на большом кол-ве извращенного байткода. Например, asv 5 очень плохо переваривает __bytecode__("99"), а если ошибок больше 10-15 тысяч, начинает виснуть. То, что здесь названо защитой от злэша, если написать раз 20-25 подряд защитит и от асв. Можно еще вставить второй констант пул - сложнее, чем в 4, но возможно. (для 4 достаточно "88000000")
А в хексе ломать флэшки - это весело. Защищать стоит как минимум, чтобы развлечь взломщика. А кто возражает, не пользуется ли байткодом сам?;)
2Nirth, Techmaker
В хексе конечно можно вскрыть но от хекса даже экзеку не защитишь.
Но от простых зевак и средних зевак точно защитишь
Читать надо уметь... Хотя б прежде, чем отвечать:rtfm:
И вобще я задал вопрос а ответил только DarkLight, а остальные только флуд разводят:p
Жду других возможных решений...
Уважаемые, че к челу привязались? Он толково изложил вполне разумный способ, не единственно возможный конечно. А пароли это ошибки молодости и скажем так, спорная тема. Ваще в большинстве случаев пароль можно раздобыть и без всякого взлома. Меня плющит, когда я выкладываю файл, а който гад выдирает от туда мою интелектуальную собственность. Поэтому пара заморочек для любителей декомпелить это здоровая практика. Успокаивает.
Жду других возможных решений...
Ну так отобфускать все - это ваще не читаемо будетъ. Я не знаю готовых прог делающих антиобфускайт для чужих алгоритмов.
Меня плющит, когда я выкладываю файл, а който гад выдирает от туда мою интелектуальную собственность. Поэтому пара заморочек для любителей декомпелить это здоровая практика. Успокаивает.Децентрализуй код :) Проблем понять как это работает будет гораздо больше, чем встраивать защиту от декомпеляции.
Децентрализуй код :)
На первом курсе на экзамене по программированию за решение 10 задач получил единицу, потом мы с преподом проверили мой код на компе и я получил 4. Один бал сняли - за 3 часа разбора кода. :mosking:
в ActionScript 3.0 есть способ грузить флэшки не как флэшки, а как битовый поток, и рендерить их на месте.
таким образом они кешироватся не будут ;)
На первом курсе на экзамене по программированию за решение 10 задач получил единицу, потом мы с преподом проверили мой код на компе и я получил 4. Один бал сняли - за 3 часа разбора кода. :mosking:Написал код, проверил что работает и расскидал. Главное самому не запутаться, но при определенном опыте будет делаться легко и быстро.
Пароль нужный в игре всё равно легко найти, а по типу реализации тебя сразу к неумеющему новичку со скопированым кодом причислят)
И потом если захочется чтонить добавить или изменить...
Сам от себя я защищаться не хочу
DarkLight
16.06.2006, 13:49
Делай названия переменных не на английском, а на русском или китайском. Декомпиляторы не разберут, в хексе не видно. А код лучше централизованный. По опыту скажу, получается короче и проще. И защищать намного легче. Кстати, как вы относитесь к убийству декомпиляторов при загрузке фильма?
Пароль нужный в игре всё равно легко найти, а по типу реализации тебя сразу к неумеющему новичку со скопированым кодом причислят)
И потом если захочется чтонить добавить или изменить...
Сам от себя я защищаться не хочуПолная централизация это миф. Вы ведь не храните код всех компонентов в одном месте? Достаточно продумать граммотную схему разбивки кода, как вы уже усложните жизнь взломщику, но это не сколько не повляет на возможность его редактирования вами же. А вставка же через каждые пять строк __bytecode__ вас будет раздражать гораздо больше.
Делай названия переменных не на английском, а на русском или китайском. Декомпиляторы не разберут, в хексе не видно. Я с помощью flasm генерил байткод где имя переменой было вобще пробелом. В декомпиллере при просмотре АС конечно же не понять, но стоит посмотреть pi-code и все становится понятно.
Полная централизация это миф.
Ну у меня обычно три слайда. Первый это защита от асв, второй загрузчик, третий сама свфка.
Так что у меня иногда только появляется задание какойнить переменой или stop().
Вы ведь не храните код всех компонентов в одном месте?
Я редко использую компоненты, а если надо пишу сам. Иногда открываю свц файл и там свфку редактирую. И у меня получается не компонент, а подгружаемая свфка...
Достаточно продумать граммотную схему разбивки кода, как вы уже усложните жизнь взломщику, но это не сколько не повляет на возможность его редактирования вами же.
Я не люблю лазить по коду вобще, что не будет больше редактироваться в инклуды выношу.
А вставка же через каждые пять строк __bytecode__ вас будет раздражать гораздо больше.
Не через каждые 5 строк и потом защита ставится перед выпуском свфки и имеется бэк без байткодов.
Я с помощью flasm генерил байткод где имя переменой было вобще пробелом. В декомпиллере при просмотре АС конечно же не понять, но стоит посмотреть pi-code и все становится понятно.
С помощью флесма можно задать альтернативный констант пул с нужным количеством элементов и получится свфка где все переменные например тот же пробел и получится что и пи всё непонятно будет(сам не проверял, но должно работать)
DarkLight
16.06.2006, 15:24
1. При хорошем байткоде flasm, flare, Flash&SWF Decompiler, Zlash сразу прибиваются осью или виснут, а асв декомпилирует неверный пи-код. А из хекса вручную доставать не особо удобно, а потому все ОК - пи-код не получишь. Или будешь по таблице байткода вручную расшифровывать - взлом нерентабелен:)
2. Менять констант пул - не лучший выход, а добавление альтернативного почти не влияет на асв 5 (у меня час ушел, чтобы под него это сделать, а толку мало)
3. Ну у меня обычно три слайда. Первый это защита от асв, второй загрузчик, третий сама свфка.
Так делать нет смысла. Открываем первый фрейм не в асв и смотрим байткод. Редактируем свф - и снова в асв.
2Darklight
Не придирайся к словам. Защиту от асв и на других кадрах тоже повешу просто одна защита только на пустом кадре.
Количество слайдов изменить сложно?
Компоненты бывают и собственные, но менее компонентыми они не становятся, код их хранить в них самих не удобно, все выносится во внешние ас файлы, о чем сам ты и сказал. Так что проблема запутать сам фла файл не проблема.
Вопрос хочешь ты путать или нет. Утверждать что это не способ, учитывая "Но от простых зевак и средних зевак точно защитишь", мне кажется пустой тратой сил.
DarkLight
16.06.2006, 15:36
2PSoWP
Я не придираюсь. Просто у тебя подход к каждому декомпилятору в отдельности - каждый из приведенных тобой кодов в чем-то ломается. Надо делать, чтобы ни один декомпилятор не работал, а сваливать все в кучу - файл раздуется раза в два. (Правда на sch1234.ru (http://sch1234.ru) я сам так сделал - не защита, а каша какая-то. Скоро улучшу. Кстати, как вам мой дизайн?)
Кстати, как вам мой дизайн?)Подпись design by krivoy об этом красноречиво говорит. Данный вопрос обсуждать тут не надо.
2DarkLight
На школьном сайте вобще полная каша и не только в защите...
Не надо грейдить ты уже выпускные почти сдал.
Просто у тебя подход к каждому декомпилятору в отдельности - каждый из приведенных тобой кодов в чем-то ломается.
Если ставить не кучей. А ставить внутрь кода тоже, тогда убирать всю защиту будет сложней намного. От всех кроме асв можно ставить раз в 50-70 строчек кода, а от асв можно поставить ловушку сделав коректный неправильный код и потом защиту(хотя если знаешь таблицу байткода, достаточно легко ищется в хексе нужное место). Ну можно ещё чтонить придумать было бы желание))А пока такой код не очень приятно ломать...
DarkLight
16.06.2006, 15:54
2PSoWP
Хочу увидеть хоть один файл, который ты полностью защитил сам!
И не выкладывай мои!
Кстати, вряд ли ты знаень наизусть таблицу байткода - лично я от силы четверть. А каждый раз в нее лезть не особо удобно. А "корректный неправильный код" зачем? Может еще сделаешь корректный неправильный свф, сайт и т. д. Есле размещаешь в веб, код должен быть оптимизирован - а у тебя с этим явно проблемы...
Хочу увидеть хоть один файл, который ты полностью защитил сам!
И не выкладывай мои!
Обязательно защищу специально для тебя свфку.(не твою)
Кстати, вряд ли ты знаень наизусть таблицу байткода - лично я от силы четверть. А каждый раз в нее лезть не особо удобно.
Я её не знаю вобще, если очень захочу расшифрую с помощью таблицы. Только я ленивый...
А "корректный неправильный код" зачем?
Для прикола.
Может еще сделаешь корректный неправильный свф, сайт и т. д.
Может сделаю))
Есле размещаешь в веб, код должен быть оптимизирован - а у тебя с этим явно проблемы...
Моё дело код со средней оптимизацией. Ты всегда оптимизируешь. Кстати после этого бывает приличное число новых глюков и ошибок...
Techmaker
16.06.2006, 18:46
a=function(){_globa={thi:__bytecode__("88")},delete(_globa);},a(),delete(a)
если эту строку поставить в начале кода, она спрячет его от
-SWF Decompiler,
-flare,
-ASV(либо искорёжит, правда у меня нет новых версий чтобы тестить, у меня тока 3 демо),
-flasm (икорёжит и уничтожит все лейблы)
...
хотя найти я думаю можно =)
ASV5 в начале руганулся, но вскрыл все верно.
Techmaker
16.06.2006, 19:01
ASV5 в начале руганулся, но вскрыл все верно.
ща попробую достать этот ASV 5 =)) (Aleksey Shreyder Vladimirovich)
мои инициалы =)))
2PSoWP
Децентрализуй код
к примеру как тут =))) (http://orangeflash.eu/?p=51#more-51)
...
Нашёл ASV5 , я думаю от него не скрыть так просто... да и зачем всеровно скоро новый будет
Я уже писал что асв 6 не будет вскрывать флешки 8 лучше 5, так как он будет вскрывать АС3, а не АС2,и в него будет просто встроен модуль АСВ5...
Я уже писал что асв 6 не будет вскрывать флешки 8 лучше 5, так как он будет вскрывать АС3, а не АС2,и в него будет просто встроен модуль АСВ5...
Вы разработчик?
Techmaker
17.06.2006, 06:26
фишка в том что ASV5 считывает код отдельно и генерирует флэшку отдельно(preview mode)
по этому код защитить, наверное, практически не возможно, __bytecode__ сразу же обнаружается, если только какую то супер навороченую комбинацию не сделать...
а так как AS сканируется отдельно - всякие
function fuckdecomplier(){
на проверку _url не заставят программу повиснуть.
с паролями помоему проще зашивровать цезарем хотябы и вставить функцию расшифровки, глупые дети не знакомы с цезарем =)
А как взламываються флешки защищенные SWF Encrypt 3.0, помоему там защита получше чем байт кодом?
[цензура]
АСВ4 выдаёт пару десятков ошибок...
АСВ5 пока не ломал но наверно так же
Байткод взломать сложнее если правильно наложен то его найти геморой. а если закомпресина и от асв стоит защита, то надо сначала снять защиту от асв и раскомпресить и потом в хексе искать неправильную комбинацию байтов...А это не просто(по крайней мере не всегда)
Кто-нибудь приведет реальные аргументы необходимости защиты кода? Начнем с того, что ас2 восстановить в исходном виде просто нельзя. И потом, добавление байт-кода, который может нарушить стабильность ролика - не есть хорошо. Не говоря уже о том, что профи может без проблем создать новую работу, в отличие от тех, кто их копирует. Оригинал всегда появляется раньше, и определить копию несложно.
Techmaker
17.06.2006, 13:51
с паролями помоему проще зашивровать цезарем хотябы и вставить функцию расшифровки, глупые дети не знакомы с цезарем =)
познакомь глупых детей =)
PSoWP, по поводу поста 43, не стоит так увлекаться, мы защиту, а не взлом обсуждаем :D
2iNils
Я просто думал это очевидным если проследить работу программы, то понятно, что она код в тег засовывает(не скрывая особенно), а вместо кода заглушка.
Безусловно это прикольно и круто(сам такую штуку сделать не могу),
но ломается так же легко как и ставится.
2__etc
Причин особенных нет, но это стимул не подсматривать прохождение игры.
Даже если не хранить пароли в некоторых затруднительных местах можно в коде найти решение. Ещё многие оставляют невидимые (когда видимые и так видно:)) кнопки для разрабочиков за рамкой свфки...
Ещё я на одном форуме встретил чувака с моей функцией(даже названий переменых не сменил(я если беру то меняю и чуть оптимизирую). И он просил её исправить потому что она не работает а в "примере" работает.
А то что он нихрена не знает(не скопировал задание переменной пару вспомогательных функций и ещё в этой функции пару строчек удалил(повиду рендомно)). И считает себя суперпограммером, который небольшую ошибку совершил случайно.
И кстати эта тема по количеству просмотров обгоняет многие, а следовательно народу интересно зачем-то, то есть нужно.
А если считаешь: "Всё для народа" выкладывай к каждой своей свфке флашку с хорошими коментариями, чтоб бедным людям не пришлось долго в коде разбираться). Мы так сделали информатичкам(там кода меньше, чем коментариев к нему)
2Usnul
С цезарем не знаком. Если можешь выложи ссылку(желательно крякнутый(не прошу крякать, и не спрашиваю как это делать так что по правилам)) Зарание спасибо
Я тут код даю неоптимизированым(ну минимум совсем), а когда сам делаю там у меня какайнить оптимизация появляется, а после Дарклайта там вобще не строчки из кода не выдерешь, он над ним очень сильно извращается(свф работает быстрей), и если через неделю откроет будет часа 3 сам разбирать, так что он оптимизирует, когда основную структуру менять уже не будем.
ё-мое, ну не цезарь, любой другой шифр, цезарь просто один из самых простых для понимания.
google -> "cesar cipher".
http://www.google.co.uk/search?hl=en&q=cesar+cipher&btnG=Google+Search&meta=
Пользователю PSoWP предупреждение, за просьбу выложить крякнутую версию.
Мое предложение по защите
Юзер подписывается на использование проги. Ему выделяете на своем хостинге псевдо-папку с подгружаемой пачкой модулей. У каждого модуля при очередной загрузке свое новое название. Эти названия знает сервер, который выдает ключ для генерации случайных имен и главная свф-ка (диспетчер), которая всегда болтается у клиента. Первые случайные n имен сгенеренные диспетчером от полученного ключа и будут теми самыми названиями модулей.
При вызове этих модулей они в свою очередь уведомляют главный сервер о том в какой среде они запущены. Если они были вызваны с не теми параметрами или не в той среде, то сервер понимает, что кто-то копается в SWF ках. Папка тут же блокируется. Юзеру бан и помещение в блэклист.
Вопрос степени победы над ломателем - сколько он за это время успел скачать SWF подмодулей и начать декомпилять, стоит ли у него прокся, которая просто сохраняла все SWFки и он теперь может все разложить по полочкам.
--------------
Хотя конечно самый правильный способ защиты - использовать Flashку в играх исключительно для отрисовки действий сервера. Никакого AI или игрового функционала. Пусть хоть заломаются
Причем тут прокся и сохранение?
Homo Sapiens
18.06.2006, 13:21
2 Usnul: Как писал Шнайер (если не ошибаюсь) есть 2 вида криптографии, которая защищает от младшей сестры и от правительств других стран. Код Цезаря явно относится к первому виду.
2 JhAZZ: Всё что попало на комп пользователя - считай потенциально взломанным. Как и "свфка диспетчер". Взломав её несложно понять принцип генерации "случайных" названий, благо во Flash никогда не было приличного рандомизатора.
Согласен с __etc - как правило защищать as нет особого смысла.
Защищать имеет смысл только проекты, которые собираешься продать минимум два раза.
Я не люблю облегчать другим жизнь. Я пару больших флэшек делал за полчаса потому что полностью копировал эфекты других. (Я считаю если правишь сам то всё норм) И я не хочу чтоб мой какой не какой но всётаки труд брался за 5 минут...
А через сервер защищать не могу я делаю свфки не для инета я друзьям только даю. Ну некторые выкладывают в инете по аське и мылу пересылают...
Но всё равно не хочу быть тутором.Хочу чтоб мой код брали только те кто в этом разбирается. А те кто разбираются не будут до флашки декомпилировать, потому что защита снимается с помощью асв и хекса а асв не умеет создавать норм флашек. Там уже проще спрограммировать анологию(и возможно улучшеную)
2Гомо Сапиенс
Главное в защите сделать взлом не рациональным.
Вот защищаясь энкриптом взлом рационален.(Взламывается 5-10мин)
А байткодом(хорошим) не всегда рационален, его ломать будут только ля проверки(поддержания) навыков или если позарез надо(например не знают как реализовать с такой большой производительностью, или не знают кк реализовать вобще(маловероятно))
А сл-но процентов 90 из тех кто бы хотел сломать уже этого делать не будет...
если ты думаешь что ты хоть раз придумал что то оригинальное, то ты здорово ошибаешься, на данный момент во флэше обильно юзаються ( и заново придумываются) решения которые юзались еще лет десять назад.
http://google.com
М-да. Взлом мультика или клиентского приложения - чтобы посмотреть, как там все внутри? это диковато. Я думаю, что все эти декомпиляторы для новичков, лень читать help. А кодом чужим иногда стоит пользоваться - сокращение времени. Это ведь не значит, что ты не можешь также, просто время иногда важнее. В мире с++ вообще все уже давно написано и расписано, остается грамотно использовать и продвигать готовые решения...
Я не люблю облегчать другим жизнь. Я пару больших флэшек делал за полчаса потому что полностью копировал эфекты других. (Я считаю если правишь сам то всё норм)Оригинально. Браво!
И я не хочу чтоб мой какой не какой но всётаки труд брался за 5 минут...Надо смириться с багами данного мира и не выкладывать свои swf в сеть.
DarkLight
20.06.2006, 17:25
Баги данного мира надо ловить и уничтожать.
Кстати, про стабильность ролика. Если упаковывать в функцию, то байткод оттуда не выберется (за 300 с лишним файлов не случалось), если, конечно, эту функцию не вызывать:) В if тоже хорошо, надо только, чтобы компилятор или асв не понял, что это мертвый код. Но функция удобнее тем, что, обнаружив декомпилятор, мы можем его завесить или убить.
Например, Flash Decompiler пихает свф в FDec.tmp, за что юзера можно и наказать. Кстати, кто-нибудь знает как зарегистрировать SWF Dec., а то один знак в _url меняется много где, а других зацепок что-то не вижу...
Кстати, SWF Encrypt и байткод несовместимы, код перестает работать.
И еще, не обязательно сразу лезть в тэги в асв, в хексе и так видно(это я про Encrypt - сие не является руководством по взлому - это просто факт).
И вообще - где новые идеи? - хотя бы по извращенной работе с Flasm - что только я и PSoWP (ну, и Techmakerу спасибо) что-то реально в тему пишем!
Защита от асв5 будет через пару дней.
artcraft
20.06.2006, 17:38
идеальная защита только одна: списать на CD и спрятать за шкаф :~)
И вообще - где новые идеи? - хотя бы по извращенной работе с Flasm - что только я и PSoWP (ну, и Techmakerу спасибо) что-то реально в тему пишем!
Вам реально нечем занятся.
Techmaker
20.06.2006, 20:20
пора тему в Флейм =))
Для души -- пожалуйста.
Защищать каждый сделанный ролик -- умаешься.
2 Usnul: Как писал Шнайер (если не ошибаюсь) есть 2 вида криптографии, которая защищает от младшей сестры и от правительств других стран. Код Цезаря явно относится к первому виду.
ну почему все младшие сестры думают что они умнее меня?
Homo Sapiens
21.06.2006, 02:18
Ммм, не знаю, лично не знаком :)
мне известны сложные методы шифрования, но такой момент: если кто-то знает про цезаря и алфавитный анализ, то шансы того что он знаком с более замороченными методами очень велики. Я думаю что если ты хочешь скрыть такую вещь как например код для следующего уровня и перегоняешь его с помощью простенького шифра во что-то иное, то очень, очень низкий процент тех кто не полениться воспользоваться декомпилятором поймет (найдет) где собака зарыта. Умные и целеустремленные люди (что обычно не сочитается) смогут взловать все что вы им предложите. Лично я предпочитаю вещи вроде RC3 или AES, но с другой стороны они могут представлять интерес скорее с академической точки зрения нежеле с практической в данном случае. Если алгоритм щифрования доступен (через декомпилятор) то какой смысл в сложности самого метода?
sourcer21
21.06.2006, 05:09
Вы знаете не селен я во флеше, но поппробую предложить вариант один. незнаю может я что то щас тупое скажу,но сильно не ругайте. :rolleyes:
И так начнем:
fuction encode(str)
{
return str-кодированная по какому то алгоритму...
}
function decode(str)
{
return str-декодированная по алгоритму которому кодировали...
}
вот две этих ф-ии... делаем абсолютно простой алгоритм шифрования и дешифрования чтобы не грузило флеш сильно...
пишем программу на php к примеру которая работает в несколько проходов - пускай в 10
имеем исходный код который надо закодировать.
напиример вот этот:
with(this){
if (drawing) return;//пока рисуем, не дергаемся
clear ();
if (fc != undefined) beginFill (fc,fa);
moveTo (o ? this [0]._x : (this [0]._x + this [l - 1]._x) / 2, o ? this [0]._y : (this [0]._y + this [l - 1]._y) / 2);
for (var i = 0; i < l - 1;i ++) {
if (lc != undefined) lineStyle (lw,lc, this [i].w ? 0 : 100);
curveTo (this [i]._x, this [i]._y, (this [i]._x + this [i + 1]._x) / 2, (this [i]._y + this [i + 1]._y) / 2)
}
if (!o) curveTo (this [i]._x, this [i]._y, (this [i]._x + this [0]._x) / 2, (this [i]._y + this [0]._y) / 2);
if (fc) endFill ();
}
кодируем его в несколько проходов по придуманному алгоритму. кодируем программой другой на PHP на C++ на чем угодно
1-ый проход программы
программа случайным образом(но не ломая синтексис) делит этот исходиник... допустим что она поделила вот так вот:
with(this){
1---------------------------------------------
if (drawing) return;//пока рисуем, не дергаемся
clear ();
2---------------------------------------------
if (fc != undefined) beginFill (fc,fa);
moveTo (o ? this [0]._x : (this [0]._x + this [l - 1]._x) / 2, o ? this [0]._y : (this [0]._y + this [l - 1]._y) / 2);
3---------------------------------------------
for (var i = 0; i < l - 1;i ++) {
if (lc != undefined) lineStyle (lw,lc, this [i].w ? 0 : 100);
curveTo (this [i]._x, this [i]._y, (this [i]._x + this [i + 1]._x) / 2, (this [i]._y + this [i + 1]._y) / 2)
}
4---------------------------------------------
if (!o) curveTo (this [i]._x, this [i]._y, (this [i]._x + this [0]._x) / 2, (this [i]._y + this [0]._y) / 2);
5---------------------------------------------
if (fc) endFill ();
}
и кодирует некоторые куски, но не все...
допустим она выбрала так: куски 1-2 и 4-5 и вот во что превращает исходник:
with(this){
eval(decode("#$^%&*()%%$%$%^$%^$%$%^%^%$%$%$$%^$#$^#$$##@%ERYTFYTF^%FRDD^ED^D"));
if (fc != undefined) beginFill (fc,fa);
moveTo (o ? this [0]._x : (this [0]._x + this [l - 1]._x) / 2, o ? this [0]._y : (this [0]._y + this [l - 1]._y) / 2);
for (var i = 0; i < l - 1;i ++) {
if (lc != undefined) lineStyle (lw,lc, this [i].w ? 0 : 100);
curveTo (this [i]._x, this [i]._y, (this [i]._x + this [i + 1]._x) / 2, (this [i]._y + this [i + 1]._y) / 2)
}
eval(decode("#$^%&*()%%$%$%^$%^$%$%^%^%$%$%$$%^$#$^#$$##@%ERYTFYTF^%FRDD^ED^D"));
if (fc) endFill ();
}
теперь повторяем такуюже манимуляцию с этим исходником... (приведу дяллее на нем пример для закрепления)
Допустим программа разбила на блоки слудующим образом:
with(this){
1-------------------------------
eval(decode("#$^%&*()%%$%$%^$%^$%$%^%^%$%$%$$%^$#$^#$$##@%ERYTFYTF^%FRDD^ED^D"));
if (fc != undefined) beginFill (fc,fa);
moveTo (o ? this [0]._x : (this [0]._x + this [l - 1]._x) / 2, o ? this [0]._y : (this [0]._y + this [l - 1]._y) / 2);
2-------------------------------
for (var i = 0; i < l - 1;i ++) {
if (lc != undefined) lineStyle (lw,lc, this [i].w ? 0 : 100);
curveTo (this [i]._x, this [i]._y, (this [i]._x + this [i + 1]._x) / 2, (this [i]._y + this [i + 1]._y) / 2)
}
3-------------------------------
eval(decode("#$^%&*()%%$%$%^$%^$%$%^%^%$%$%$$%^$#$^#$$##@%ERYTFYTF^%FRDD^ED^D"));
if (fc) endFill ();
4-------------------------------
}
повторяем манимуляцию кодирования... ну к примеру кодируем блоки 1-2 и 2-3
выходит следующие
with(this){
eval(decode("#$^%&*()%%$%$%^$%^$%$%^%^%$%$%$$%^$#$^#$$##@%ERYTFYTF^%FRDD^ED^D"));
eval(decode("#$^%&*()%%$%$%^$%^$%$%^%^%$%$%$$%^$#$^#$$##@%ERYTFYTF^%FRDD^ED^D"));
eval(decode("#$^%&*()%%$%$%^$%^$%$%^%^%$%$%$$%^$#$^#$$##@%ERYTFYTF^%FRDD^ED^D"));
if (fc) endFill ();
}
ну и так можно до бесконечности....
а теперь представьте сделать так к примеру десять проходов... человек разкодировать замучается на 3ем уже проходе...
а так можно до бесконечности кодировать этот код...
и что бы его раскодировать это получается парсер писать надо в обраную сторону... это тоже гемарой
или еще можно как делать
запрашивать у скрипта этот код и только во флеше его выдавать вщамен на логин пароль и какойнибудь кодик...
представим что флешка это ничто иное как просто
акшн скрипт который долбится в PHP скрипт, а скрпт ему взввращает некий код #$^%&*()%%$%$%^$%^$%$%^%^%$%$%$$%^$#$^#$$##@%ERYTFYTF^%FRDD^ED^D\
а флешак этот код исполняет как eval(decode(#$^%&*()%%$%$%^$%^$%$%^%^%$%$%$$%^$#$^#$$##@%ERYTFYTF^%FRDD^ED^D));
и получается рекурсивная распаковка...
ну вот аткая тема, если хватит репения расковырять, то расковыряют конечно
Beastriker
21.06.2006, 11:11
Вообще никто не хранит пароли на стороне клиента, не в Java апплетах, не в SWF плеерах, не хранят.
да, это тупиковый путь...
лучше всего - serverside scripts))
2sourcer21, а что будет флеш делать с тем кодом после того как его распакует, на полку положит? :D
sourcer21, ужасный код. Больше такое не показывайте.
Вообще никто не хранит пароли на стороне клиента, не в Java апплетах, не в SWF плеерах, не хранят.
Учись читать. Я писал что у меня только сторона клиента, а я не хочу, чтоб мой код ктонить просто так читал, пусть мучается если хочет...
Байткод из любой флэшки в хексе вытащить можно. А ещё оперативку просматривать можно и входящие и отбывающие пакеты(подкоректировать даже можно) тогда тебе сторона сервера не поможет)
Но не каждый разбирается в этом(некоторым ещё лень) так что от 70-80% потенциальных взломщиков ты освобожден при минимальной защите и от 80-90% при хорошей.
Мой вариант=)
Стукнуться в Адоб - пусть добавят в настройки публикации выпадающее меню из двух пунктов, типа "защитить файл при компиляции" или "разрешить просмотр исходного кода" и при компиляции не мудрствуя лукаво просто передавать флаг защищино или нет.
В лицензионном соглашении добавить пункт о защите авторских прав разработчиков посредством сего механизма.
И под шумные аплодисменты разорять производителей ПО (декомпиллеров) которые будут декомпилить "защищиенные" swf-ки.
А для полной потери интереса к сторонним декомпиллерам включить в дистрибутив Flash встроенный декомпиллер.
Эк как размечтался.
Вот что могут сделать крымская жара и два литра пива.
=)
Techmaker
25.06.2006, 06:42
что за бред пошёл... =)
Мой вариант=)
Стукнуться в Адоб - пусть добавят в настройки публикации выпадающее меню из двух пунктов, типа "защитить файл при компиляции" или "разрешить просмотр исходного кода" и при компиляции не мудрствуя лукаво просто передавать флаг защищино или нет.
=)
Это и так уже сделано!! Дебагерры научились это обходить !
Попробуйте как это взломать !!
http://minifiles.narod.ru/abcd.swf
Обычная кнока с кодом!
Код кнопки:
on (release) {
trace(?????);
}
где ??? заданная мной строка, если взломаете то напишите эту строку!
Crypted by SWF Encrypt 3.0
да правильно, неужели так легко ламаеться?
Да все ломается.
Это и так уже сделано!! Дебагерры научились это обходить !
Так об этом и речи нет.
Но. Где нибудь написано, что попытка декомпиляции "защищенного" файла есть деяние незаконное??
Нет.
А если такой пункт в соглашении будет.
Тут только ленивый не снимет с разработчиков декомпиляторов свои пару сотен тон баксов, так, мимоходом.
Да все ломается.
Так об этом и речи нет.
Но. Где нибудь написано, что попытка декомпиляции "защищенного" файла есть деяние незаконное??
Нет.
А если такой пункт в соглашении будет.
Тут только ленивый не снимет с разработчиков декомпиляторов свои пару сотен тон баксов, так, мимоходом.
Угу, надо еще лицензию на html ввести - типа просмотрел исходный код чужой страницы - заплати. :rtfm:
Тебе в голову не приходило, что декомпиляторы тоже защищены авторским правом? Нигде не сказано, что это делать нельзя. Если кто нибудь заявит, что его код нельзя читать, то это будет последний день работы этого кода через инет на стороне клиента.
Защита кода это всегда некий авторский метод - чем меньше людей его используют, тем сложнее его вскрыть. Обратно, всегда можно предложить способ декодирования - либо флеш ваще не будет отображаться плеером.
Да. Прикольно.
Ребята ну почему му всё время пытаемся вырыть защитный вал там, где логичнее поставить сторожевцю вышку??
А как насчет подгружать флешку через Flex ??
Flex декомпилеров помоему есче нет?
Techmaker
24.07.2006, 05:30
защита от ASV5 и всех остальных декомпиллеров
//
if(false){__bytecode__("88");};a=function(){_globa={thi:__bytecode__("88")},delete(_globa);},a(),delete(a)
if(typeof(_parent)!="movieclip" && typeof(_parent)!="object" && !_parent._name){
for(eval in _parent){__bytecode__("FF")}
for(eval in _parent){__bytecode__("FF")}
for(eval in _parent){__bytecode__("88")}
for(eval in _parent){__bytecode__("88")}
};
//
a=function(){
trace("muhomor")
};
a();
b=new Sound();
txt="0 1 2 3 4 5 6 7 8 9 A B C D E F".split(" ").reverse()
b="";
for(i=0;i<=255;i++){
b+=txt[int(i/16)]+txt[int(i%16)]
};
trace(b)
//
Успешно повесил Flash этим чудесным кодом...
А Techmaker не говорил что flash должен при этом работать :)
2PSoWP
Я не придираюсь. Просто у тебя подход к каждому декомпилятору в отдельности - каждый из приведенных тобой кодов в чем-то ломается. Надо делать, чтобы ни один декомпилятор не работал, а сваливать все в кучу - файл раздуется раза в два. (Правда на sch1234.ru (http://sch1234.ru) я сам так сделал - не защита, а каша какая-то. Скоро улучшу. Кстати, как вам мой дизайн?)
Буга-га-га ))) Да кому он нафиг нужен, защищаю ещё :D :D :D
Techmaker
24.07.2006, 23:07
Успешно повесил Flash этим чудесным кодом...
:D :D :D это как говорится "побочные эффекты"
если флэш не повис - считай спасся от взломщиков =)))
вот что выдаёт АСВ5 из этого кода:
a = function () {
trace ("!ERROR!");
};
?();
Set("!ERROR!", new !ERROR! ());
Set("!ERROR!", "!ERROR!".!ERROR!("!ERROR!").!ERROR!());
Set("!ERROR!", "!ERROR!");
Set("!ERROR!", 0);
while (!ERROR! <= 255) {
Set("!ERROR!", !ERROR! + (!ERROR![int (!ERROR! / 16)] + !ERROR![int (!ERROR! % 16)]));
!ERROR!++;
}
trace (!ERROR!);
Я-таки скомпилил это. Половину можно убрать. А вообще, опять же, не вижу смысла юзать.
Techmaker
24.07.2006, 23:35
Я-таки скомпилил это. Половину можно убрать. А вообще, опять же, не вижу смысла юзать.
половина - от других декомпиллеров, хотя смысла я тоже особо не вижу
Techmaker
24.07.2006, 23:45
i=function(){__bytecode__("88")},delete(i);
это в начале кода - от простых декомпиллеров, таких как SWF Decompiler, flare и др.
(прячет весь код на кадре целиком)
затем идёт
a=function(){_globa={thi:__bytecode__("88")},delete(_globa);},a(),delete(a);
это от АСВ 3 версии и от flasm
(прячет или ковекркает до неузноваимости)
(этот код может влиять на export при ctrl + enter)
затем
if(typeof(_parent)!="movieclip" && typeof(_parent)!="object" && !_parent._name){
for(eval in _parent){__bytecode__("FF")}
for(eval in _parent){__bytecode__("FF")}
for(eval in _parent){__bytecode__("88")}
for(eval in _parent){__bytecode__("88")}
// для гаранитии продублировано
};
защита от АСВ5
(коверкает код)
условие if - чтобы у флэшки не было глюков
вобще, если юзать, лучше делать #include в начале кадра и все 3 состовляющих сразу, а экспортировать swf только при помощи file > export
Вся ваша защита ерунда , если флешка мультик , я его вскрою самим флешем сделав один скромный трюк .
P.S. Каюсь я так делал для двух работ а именно мультфильм "The Yuyu" ну понравился он мне а лакольно он неработает , для обычного экспорта он защищен паролем вот и пришлось пойти на это что бы сохранить у себя для коллекции , я оттудова ничего небрал чесно , чужих кодов несмотрю компиляторов у меня нет . Но мультик очень понравился =)
P.S.2. Никому нескажу ... это не тот тип знаний который должен распространятся .....
Techmaker
25.07.2006, 04:30
swf decompiler =))))
Ну да, повесить флешку на локальный сервак и смотреть
australian incognito
29.07.2006, 04:28
защита от ASV5 и всех остальных декомпиллеров
//
Слушай, а если я теперь твой код в своих свф-ках буду использовать, тебе не обидно будет? У меня всё скомпилировалось и я даже проверил на SWF Decompiler'e. Искромсал всё в капусту, круто!
Techmaker
03.08.2006, 03:15
да юзайте мне пофиг вобще
CCCPirate
03.08.2006, 15:07
:yahoo: отличная вещица, буду пользоваться, большое спасибо, молодец
2Techmaker
Клева! Молодец! я тоже буду пользоваться)
DarkLight
14.08.2006, 18:15
Вещь отличная, только рекомендую разнообразить(FF не единственный вариант), а то очень заметно. Кстати, способ отличный, т к не убивает декомпиляторы.
А от "всех остальных" можно пользоваться 96 - менее заметно в хексе - и так несколько 88 в одном месте настораживают.
Кстати, можно сделать просто параллельный констант пул (для 5го АСВ должна быть такая же длина) - эффект в общем аналогичен.
И еще: для АСВ5 можно просто удлиннить код в несколько тысяч раз (есть несколько вариантов заставить АСВ это сделать). В результате АСВ либо виснет либо не отображает код. Хорошо помогает издевательство над конструкциями с try (код 8F)
DarkLight
17.08.2006, 15:03
Еще кое-что против 5ого асв:
if (sa) {
__bytecode__("88");
0x00000000;
}
if (sa) {
__bytecode__("96");
0x880088;
}
avatar.onRollOver = function():Void {
mySound.stop();
avatar.gotoAndStop(2);
mySound.start(0, 1);
};
avatar.onRollOut = function():Void {
avatar.gotoAndStop(1);
};
var mySound:Sound = new Sound();
mySound.attachSound("krik");
асв5 ругается на непредвиденный конец кода, Флеш, СВФ Декомпайлер обламываются...Злэш тоже...Фласм и Флэр тоже не справляются...
Можно проще сделать сделать защищаемую флешку внешним файлом в качестве адреса внешнего файла выбрать адрес включающий переменную php - относительный адрес защищаемой флешки.
проверено
асв5 прикольно открывает... точнее не открывает))
И кстати рад что за время моего отсутствия тема не сдохла и появились люди, которые всё-таки считают защиту нужной вещью))
2Меседер
тут говорится о защите не на сервере а защите на стороне клиента...
А как вобще для защиты байт код этот находится ?
И если не трудно дайте линк на таблицу байт - кода.
Полных таблиц в инете я не видел...
Можно с помощью АСВ сделать...
А как вобще для защиты байт код этот находится ?
Ищут байткод которому нужны параметры (доп байты), а параметры не дают, в результате получается что байткод сжирает часть кода, а флеш этот код не волнует, потому что прыжка на этот байткод нет...
Ну это в общих чертах))
Да, занятная тема... Думаю, не бесполезная. С одной стороны согласен с __etc в том, что защищать стоит тогда, когда хочешь продать несколько раз. Никаких угрызений совести по поводу воровства чужих идей не испытываю, впрочем, как и не боюсь, что кто-то украдёт что-то у меня. Если человек способен хотя бы пользоваться программным обеспечением и разбираться в чужом коде, то значит он не так уж и плох. В конечном итоге важны две вещи - выполнение всех условий технического задания и завершение проекта в течение того времени, которое было оговорено в контракте. Если я могу повысить эффективность своей работы за счёт того, что почерпну информацию из плодов труда другого человека, это замечательно. Если кто-то повысит эффективность своей работы за мой счёт... Чёрт, я даже об этом не думаю. Я понимаю, что всем хочется считать себя великими созидателями ТОГО_ЧЕГО_НЕ_БЫЛО_ДО_НИХ. И в желании этом многие оказываются слепы, не осознавая, что многое действительно создано очень давно. А многие технологии, о которых человечество узнало из компьютерных игр, существовали ещё до выхода первого DOOM. Но это так, к слову... Если же вы действительно создали что-то удивительное и не хотите с ним расставаться, спрячьте его в запароленной директории и показывайте только самым близким людям по праздникам. ^_^ В конечном итоге важен результат. Поэтому каждый человек должен для себя ответить на вопрос "ЗАЧЕМ"? Зачем защищать флешку? Сторонники защиты ответят: "Как? Чтобы злобные люди не воспользовались плодами моего труда!" А чем это плохо? Ради чего вы делаете то, что делаете? Является ли Флеш лишь средством заработка денег, которые в свою очередь являются средством достижения множества целей? Или Флеш - это кисть в руках художника, в ваших руках? Если это просто способ заработать, то какая разница, кто скопирует ваш код? Вы своё получите. И, покупая дорогие лекарства для матери, покупая дорогие игрушки своему ребёнку, покупая дорогие подарки своему любимому человеку, вы не станете задумываться о том, кто сейчас ломает ваш код. Вам будет наплевать на это. Единственное, что вас будет волновать - это счастье в глазах близкого вам человека. Если же вы считаете, что с помощью Флеша вы создаёте произведения искусства, то будьте готовы к тем аспектам жизни, которые свойственны гениям и великим творцам. Вы - гений? Вы создали то, чего не было до вас? То, до чего НИКТО до вас не додумался? Отлично! Только кто сказал, что гениальность - это благо? Бытует мнение, что всякая гениальность - это выпячивание, отклонение от нормы, паталогия. Часто гениальные люди бывают одиноки, у них не складывается личная жизнь, потому как они много времени уделяют созданию удивительных по своей красоте картин, скульптур и прочего... Художник, расписывающий купол собора может не есть в течение суток. История знала примеры такого. Так почему вы решили, что важу жизнь не должны сопровождать никакие волнения, если вы действительно дерзнули считать себя первооткрывателями чего-либо? Вы всё решили? Ну так бойтесь. Бойтесь каждую минуту. Защищайте своё творение в ущерб своему свободному времени. Будьте готовы к испытаниям, ибо вы сами выбрали для себя такой путь.
С другой стороны, в поддержку тех, кто старается защитить флешки, скажу, что иногда может возникнуть необходимость произвести на клиента дополнительно впечатление, защитив флешку. Сторонники применения Флешка как "кисти" могут посчитать это унизительным. Сторонники заработка денег вполне могут принять подобный аргумент. Удовлетворение клиента - это всегда хорошо. Думаю, это в большей мере может касаться фрилансеров.
Что же касается скрывания паролей в играх... Крупные фирмы, на сайтах которых можно скачать "шароварные" (Shareware) игрушки провели исследования и пришли к выводу, что нет смысла защищать свои продукты какими-то сверхсложными методами. Человек, который скачивает шароварную игру с сайта того же Reflexive, а потом берётся искать в Гугле всякие кряки, не является их клиентом. Исследования показали, что серьёзные клиенты заплатят ~20$ за игру и будут пользоваться ей легально, а те, кто ищет кряк, не станут покупать игру, даже если не смогут взломать. Может и тут так же? Если человек ищет в декомпилированном коде коды, то зачем ему мешать? Ну не хочет человек играть в вашу игру честно. Не понравилась она ему или просто лень. Зачем же совершать насилие над ним? Или у вас есть какая-то таблица рекордов и вы хотите, чтобы туда не заносились разные читеры? Ну так нет способа от них защититься. Даже если человек не найдёт кодов, даже если не найдёт URL'а скрипта, управляющего записью в базу данных, остаются иные методы отослать подправленый результат на сервер. В своё время для игры Crimsonland из-за "нечестных" рекордов, насколько я слышал, была закрыта возможность доступа к серверу с машин украинских пользователей. А до того было введено численное ограничение на количество очков... Так что смиритесь... Не пытайтесь достичь абсолютной защищённости. Ищите компромисс.
И обязательно ответьте для себя на тот самый вопрос "ЗАЧЕМ?"
Флеш для вас "кисть" или орудие труда? ^_^
Лично мне хотелось бы, чтобы тема развивалась. И не только потому, что тут пишут про защиту, но и потому, что я тут уже узнал многое из того, чего не знал.
Была еще одна веселая прога, которая превращала имена в переменных (при компиляции свф) в тарабарщину, что затрудняло чтение кода после декомпиляции.
таких програм куча, называются обфускаторы
Вау! подскажите линк на хороший обсфукатор.
http://tech.motion-twin.com/obfu.html
правда стоит 1500 евро.
Вау! подскажите линк на хороший обсфукатор.Их действительн очень много. Но для АС незнаю. Её можно самому написать, даже на пыхпыхе.
Был бесплатный. Найду - напишу.
их можно написать даже на самом AS, правда тогда алгоритмы легко будет узнать, декомплив=)
В книге от Macromedia Press точно была ссылка на один из них (тогда еще для Flash 5 или 6)... вот только ни в одной из книг, лежащих у меня на полке не вижу. Значит, где-то еще валяется...
1)правда я не вижу смысла, 99% того что "придумывается" в флэше уже было придумано в паскале, С, яве и десятке других языков.
Если человеку что то нужно, он легко найдет это в каком либо опенсорсном проекте, к большинству синтаксисов можно легко привыкнуть, просто ознакомившись с документацие.
2) хороший обфускатор бесплатным быть не может.
их можно написать даже на самом AS, правда тогда алгоритмы легко будет узнать, декомплив=)
Декомпиляция AS-обфускатора для того, чтобы понять декомпилированный AS. ^_^
DRAGOnoid
15.11.2006, 11:17
как то я раньше искал в поиске этого форума подобную тему и наткнулся на интересную утилитку которая SWF переделывает в HTML+что то ещё. Там был в итоге явно не флешовый формат а код страници HTML ничего общего с <OBJECT> не имеет.
классная вещь была - ничего лучше тогда , да и думаю щас нету. Жаль весь форум перерыл но так и не смог найти сново. Может кто знает про это что то более подробно?
^_^
Как я понял защиты не было и нет на сегодняшний день!!! :(
Думаю надо просто идти вперед! не обращая внимания на воров... пока они будут пиз...ть мы будем делать новые фишки! :)
DarkLight
22.11.2006, 19:29
Как это нет? много вариантов раскидано по топику.
а абсолютной защиты не существует
DRAGOnoid
22.11.2006, 23:21
ну вот я спрашивал про интересный вариант - у меня на компе была эта прога но я её потерял... теперь найти немогу.
Как я понял защиты не было и нет на сегодняшний день!!! :(
Думаю надо просто идти вперед! не обращая внимания на воров... пока они будут пиз...ть мы будем делать новые фишки! :)
А мне пофиг, а мне пофиг... АС 3 декомпелляторов нету ещё :p
DarkLight
22.11.2006, 23:51
Может и нету, но его создание уже начали. Уже собрали довольно много информации о структуре байткода ас3.
Ну сейчас даже flash 9 скомпиллировать нормально не может.
Был такой случай... Компиллируется swf - вес 38 254. Потом ничего не меняя комплю в той же флэш 9. Получаю 38 782. Вобщем люфт до 500 байт был :)
Ну сейчас даже flash 9 скомпиллировать нормально не может.
Был такой случай... Компиллируется swf - вес 38 254. Потом ничего не меняя комплю в той же флэш 9. Получаю 38 782. Вобщем люфт до 500 байт был :)Графику случаем не выделял на сцене?
Графику случаем не выделял на сцене?
Нет, только crtl+enter. Паблишинг делал. Кстати так большинство, вот сейчас файл 271 761, потом компилю, ничего не меняя 271 826 - но тут графики много.
Нет, только crtl+enter. Паблишинг делал. Кстати так большинство, вот сейчас файл 271 761, потом компилю, ничего не меняя 271 826 - но тут графики много.Интересно конечно исходник посмотреть. Это новый вариант изменения веса, до этого только выделение объектов на сцене меняло размер swf.
DarkLight
24.11.2006, 16:53
Мда...декомпилер будет скоро и под ас3...на Mozzila лежит полная таблица опкодов, формат abc файла и т п...
DRAGOnoid
29.11.2006, 07:37
Ну сейчас даже flash 9 скомпиллировать нормально не может.
Был такой случай... Компиллируется swf - вес 38 254. Потом ничего не меняя комплю в той же флэш 9. Получаю 38 782. Вобщем люфт до 500 байт был :)
500 байт отборного мата и фраз "чё за муть мне тут компилить заставляют!" :D
Доброе утро.
Вот придумал такое подобие защиты от недобросовестных заказчиков. . .
В мувике делается класс с внешним .as файлом, в котором реализован один из ключевых методов, и далее этому методу как один из параметров передается объект времени, затем проверка если дата на компе позже установленной, то метод не работает.
Есть вариант сменить время на ПС, но тогда если это сервер, то может полететь большое количество служб, что приведет к нежелательным последствиям.
Таким образом, графику сохранить не удасться, но функциональное ядро будет в поряде!
Ага, только вот:
1) Внешний as файл загрузить и выполнить нельзя;
2) Сменить время также невозможно.
2 __etc
немного не понял вашего замечания.
Что значит нельзя загрузить и выполнить??
и почему сменить время так же не возможно??
Ну вот так вот — нельзя загрузить внешний as файл и заставить его работать. Потому что flash компилируется в байт-код и все эти «внешние» файлы скомпилируются в ролик.
И обращаться к системному времени мы можем только для чтения и всё.
Ну так в этом и смысл
Что я у себя в исходниках выставляю дату(во внешнем .as файле)
и далее считываю дату у пользователя
и если у пользователя дата позже, то метод не работает
и поменять дату могу только я
Это триал получается. Речь шла не о триале, а о защите самого кода.
Тем более такой триал — не триал вовсе, а так, мелкая проблема, причём её можно устранить не только переводом времени.
Бармалей
29.11.2006, 13:37
Тем более такой триал — не триал вовсе.
Trialout? =)
Я имел ввиду, что он примитивен :)
<Речь шла не о триале, а о защите самого кода.>
*** там на начальных страницах данной темы предлагался как вариант беспорядочное программирование, чтобы сбить с толку взломщика, я думаю такая защита код защитит не больше чем мой метод.
Что посоветуете более продвинутого??
mezprop, твой метод — не защита кода, я об этом.
Продвинутого? Я уже говорил — защищать, только если продавать будешь больше одного раза.
Ну вот представьте:
сделали вы заказчику флеш, а он говорит вам "она мне не нравиться" и денег не платит, а потом берет ее и вешает у себя на сайте.
так вот я и придмал подобный метод, чтобы поставить ограничение на два дня и все, дальше мувик рабоать не будет!
<Я имел ввиду, что он примитивен >
****что посоветуете именно для такого случая???
KidsKilla
29.11.2006, 14:51
раз в десять секунда ужасная красная надпись по всему флешаку:
ТРИАААЛ!
и ультразвук фоном.
mezrop, проще поставить запрет на просмотр с иного урла, кроме сайта разработчика.
DarkLight
29.11.2006, 19:07
Причем урл не должен присутствовать в чистом виде - его надо хотя бы немного зашифровать или проверять части, иначе слишком легко убрать
DRAGOnoid
29.11.2006, 20:23
кстати вот именно это меня больше всего и интересует "защита URL" - а всякие там функции, объекты ломайте скока влезет мне не жалко.
просто я знаю как ломают игры - достаточно сослаться на файл сорсный и всё!
так что лучшая защита это защищать что говорится внутривенно (то есть сами файлы на сервере (у меня это PHP))
так что вот ещё один вариант - генерировать ссылки к файлу
DarkLight
29.11.2006, 21:57
Всмысле генерировать ссылки? В кеш то попадает файл.
DRAGOnoid
30.11.2006, 09:52
допустим у нас есть база данных пользователей.
когда человек залогинивается ему даётся уникальный код по типу
FGHfgh9fgh977fgh
тогда он грузит *.as из htttp://blablabla.bla/bla/bla/FGHfgh9fgh977fgh/bla.as
если кто знает РНР то сразу догадается что на самом деле мы грузим какой нить
bla.PHP в котором сверяем правильность данных , и если всё правильно - тот подгружает из недоступной обычному пользователю папки bla.as
допустим у нас есть база данных пользователей.
когда человек залогинивается ему даётся уникальный код по типу
FGHfgh9fgh977fgh
тогда он грузит *.as из htttp://blablabla.bla/bla/bla/FGHfgh9fgh977fgh/bla.as
если кто знает РНР то сразу догадается что на самом деле мы грузим какой нить
bla.PHP в котором сверяем правильность данных , и если всё правильно - тот подгружает из недоступной обычному пользователю папки bla.as
DRAGOnoid, по ходу дела вы гоните. Во первых делать триал стали за долго до вашего знакомства с флешем - изобрести что то новое в данной теме просто не реально.
Во вторых, нормальный разработчик даст этот, как и любой код только в крайнем случае. *.as файл нужен только на стадии разработки, исключительно из соображений централизации хранения кода разработчиком.
Обычно применяют комплекс решений, где возможно есть проверка времени - не обязательно на машине заказчика, проверка url, проверка ip, ну и массы интересных вещей. Но вот все это потом компелиться в swf, который потом еще защищают от взлома. Собственно тема о втором - флудить про прелести php не стоит.
DRAGOnoid
30.11.2006, 10:25
во первых треал это не моя идея.
во вторых - меня интересует не защита *.as а защита в них линков
а линк генерируется в php денамически и только потом подгружается *.as
система сложная и я ещё так не делал. так что и защищать её немогу 8)
я рассматриваю пока как "теорию!"
во первых треал это не моя идея.
во вторых - меня интересует не защита *.as а защита в них линков
а линк генерируется в php денамически и только потом подгружается *.as
система сложная и я ещё так не делал. так что и защищать её немогу 8)
я рассматриваю пока как "теорию!"
Еще раз: использование файла .as предполагает наличие у заказчика файла .fla и среды флеш, т.е. это бред.
потом подгружается *.as
Я непонятно выразился? Никакие *.as файлы никуда подгружаться не могут!
Пожалуй, самая интересная тема на форуме. Попробовал всё вышеперечисленное и пока останавливаюсь на таком мнении:
1. тотальная обфускация всех переменных и функций с именованием в очень трудночитаемые названия и, желательно, в недопустимые символы, например:
Єz1_Ё$d_= function Qf__ї3ў(Ё№_ф)
{
ЄxЧ_їЄ_ї += Math.$@_f(Ё№_ф);
}
// при этом Math.$@_f добавляется где-нибудь внутри загружаемых
// и разбавление кода прикольчиками вида
Єz1_Ё$d_= function (Ё№_ф)
{
ЄxЧ_їЄ_ї += Qf__ї3ў(Ё№_ф);
}
Qf__ї3ў =Єz1_Ё$d_;
2. использование магических байткодов, здесь прозвучавших, которые если и снимутся, то код предстанет в таком вот прикольном виде
С байткодами всё понятно, а вот с обфускатором пока дырка. Кто может посоветовать хороший обфускатор? Это, кстати, имхо один из самых интересных подвопросов в теме :)
p.s. ASOshell обфускирует, но криво и не поддерживает TellTarget (я знаю, что он не используется в большинстве случаев, но в моём это единственный способ сделать хорошую структуру) да и без TellTarget обфускивает так, что прога перестаёт работать. Кроме того, нашел только триал.
p.p.s. FLA163protect - открылся весь ролик, код без изменений - даже SWF Decompiler-ом
morgenshtern
11.04.2009, 05:12
Перечитал тему и пихал все примеры защиты с байткодом.
От свфдкомпайлера ни один не спас. Вообще. Версия 3,2. Флеша 9.
MaskiShow
04.07.2009, 14:34
Мне больше понравилось запись названий ключевых переменных на каком-нибудь японско-кеттайском языке - они будут отображатся в декомпиляторе как ?????. Хотя кеттайский декомпилер их наверное может показать правильно :D
liberakatnem
07.07.2009, 17:21
да да
А зачем ваше это нужно ?
Декомпиляция это хорошо.
Если защищать свои флешки то как новечки будут учиться?
Если защищать свои флешки то как новечки будут учиться?
Ну если будут отчислять гонорары, то пусть учатся.
Если защищать свои флешки то как новечки будут учиться?
Учиться брать чужое?
Для новичков написано огромное количество книг, а также бесплатных статей и примеров - бери не хочу.
У меня есть предложение,надо нам всем подумать как при декомпиляции удалить временную шкалу клипа,т.е. чтоб он рассыпался на беспорядочную сборку sprites & shapes&...Ну выдерет чувак код,а что дальше,куда и к чему он его будет клеить????
f.g.programmer
31.10.2010, 11:49
У меня есть предложение, надо нам всем подумать - один из основных неудачных словесных приёмов менеджера :)
Серьёзные проекты, которые стоят того, чтобы их декомпилировать, пишутся в основном на чистом AS3, а не в кадрах. Так что от этого будет мало толку.
Тема основана в 2006 году.
Думай, PPASHKA, думай.
На тебя одного вся надежда.
- один из основных неудачных словесных приёмов менеджера :):eek:
Серьёзные проекты, которые стоят того, чтобы их декомпилировать, пишутся в основном на чистом AS3, а не в кадрах. Так что от этого будет мало толку.
Да ты прав...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.