首页
社区
课程
招聘
[原创]swf逆向可以这么玩
发表于: 2011-4-14 22:14 32776

[原创]swf逆向可以这么玩

2011-4-14 22:14
32776

起因:看到沪江听写网站上的一款flash在线播放器比较实用,就打算占为己有。其间遇到了一些问题,用了一天时间彻底解决,使梦想变成了现实。
    沪江听写网站简化后的关键代码如下:
       
   
    具体过程:
    首先是发现问题。通过编程发现如果直接使用该swf文件,即使改变mp3文件路径,播放的仍是先前的音频。

    其次是分析解决。

    第一步:使用SWFDecompiler4.5.exe反编译voa_player.swf得到voa_player.fla(flash源文件)、voa_player_new.as(动作脚本)这两个文件。
    
        

    第二步:使用Flash CS3 Pro打开voa_player.fla,对脚本进行补丁从而增强其功能,最后编译生成新的swf文件。 

    

    

   第三步:使用delphi编写应用软件,在flash控件中载入新生成的swf。

        程序界面如下:
         

         其中的关键代码:Flash1.SetVariable('_file','D:\xxx\123.mp3');
             以上代码语句再配上修改后的voa_player.swf就可以随心所欲的播放MP3文件了。

具体dephi实现代码如下:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes,Controls, Forms, Dialogs,StdCtrls, OleCtrls, ShockwaveFlashObjects_TLB;

type
  TForm1 = class(TForm)
    Flash1: TShockwaveFlash;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public

  end;

var
  Form1: TForm1;
  path:string;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
    path:=ExtractFilePath(ParamStr(0));
    flash1.Movie :=path+'player.swf';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
    targetWnd:Thandle;
    r :TRect;
    point:TPoint;
begin
      Flash1.SetVariable('_file',path+'1.mp3');
      targetWnd := FindWindow('TForm1','天易love');
      if targetWnd <> 0 then
        begin
          GetWindowRect(targetWnd,r);
          getcursorpos(point);
          setcursorpos(r.Left+96,r.Top+80);
          mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);  // 模拟鼠标双击 stop_btn
          mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
          mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
          mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
          setcursorpos(point.x,point.y);
        end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
    targetWnd:Thandle;
    r :TRect;
    point:TPoint;
begin
      Flash1.SetVariable('_file',path+'2.mp3');
      targetWnd := FindWindow('TForm1','天易love');
      if targetWnd <> 0 then
        begin
          GetWindowRect(targetWnd,r);
          getcursorpos(point);
          setcursorpos(r.Left+96,r.Top+80);
          mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
          mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
          mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
          mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
          setcursorpos(point.x,point.y);
        end;
end;

end.

完整工程文件见附件


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (27)
雪    币: 544
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
顶天易大牛。。。这个思路挺不错的,学习一下。
2011-4-14 22:18
0
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
3
搬个板凳坐着看。
2011-4-14 22:36
0
雪    币: 388
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
好好学习一下,这方法太好了!
2011-4-14 22:42
0
雪    币: 278
活跃值: (228)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
厉害厉害    佩服佩服
2011-4-14 22:48
0
雪    币: 1259
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
stu
6
靠,只能膜拜了。
这方面还从来没有接触过。
2011-4-14 22:54
0
雪    币: 136
活跃值: (105)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
7
这个比较强大啊
2011-4-15 12:46
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
恩,比较强大,顺便回帖是为了看看我是什么时候注册的。
2011-4-15 13:46
0
雪    币: 777
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
记得LZ说过以前改新东方的swf 博得女友欢心
2011-4-15 15:08
0
雪    币: 2015
活跃值: (902)
能力值: ( LV12,RANK:1000 )
在线值:
发帖
回帖
粉丝
10
[QUOTE=;]...[/QUOTE]
楼上原来是06年的处女,感动ing。这只是刁虫小技,如果能免费下载百度文库,豆丁等在线共享文档,那才有成就感啊!难道大家没有这个想法吗?
2011-4-15 15:15
0
雪    币: 2015
活跃值: (902)
能力值: ( LV12,RANK:1000 )
在线值:
发帖
回帖
粉丝
11
感谢新东方,感谢cctv!
2011-4-15 15:21
0
雪    币: 208
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
网上就有下载器的,我都免费下了N个G的文件,但图片合成的文件比较大。。后来就放弃这两个网站.....。发现sina下载文档比他们好多了
2011-4-15 15:50
0
雪    币: 2015
活跃值: (902)
能力值: ( LV12,RANK:1000 )
在线值:
发帖
回帖
粉丝
13
我的意思是用自己写的工具,当然在知道了原理的前提下用别人的软件偷个懒也未尝不可。如果什么也不懂,只会用别人的东西,我一定会感到很郁闷,你说呢?
2011-4-15 16:32
0
雪    币: 777
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
我新人。06处女不懂是啥。  看来LZ挺钻牛角尖的。这对研究技术来说是好事。。
2011-4-15 17:01
0
雪    币: 8886
活跃值: (3113)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
又见天易出水了
2011-4-19 14:47
0
雪    币: 149
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
Flash1.SetVariable('_file','D:\xxx\123.mp3');和 play(“_file=123.mp3“”)怎么理解呢/?  flash新手,谢谢
2011-4-19 15:59
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
17
[QUOTE=cttnbcj;948206]
引用:
最初由 天易love发布
楼上原来是06年的处女,感动ing。这只是刁虫小技,如果能免费下载百度文库,豆丁等在线共享文档,那才有成就感啊!难道大家没有这个想法吗?

网上就有下载器的,我都免费下了N个G的文件,但图片合成的文件比较大。。后来就放弃这两个网站.....。发现sina下载文档比他们好多了
[/QUOTE]

有意思,信息很重要
2011-4-19 20:25
0
雪    币: 602
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
能否不用鼠标模拟呢 我记得好像Flash可以和程序通信吧
2011-5-19 10:17
0
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
19
只要是天易的文章我都看,都研究
2011-6-1 20:11
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
搬个板凳坐着看
2011-6-1 20:34
0
雪    币: 172
活跃值: (212)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
天易 神牛 顶礼膜拜
2011-6-2 22:47
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
播放器。。。网上一大堆吧   无聊
2011-6-6 19:12
0
雪    币: 108
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
好强啊,学习了
2011-6-6 20:41
0
雪    币: 2015
活跃值: (902)
能力值: ( LV12,RANK:1000 )
在线值:
发帖
回帖
粉丝
24
我不知道楼上的那个无聊的朋友到底是要渔还是鱼,无语.....
2011-6-12 13:54
0
雪    币: 10
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
顶一下。。学习了
2011-6-30 15:35
0
游客
登录 | 注册 方可回帖
返回
//