Возможно ли в ActionScript проводить модицикацию байт-кода во время выполнения?

3 views
Skip to first unread message

Рост

unread,
Nov 20, 2009, 12:37:59 PM11/20/09
to ruFlash
Привет,

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

"Привет, Ростислав,

Не мог бы ты мне подсказать, возможно ли в ActionScript проводить
модицикацию байт-кода во время выполнения?

Насколько я понимаю, я могу в своем flash-ролике загрузить часть часть
кода по HTTP (например это делает плеер JWPlayer для проигрывания
Youtube Video). Могу ли я модифицировать байт-код этой загруженной
части?

Конкретно -- мне нужно подправить один параметр в HTTP-запросе, который
делается из этого загруженного кода.

Нужно сделать flash видео-плеер, который будет использовать Youtube
Flash API (это делает OpenSource JWPlayer), но при этом в рантайме
будет модифицировать код Youtube API, немного изменяя URL, по каком
обращается последний в процессе своей работы.

Например, подключив Youtube Flash API, мы вызываем его метод получения
реального адреса видео (конечного flv файла). Этот метод отправляет на
Youtube API HTTP запрос, содержащий адрес страницы, содержащей плеер,
что-то вроде http://www.youtube.com/get_video_info?v=7641sdak9&eurl=http://www.microsoft.com/hello.html

Так вот, наша задача -- убрать адрес этой страницы или заменить его
другим значением. Например, чтобы запрос был таким:
http://www.youtube.com/get_video_info?v=7641sdak9&eurl=null

Вопрос скорее сводится к тому, позволит ли Security Manager FlashVM
модифицировать в рантайме код, загруженный с другого домена.

"

Вот такая задача. Что скажете?

Рост

Flop Serg

unread,
Nov 20, 2009, 12:46:06 PM11/20/09
to ruf...@googlegroups.com

Вопрос скорее сводится к тому, позволит ли Security Manager FlashVM
модифицировать в рантайме код, загруженный с другого домена.



ну насколько я понимаю все не совсем так

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

Олег Галабурда

unread,
Nov 20, 2009, 2:53:57 PM11/20/09
to ruf...@googlegroups.com
Здрасте!


Насчёт "основного" вопроса не знаю, а вот по поводу модификации URL,
можно использовать AS2 версию Chromeless Player и пропатчить её.
Я когда-то делал такое, надо заменять методы в прототипах:

var func:Function = NetStream.prototype.play;
NetStream.prototype.play = function(){
// заменяем всё что надо в аргументах
var original = arguments.callee.original;
original.apply(this, arguments);
}
NetStream.prototype.play.original = func;

На счёт правильности кода не уверен, но идею, думаю, отражает. :)
В итоге, когда плеер ютуба обратиться к флеш АПИ, сам выполнит
подменённую функцию.

> Так вот, наша задача -- убрать адрес этой страницы или заменить его
> другим значением. Например, чтобы запрос был таким:
> http://www.youtube.com/get_video_info?v=7641sdak9&eurl=null

--
Oleg Galaburda
http://blog.actualwave.com/

Alexsander Krestelev

unread,
Nov 20, 2009, 8:02:35 PM11/20/09
to ruf...@googlegroups.com
Если очень захотеть то можно.
Лично я не понимаю почему нельзя взять классы JWPlayer и в нем поменять код как надо?

Flop Serg

unread,
Nov 20, 2009, 8:12:51 PM11/20/09
to ruf...@googlegroups.com

Лично я не понимаю почему нельзя взять классы JWPlayer и в нем поменять код как надо?

потому-что код этот писал ютуб! и доступ есть только до нескольких методов в скомпиленой swf

а вот Олег предложил очень отличный вариант.
в AS2  можно было изменить любой нативный класс через его прототип
а у ютуба плеер на AS2
поэтому  +100500 варианту Олега

 


 

Олег Галабурда

unread,
Nov 21, 2009, 2:50:06 AM11/21/09
to ruf...@googlegroups.com
Здрасте!

Оффтопчик - для тех кто не знает, уже есть AS3 версия Ютуб плеера,
поэтому врапперы больше не нужны.
http://apiblog.youtube.com/2009/10/actionscript-3-youtube-chromeless.html

> а у ютуба плеер на AS2

--
Oleg Galaburda
http://blog.actualwave.com/

Reply all
Reply to author
Forward
0 new messages