Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Какие есть предложения по написанию кода, подлежащему обфускации (http://www.flasher.ru/forum/showthread.php?t=179175)

HardCoder 08.05.2012 17:08

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

переменная :\!_56? не найдена
. Конечно переписывать всю программу глупо, но на будущее: чего стоит придерживаться при написании кода, чтобы избежать подобных проблем. Кто с чем сталкивался при обфускации, в чем была проблема и т.д.

Astraport 08.05.2012 17:45

Подстраиваться под обфускатор? Вот это точно глупо. Попробуйте разные режимы или другие обфускаторы.
SecureSWF пробовал?

HardCoder 08.05.2012 17:50

Цитата:

Сообщение от Astraport (Сообщение 1078686)
SecureSWF пробовал?

В первую очередь. При всех режимах: safe, agressive и т.д. Ошибки только разные - а результат тот же.

Добавлено через 1 минуту
Хотя в целом моя программа (не обработанная) работает стабильно. Не могу сказать что там бред сивой кобылы написан...

kackbip 08.05.2012 18:11

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

HardCoder 08.05.2012 18:34

Цитата:

Сообщение от kackbip (Сообщение 1078691)
Пришлось долго и упорно вбивать общие имена в список необфусцируемых. Ситуация похожа?

Не знаю... В одном обфускаторе (написанном на АС3) была проблема, когда при шифровке имени класса "Map" выбивало, что невозможно найти displacement/?;Flter (ну или вроде того). Я уже не говорю о других совпадениях. Попробую еще раз попробовать с разными обфускаторами. Поглубже изучу настройки - может че выйдет...

Добавлено через 7 минут
kackbip, но все же спасибо - теперь ясно, что имена должны быть уникальными.
А как на счет использования таких вещей как getDefinitionByName(). Не мешает?

kackbip 09.05.2012 07:56

Мешает, конечно. Обфускатор меняет все имена в том числе и классов... Так что getDefinitionByName надо использовать с обфусцированным именем типа 56__be6 :))) Но до обфускации вы никогда не узнаете какое надо использовать имя :) Так что просто надо заполнять списки исключений

upd: обфускаторы только не трогают флэшовые классы(возможно флексовые тоже).

HardCoder 09.05.2012 11:09

Значит, можно подвести некоторые итоги:
1. Имена классов должны быть уникальными.
Поменьше использовать:
2. getDefinitionByName("MyClass");
3. this[someString + "property" + i];
Цитата:

Сообщение от Astraport (Сообщение 1078686)
Подстраиваться под обфускатор? Вот это точно глупо.

Может и так, но представьте, если во время написания приложения не учитывать пункты выше. Как потом перебирать тысячи строк кода, чтобы найти исключения для обфускатора!?
Какие у кого еще есть предложения?

kackbip 09.05.2012 14:48

Я только не понял требования с уникальностью имен. Вы, бывает, создаете несколько классов с одинаковыми именами?

HardCoder 09.05.2012 17:27

Цитата:

Сообщение от kackbip (Сообщение 1078766)
Я только не понял требования с уникальностью имен. Вы, бывает, создаете несколько классов с одинаковыми именами?

Да нет же :).
Цитата:

В одном обфускаторе (написанном на АС3) была проблема, когда при шифровке имени класса "Map" выбивало, что невозможно найти свойство displacement/?;Flter.
Понимаете? "Map" и "displacementMapFlter".... Не знаю как работают другие - но этот находит все совпадения "Map" - и шифрует их.

Добавлено через 16 минут
Имеется в виду - чтобы имена классов не совпадали со свойствами (или их частью) стандартных классов, а были полностью уникальными.

kackbip 09.05.2012 20:07

Ага, понял. Но вообще странно... Должен отдельно имена шифровать, я так думал.


Часовой пояс GMT +4, время: 03:30.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.