![]() |
eXeL@B —› Вопросы новичков —› Откупорить SWF-шку |
Посл.ответ | Сообщение |
|
Создано: 30 января 2013 10:21 · Личное сообщение · #1 Привет, товарищи! Пытаюсь снять ограничения на SWF-файл. Там была защита по рефереру, а также матрешка, один файл внутри другого, зашифрованный. Эти две защиты я обошел и достал сам главный файл. Но и в нем защита через crossdomain.xml - если открываешь на неразрешенном сайте, вместо анимации выводит дурацкий баннер со ссылкой на оффсайт. Попробовал я в Hex-редакторе поменять ссылку crossdomain.xml на свой сервер, и разумеется добавил в туда свой домен. Но почему-то ничего не изменилось, по-прежнему выводится баннер. Помогите, плиз!!! ))) Вот, собственно, он: http://rusfolder.com/34759184 ![]() |
|
Создано: 30 января 2013 11:07 · Личное сообщение · #2 Если вы внимательно посмотрите на исходник, то все будет понятно. Там во-первых есть такое: if (root.loaderInfo.url == root.loaderInfo.loader.root.loaderInfo.loaderURL) Вот тут оно уже выдаст эксепшн, котороый отловится try...catch'ем во внешнем методе и выведет баннер. А выпадет в эксепшн оно потому, что root.loaderInfo.loader == null, ибо при запуске SWF напрямую у неё понятное дело нет никакого лоадеара (он будет, если у SWF есть прелоадер). То есть в этой строке проверяются две вещи - есть ли у флэшки прелоадер и совпадает ли URL у прелоадера и флэшки. Уже после этого подгружается XML с разрешёнными доменами с их сайта: http://elite.cards.imgsmail.ru/crossdomain.xml И после этого происходит проверка, причем в коде явно добавляется http:// ко всем элементам из XML. В итоге ваша задача - просто пропатчить всё это, делается это обычно с помощью RABCDasm и подобных инструментов (тут на форуме есть ветка со всем перечнем инструментов, который можно использовать). ----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску. ![]() |
|
Создано: 30 января 2013 11:24 · Поправил: nety · Личное сообщение · #3 |
|
Создано: 30 января 2013 11:28 · Личное сообщение · #4 |
|
Создано: 30 января 2013 11:59 · Поправил: 4kusNick · Личное сообщение · #5 Ну, полученные файлы легко редактируются любым текстовым редактором. На счет пояснить - мне проще сделать это за вас (что тут я делать не буду, не по правилам форума это =P), чем пояснять как, зачем и почему надо редактировать тот или иной участок байткода. Рекомендую поковырять что-то простое чтобы понять что к чему. Попробуйте сами написать что-то элементарное, скомпилировать в swf и поковыряться, попробовать что-то поменять - думаю, это самый быстрый способ разобраться в байткоде. Ну а если сами не хотите разбираться и вам это вообще разово нужно - то обращайтесь в запросы на взлом или поиск специалистов - вам там быстро все почикают. И да, пользуйтесь Правкой, не плодите посты подряд (а для спасиб тут предусмотрена специальная кнопка - Полезное сообщение). ----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску. ![]() |
|
Создано: 30 января 2013 12:10 · Личное сообщение · #6 Что редактируются я вижу, только не разберусь, что вырезать, а что оставить ) Про "запросы" в курсе, только вот сам хотел разобраться, хоть и с подсказкой. Я не халявщик, но хотя бы приблизительно ткните, что резать ) loaderInfo я там вижу, а вот что делать дальше - ??? Предполагаю, что можно заменить Code:
на Code:
Но как это написать правильно на байткоде? ![]() |
|
Создано: 30 января 2013 12:18 · Личное сообщение · #7 Нет, если вы замените на Code:
условие не будет выполняться, ведь root.loaderInfo.url не null. Замените это на Code:
Чтобы условие проходило. На самом деле там еще до этой строки есть обращение к root.loaderInfo.loader.root.loaderInfo.loaderURL, его можно тоже сократить до root.loaderInfo.url, чтобы оно не падало. Я у себя уже все пропатчил забавы ради, думаю вы справитесь, т.к. все очень просто, смотрите дальше, если будет что не понятно - спрашивайте. ----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску. ![]() |
|
Создано: 30 января 2013 12:30 · Поправил: nety · Личное сообщение · #8 То есть, получается Code:
Меняем на Code:
Правильно? UPD: Поменял как указано выше, теперь в декомпиляторе вижу, что условие соответственно изменилось на: Code:
URL к crossdomain.xml указал свой, но по-прежнему баннер. Что-то еще упущено? ![]() |
|
Создано: 30 января 2013 13:05 · Личное сообщение · #9 Да, вы посмотрите на код, там же все понятно. Во-первых как я уже писал, там ещё выше есть обращение к root.loaderInfo.loader.root.loaderInfo.loaderURL (до того сравнения что вы правили) - там пытаются протрейсить это значение и на этом оно понятное дело падает. Ну и дальше по ходу кода - после загрузки XML там сравнивается текущий URL с http://+URL из XML. Если флэшку запускаете локально, то понятное дело в текущем URL никаких http:// не будет. Я там вообще поправил все так, чтобы не заморачиваться, и выглядит оно в итоге так: Code:
Я просто поднял вызов this.loadCard(); и returnvoid в начало метода, чтобы они вызывались до инициализации двух булевых локальных переменных. ----- Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску. ![]() |
|
Создано: 30 января 2013 14:45 · Личное сообщение · #10 |
![]() |
eXeL@B —› Вопросы новичков —› Откупорить SWF-шку |