![]() |
|
||||||||||
|
|||||
|
"человек"
Регистрация: Nov 2002
Адрес: +-
Сообщений: 1,807
|
пора тему в Флейм =))
__________________
flash it |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Для души -- пожалуйста.
Защищать каждый сделанный ролик -- умаешься. |
|
|||||
|
Цитата:
__________________
I'm only happy when it rains. Waka Laka |
|
|||||
|
Регистрация: Nov 2004
Адрес: Санкт-Петербург
Сообщений: 751
|
Ммм, не знаю, лично не знаком
![]()
__________________
Всё гениальное просто. |
|
|||||
|
мне известны сложные методы шифрования, но такой момент: если кто-то знает про цезаря и алфавитный анализ, то шансы того что он знаком с более замороченными методами очень велики. Я думаю что если ты хочешь скрыть такую вещь как например код для следующего уровня и перегоняешь его с помощью простенького шифра во что-то иное, то очень, очень низкий процент тех кто не полениться воспользоваться декомпилятором поймет (найдет) где собака зарыта. Умные и целеустремленные люди (что обычно не сочитается) смогут взловать все что вы им предложите. Лично я предпочитаю вещи вроде RC3 или AES, но с другой стороны они могут представлять интерес скорее с академической точки зрения нежеле с практической в данном случае. Если алгоритм щифрования доступен (через декомпилятор) то какой смысл в сложности самого метода?
__________________
I'm only happy when it rains. Waka Laka |
|
|||||
|
Регистрация: 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 ();
}
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-------------------------------
}
выходит следующие 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. |
|
|||||
|
Вообще никто не хранит пароли на стороне клиента, не в Java апплетах, не в SWF плеерах, не хранят.
да, это тупиковый путь... лучше всего - serverside scripts)) |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
sourcer21, ужасный код. Больше такое не показывайте.
|
|
|||||
|
[+3 18.06.06]
Регистрация: Jun 2006
Сообщений: 113
|
Цитата:
Байткод из любой флэшки в хексе вытащить можно. А ещё оперативку просматривать можно и входящие и отбывающие пакеты(подкоректировать даже можно) тогда тебе сторона сервера не поможет) Но не каждый разбирается в этом(некоторым ещё лень) так что от 70-80% потенциальных взломщиков ты освобожден при минимальной защите и от 80-90% при хорошей. |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:31. |
|
|
« Предыдущая тема | Следующая тема » |
|
|