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

Код:
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));
и получается рекурсивная распаковка...
ну вот аткая тема, если хватит репения расковырять, то расковыряют конечно