[swfmill] Question about swfmil output

ying lcs yinglcs at gmail.com
Sun Mar 4 14:51:51 EST 2007


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
>

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