Pull to refresh

Защита флеш-файлов.

Reading time2 min
Views1.3K
Поскольку у нас с korowkinКоровкиным второй раз уперли mp3-хабраплеер (здесь снова, здесь про первый раз), решил-таки я заняться самообразованием:)

Итак, защита SWF и т.д.

SWF — открытый стандарт, где код преобразовывается в ассемблероподобный, который потом декомпиляторы успешно декомпилируют обратно в fla.

Спасибо Uznick'у, нашел программу Amayeta SWF Encrypt, которая код преобразует к виду:

var \x01 = 707;
if (eval("\x01") == 732)
{
}
else
{
while (\x01 = eval("\x01") — 86, if (eval("\x01") != 732) goto 12, \x01 = eval("\x01") + 87, // Jump to 429496724, // Jump to 87, eval("\x01") == 621)
{
\x01 = eval("\x01") + 44;
if (false)
{
continue;
} // end if
\x01 = eval("\x01") — 260;
} // end while
if (eval("\x01") == 376)
{

и т. д.

То есть судя по всему заменой функций на их opcodes, обфускацией и перетасовкой кода. За что конторе большое спасибо. Скачивается на сайте. Серийник — в eMule.

Далее я тут набросал код, который проверяет откуда swf-файл запущен и блокирует не те домены.

var allowDomains=new Array(«averin.ru», «rpod.ru»); //список чего можно. Обратите внимание как написаны домены
var passTest=false; //здесь храниться результат тестов

for (eachDomain in allowDomains) //перебор доменов
{
hostdomain1=«http://»+allowDomains[eachDomain]+"/";
hostdomain2=«www.»+allowDomains[eachDomain]+"/";
if (_root._url.substr(0,hostdomain1.length)==hostdomain1
|| _root._url.substr(0,hostdomain2.length)==hostdomain2) passTest=true;
}
if (passTest==false)
{
getURL(«averin.ru»,"_self"); //если тест не але — посылаем
_root.gotoAndStop(1);// тут можно поколдовать, может и не помочь, смотря что прописано в actions у кадра 1
}


Плюс ко всему если у вас какие-то ссылки передаются в swf, нужна ещё и проверка на их правильность. Так как можно и не воровать а просто заставить плеер играть не те файлы:)

Картинки, рисование и подобное к сожаленю не кодируются:( Пока, я надеюсь.
Есть вариант для их защиты их подгружать извне после проверки.
Tags:
Hubs:
+13
Comments36

Articles