Показать сообщение отдельно
Старый 21.06.2006, 05:09
sourcer21 вне форума Посмотреть профиль Отправить личное сообщение для sourcer21 Найти все сообщения от sourcer21
  № 66  
Ответить с цитированием
sourcer21

Регистрация: Jun 2006
Сообщений: 22
По умолчанию Вот так может

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

И так начнем:

Код:
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));

и получается рекурсивная распаковка...

ну вот аткая тема, если хватит репения расковырять, то расковыряют конечно


Последний раз редактировалось iNils; 21.06.2006 в 11:30.