[swfmill] Question about swfmil output
ying lcs
yinglcs at gmail.com
Sun Mar 4 15:15:47 EST 2007
On 3/4/07, ying lcs <yinglcs at gmail.com> wrote:
> On 3/4/07, Mark Winterhalder <mark13 at gmail.com> wrote:
> > On 3/4/07, ying lcs <yinglcs at gmail.com> wrote:
> > > I am trying to investigate why certain swf files (the ones find in
> > > public sites) can't play on the gnash (an opensource flash player).
> >
> > That's /very/ legitimate. :)
> >
> > That tag (PlaceObject) places an object on the stage -- it does /not/
> > define that object. As I said before, try to find where if is defined.
> > Simply search for its ID (131), I think that tag is called
> > DefineObject, or DefineShape, or DefineSomething.
> >
> > However, some of those protective mechanisms I talked about might
> > involve making the SWF non-standard, and relying on the tolerance of
> > the Adobe player. About like those copy protection mechanisms on
> > non-RedBook music CDs that play fine on your stereo but not in your
> > car. I'm not saying this is the case here, but you might encounter
> > them. I've come across one that I couldn't even use Swfmill with, the
> > same might be true for Gnash. When in doubt, try to contact the
> > original developer to find out if s/he used some sort of scrambler
> > before you put too much effort into it. Of course it would be nice if
> > those worked with Gnash, too, but I would give vanilla-SWFs a higher
> > priority.
> >
> > Mark
> >
>
Okay, I find the object 'movie' inside the object 'player'.
<DefineSprite objectID="131" frames="1">
//.....
<PlaceObject2 replace="0" depth="1" objectID="130" name="movie">
<transform>
<Transform scaleX="1.000000000000000"
scaleY="1.000305175781250" transX="0" transY="-317"/>
</transform>
</PlaceObject2>
//.........
</DefineSprite>
<PlaceObject2 replace="0" depth="1" objectID="131" name="player">
<transform>
<Transform transX="4500" transY="3700"/>
</transform>
</PlaceObject2>
But the question remains is why Gnash can't find the function
setMovie() when it tries to execute this:
Flare output:
frame 1 {
movie = player.movie;
movie.base_url = '/';
movie.tracker_cls = logic.PlayerTracker;
movie.setMovie(video_id, undefined, undefined, l, t);
movie.playMovie();
Stage.scaleMode = 'noScale';
Stage.addListener(this);
onResize = function () {
player.resize(Stage.width, Stage.height);
};
In the flare output, setMovie is defined here:
movieClip 141 __Packages.logic.Movie {
logic.Movie = v1;
logic.Movie extends MovieClip;
var v2 = v1.prototype;
v2.initController = function () {
//........
};
v2.setMovie = function (_video_id, image_url, movie_url, l,
_track_id, eurl, append_vars) {
//..........
}
any more help is appreciated...
Thank you again.
> Thank you for your help.
>
> I have use flare to decompile the swf file to get the actionscript source code.
>
> In gnash,
> it fails here:
>
> frame 1 {
> movie = player.movie;
> movie.base_url = '/';
> movie.tracker_cls = logic.PlayerTracker;
> movie.setMovie(video_id, undefined, undefined, l, t);
> movie.playMovie();
> Stage.scaleMode = 'noScale';
> Stage.addListener(this);
> onResize = function () {
> player.resize(Stage.width, Stage.height);
> };
>
> When it tries to execute the line 'movie.setMovie', it can't find the
> method 'movie.setMovie'.
>
> So I need to find out where is 'player.movie' defined.
>
> So I use swfmill to find out what is 'player.movie'.
>
> Here is the object for 131, but does this has a 'setMovie' method?
> otherwise, what should gnash look for 'setMovie' method?
>
> <DefineSprite objectID="131" frames="1">
> <tags>
> <DoAction>
> <actions>
> <Dictionary>
> <strings>
> <String value="movie"/>
> <String value="controller"/>
> <String value="registerMovie"/>
> <String value="useHandCursor"/>
> <String value="resize"/>
> <String value="_y"/>
> <String value="_height"/>
> <String value="resize_width"/>
> </strings>
> </Dictionary>
> <PushData>
> <items>
> <StackDictionaryLookup index="0"/>
> </items>
> </PushData>
> <GetVariable/>
> <PushData>
> <items>
> <StackInteger value="1"/>
> <StackDictionaryLookup index="1"/>
> </items>
> </PushData>
> <GetVariable/>
> <PushData>
> <items>
> <StackDictionaryLookup index="2"/>
> </items>
> </PushData>
> <CallMethod/>
> <Pop/>
> <PushData>
> <items>
> <StackDictionaryLookup index="0"/>
> </items>
> </PushData>
> <GetVariable/>
> <PushData>
> <items>
> <StackDictionaryLookup index="3"/>
> <StackBoolean value="0"/>
> </items>
> </PushData>
> <SetMember/>
> <PushData>
> <items>
> <StackDictionaryLookup index="4"/>
> </items>
> </PushData>
> <DeclareFunction2 name="" argc="2" regc="3"
> preloadThis="0" suppressThis="0" preloadArguments="1"
> suppressArguments="0" preloadSuper="1" suppressSuper="0"
> preloadRoot="1" preloadParent="0" preloadGlobal="0" reserved="0">
> <args>
> <Parameter reg="1" name="w"/>
> <Parameter reg="2" name="h"/>
> </args>
> <actions>
> <PushData>
> <items>
> <StackDictionaryLookup index="1"/>
> </items>
> </PushData>
> <GetVariable/>
> <PushData>
> <items>
> <StackDictionaryLookup index="5"/>
> <StackRegister reg="2"/>
> <StackInteger value="2"/>
> </items>
> </PushData>
> <Divide/>
> <PushData>
> <items>
> <StackDictionaryLookup index="1"/>
> </items>
> </PushData>
> <GetVariable/>
> <PushData>
> <items>
> <StackDictionaryLookup index="6"/>
> </items>
> </PushData>
> <GetMember/>
> <Substract/>
> <SetMember/>
> <PushData>
> <items>
> <StackRegister reg="1"/>
> <StackInteger value="1"/>
> <StackDictionaryLookup index="1"/>
> </items>
> </PushData>
> <GetVariable/>
> <PushData>
> <items>
> <StackDictionaryLookup index="7"/>
> </items>
> </PushData>
> <CallMethod/>
> <Pop/>
> <PushData>
> <items>
> <StackRegister reg="2"/>
> <StackDictionaryLookup index="1"/>
> </items>
> </PushData>
> <GetVariable/>
> <PushData>
> <items>
> <StackDictionaryLookup index="6"/>
> </items>
> </PushData>
> <GetMember/>
> <Substract/>
> <PushData>
> <items>
> <StackRegister reg="1"/>
> <StackInteger value="2"/>
> <StackDictionaryLookup index="0"/>
> </items>
> </PushData>
> <GetVariable/>
> <PushData>
> <items>
> <StackDictionaryLookup index="4"/>
> </items>
> </PushData>
> <CallMethod/>
> <Pop/>
> </actions>
> </DeclareFunction2>
> <SetVariable/>
> <EndAction/>
> </actions>
> </DoAction>
> <PlaceObject2 replace="0" depth="1" objectID="130" name="movie">
> <transform>
> <Transform scaleX="1.000000000000000"
> scaleY="1.000305175781250" transX="0" transY="-317"/>
> </transform>
> </PlaceObject2>
> <PlaceObject2 replace="0" depth="10" objectID="79" name="controller">
> <transform>
> <Transform transX="0" transY="3060"/>
> </transform>
> </PlaceObject2>
> <ShowFrame/>
> <End/>
> </tags>
> </DefineSprite>
>
>
>
>
>
> > _______________________________________________
> > swfmill mailing list
> > swfmill at osflash.org
> > http://osflash.org/mailman/listinfo/swfmill_osflash.org
> >
>
More information about the swfmill
mailing list