Просмотр полной версии : Посоветуйте надежные обфускаторы
climfree
09.09.2013, 19:29
ДВС!
Постав вопрос о защите swf от скачивания. посоветуйте. пожалуйста, надежные обфускаторы.
Почитайте эту тему и поймете, что это равносильно вопросу.Посоветуйте лекарство от всех болезней.
http://www.flasher.ru/forum/showthread.php?t=203156
Alex Lexcuk
09.09.2013, 20:48
100% надёжный ДВС, сам делал.
http://swf-flash.blogspot.com/2013/05/obfuscator-actionscript-update-01052013.html
Aquahawk
10.09.2013, 02:37
100% надёжный ДВС, сам делал.
на какую сумму готовы спорить?
Добавлено через 3 минуты
climfree
Теперь по делу, ещё и ещё раз повторяю, компьютер пользователя - его собственность, и он всемогушь. Если вы хотите дать пользователю загрузить вашу программ он сможет её украсть, и распотрошить, и модифицировать. Из супермаркета проще украсть чем из магазина советского с витринами и продавцами, однако же супермаркеты не вымерли.
secureSWF (http://www.kindi.com/)
caseyryan
10.09.2013, 07:49
100% надёжный ДВС, сам делал.
http://swf-flash.blogspot.com/2013/05/obfuscator-actionscript-update-01052013.html
100% надежный Доброго Времени Суток? )
п.с. Нет вообще ни одного 100% надежного обфускатора.
alexcon314
10.09.2013, 08:20
вопрос о защите swf от скачивания
Нелепый вопрос сам по себе. Скажите это тому, кто вам его поставил.
Alex Lexcuk
11.09.2013, 02:48
Товарищ из гонконга тестировал его на своей очень большой игре.
По ссылке
http://swf-flash.blogspot.com/2013/05/obfuscator-actionscript-update-01052013.html
есть видео хау-то.
Описание принципа действия есть здесь.
http://www.flasher.ru/forum/blog.php?b=643
Кратко на русском.
Создаете две папки с одинаковыми копиями проекта.
Запускаете питон сервер. TCPServer_obf_python_2_7_16_05_2013.py или TCPServer_obf_python_3_3_16_05_2013.py (зависит от того какую версию питона вы установили)
Запускаете обфускатор LexcukActionScriptObfuscator.swf (но надо добавить его в настройки доверенной папки или пересобрать обфускатор во флеш девелоп)
Прописываете my source (это путь к папке с исходниками)
Прописываете obfuscator out source (это путь к папке с обфусцированными исходниками)
Нажимаете на кнопку-линку make find and replace text. Прожка прочитает все файлы с расширением as достанет от туда все названия классов, паблик методов и свойств и создаст файл findAndReplace.txt. Советую перед этим удалить все файлы из исходника которые не требуют обфускации, это может быть к примеру папка с box2D, она ведь опенсорсная, зачем ее обфусцировать. Теперь открываем файл findAndReplace.txt (если есть необходимость) в флеш девелоп и дописываем его или удаляем из него ненужное. В обфускаторе после этого надо прочитать заново файл findAndReplace.txt для этого есть кнопка read find and replace text.
После того как файл findAndReplace.txt готов нажимаем на кнопку obfuscate. Прожка опять прочитает все файлы из исходника переименует их в соответствии с findAndReplace.txt удалит из них комментарии, переименует все классы, паблик методы и свойства (помоему и приват тоже), однако если имена встречаются в файле cancelFindAndReplace.txt то переименования не будет (вставит новые комментарии если в файле настроек в пункте easy translate стоит true c реальными именами классов) и сохранит файлы в папку с обфусцированым исходником.
Теперь надо собрать флешку из обфусцированных файлов. Посыпятся много ошибок, которые исправляются вручную, потому что многие слова не поддаются обфускации (типа Math или Stage) их надо прописывать в файл cancelFindAndReplace.txt, что-бы при следующей обфускации они не повторялись.
После того как обфусцированная флешка готова и работает можно прописываем путь к ней в поле obfuscation swf file. И нажимаем на кнопку String SWF Obfuscation так во все обфусцированные имена рандомно вставляются недопустимые символы типа ^ % @ ; если попытаться декомпилировать эту флешку то декомпилятор не сможет сохранить файлы с такими именами.
Однако если у вас есть сайтлок то строку этого сайтлока надо всё-же как-то закодировать к примеру сделать из нее int массив с кодами букв. Так можно избежать редактирования флешки в простом текстовом редакторе.
caseyryan
11.09.2013, 08:26
Но, в принципе, для серьезного проекта - это нормально.
Покажите мне хоть один серьезный проект, который обфусцирован
KumoKairo
11.09.2013, 10:49
caseyryan, https://apps.facebook.com/angrybirds/
Как узнать что он обфусцирован?
Открыть страницу и закрыть после появления загрузочного экрана до полной загрузки, вылетит ошибка
Error: [LoadManager] FILE NOT FOUND: https://dyzbcwveae9tn.cloudfront.net/flash/external_assets/TournamentBranded-9106d836342625fe216a8235705ec099fea00d11.swf
at '"t::',/["U()
Alex Lexcuk
11.09.2013, 12:04
А, немного не понял принцип создания findAndReplace.txt.
В общем, по-хорошему, на создание обфусцированной версии проекта с, скажем, 10-100k классами можно и день потратить. Но, в принципе, для серьезного проекта - это нормально.
Правда, я так понимаю, в строковых константах, в которых встречаются обфусцируемые имена, тоже будут производиться изменения. И если таких строк много и они распределены по всему коду, то придется исключать это имя.
Не думали добавить настройку для того, чтобы можно было указать, что строковые константы обфусцировать не надо? Или тут палка о двух концах: ведь доступ к элементам класса в коде может осуществляться не только по точке, но и по строковому имени?
Строковые константы не обфусцируются.
Процесс создания файла find and replase.txt
Вы прописываете в обфускаторе строку my source.
Прописываете оригинальный first word
Нажимаете на кнопку make firnd and replase txt.
Программа прочитает все файлы с раcширением as, при этом в файлах (виртуально естественно) удаляются комментарии и строки, потом ищутся все паблик и приват методы и свойства и классы тоже.
Складываются в find and replase txt, в каждой строке рядом с словом на переименование пишется слово на которое оно будет заменено (обфусцированное слово состоит из первого слова и номера, который переведен в string), затем вы если желаете редактируете findandreplase.txt, потом после редактирования нажатием на кнопку read find and replace опять загружаете его в программу обфускатор. Я файл findandreplase.txt не редактировал ни разу, но такая возможность есть и она работает. Вместо редактирования файла findandreplase.txt я обычно редактирую файл canselfindandreplase.txt добавляю туда слова которые не нужно обфусцировать, это могут быть любые слова (естественно из файла findandreplase.txt) и просто любые слова, туда даже можно вставлять отрывки кода, при этом все слова которые встречаются в этом коде обфусцированы не будут. После редактирования файла canselfindandreplase.txt нажимаем на кнопку read cansel find and replase text.
Теперь нужно сделать обфусцированный исходник нажатием на кнопку obfuscate. И в папку где лежит копия проекта и эта прописана в obfuscate source будут складываться обфусцированный исходник, который потом собирается. См инструкцию
Если у вас
ведь доступ к элементам класса в коде может осуществляться не только по точке, но и по строковому имени?
Доступ осуществляется по строковому имени то надо это строковое имя внести в cansel find and replase.txt и оно обфусцировано не будет.
Alex Lexcuk
12.09.2013, 12:57
В AS ведь доступ к элементам класса может осуществляться с помощью ["..."]
Если доступ осуществляется по строковому имени то надо это строковое имя внести в cansel find and replase.txt и оно обфусцировано не будет.
Это на практике очень редко пользуются, один раз я так делал и это был главный класс Main по другому встроенный прелоадер сделать не получается. Я добавил одну строку в cancelFindAndReplase.txt со словом Main, слово Main соответственно не обфусцировалось и все работало как надо.
Alex Lexcuk
12.09.2013, 20:45
Тем более, вы так и не сказали, что делать при использовании тегов Bindable, RemoteClass.
Я говорю что их не нужно обфусцировать, их надо поместить в cancelFindAndReplase.txt
Даже если их тысячи. Я уже описывал процесс создания файла findAndReplase.txt
Даёте обфускатору папку mySource где вы кладёте копию своего проекта на обфускацию, из неё вы можете удалить классы или паккажи где есть определение ваших RemoteClass и Bindable и прочих нестандартных ситуаций. Теперь нажимаете на кнопку make find end replase.txt получите файл findendreplase.txt где не будет ни RemoteClass ни Bindable, теперь нажимать на кнопку [make find end replase] не нужно, а нужно нажимать всегда на [read find and replase]
И вручную делать не прийдётся во это:
Если таких тегов тысячи, а их действительно в ряде проектов именно столько, то править вручную код как-то не с руки.
Если тысяча слов останутся без обфускации это ничего страшного ведь обычно в проекту их около 100000 и больше.
Вообще-то обфускатор опенсорсный и вы можете его дополнить функцией обфускации строк, я больше делал упор на скорость работы, если ещё и обфусцировать строки то скорость работы значительно упадёт, а она и так не очень большая. Дело в том что из-за строк он сильно глючил, но я нашел выход из положения, что можно просто удалять строки перед началом обфускации. Так-что обфусцирование строк это сильное изменение архитектуры и на это я пойти не могу и ещё к тому же я не пользуюсь ни Bindable ни RemoteClass. Считаю эту возможность убыточной, тк. в свете развития мобильных технологий, возможно прийдётся портировать все проекты на другие платформы, и там возможно не будет Bindable ни RemoteClass.
mikhailk
12.09.2013, 21:40
ведь обычно в проекту их около 100000 и больше.
Сто тысяч? :)
Alex Lexcuk
12.09.2013, 22:15
Насчет сто тысяч, возможно перебор, только что посмотрел во всей jiglib физике (а она очень большая) всего 607 оригинальных названий паблик и приват классов, методов и свойств.
Да признаю если в проекте еще и 1000 оригинальных RemoteClass, то это наверно действительно крупный проект.
Обфускатор на таких монстрах не испытывался, я не могу дать никаких гарантий.
На самом деле, вроде, неплохой обфускатор.
А вы тестировали его на каком-нибудь большом проекте с многочисленными связанными подпроектами?
Что такое подпроекты?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.