【问题标题】:Accessing functions in a swf-file through javascript [chatroulette.com]通过 javascript [chatroulette.com] 访问 swf 文件中的函数
【发布时间】:2010-04-28 16:49:12
【问题描述】:

最近我对 chatroulette.com 背后的代码很感兴趣。据我了解,您可能知道它是用 actionscript 编写的点对点网络摄像头聊天服务。我一直想知道的是,是否有可能提取您当前正在与之通信的任何人的 IP 地址。我见过这样做的服务,但它们要求您安装一个在您的计算机上运行的程序,以嗅探 UDP 包。我想知道是否有更简单的方法。

我所知道的是页面上的 javascript 通过“ExternalInterface”与应用程序通信。在这方面,我几乎是个新手,但根据我有限的理解,除非您为来自 javascript 的调用配置了侦听器,然后将回调附加到该事件,否则您无法从 flash 应用程序获取信息。这是正确的还是您可以直接通过 javascript 访问公共函数和变量?

例如有一个这样的公共函数:

public function get outgoingAddress():String{
    return (this.__info.outgoingAddress);
}

可以直接通过javascript访问吗?

如果不能这么简单,是否可以反编译 .swf 文件,更改它(添加一些功能)并重新编译并运行它?我希望有人能在这里满足我的好奇心。

【问题讨论】:

  • 你真的认为发布代码很酷吗?
  • 我刚刚在一个随机问题(你的问题)上添加了赏金来获得徽章。我知道我很糟糕。
  • 你为什么想知道这个?
  • 我没有。我只是想要通过向别人的问题添加赏金而获得的徽章。 :)
  • 所有问题均有效。很高兴知道如何做这样的事情,因为它可以让你更好地理解什么是可能的。也许有人可能会用你的一些程序来尝试这样的事情。此外,可以使用相同的技术来帮助调试。所以,如果你放下你的高马并停止抱怨,你可能会学到一些东西。毕竟这只是一个问题。

标签: javascript actionscript-3 flash


【解决方案1】:

不,不能通过 JavaScript 调用任意公共函数。您需要使用 ExternalInterface。

ExternalInterface.addCallback("outgoingAddress", outgoingAddress);

【讨论】:

    【解决方案2】:

    不是最符合道德的问题。但是,出于教育目的,您可能需要查看重新路由文件。有一篇关于它的文章here

    所以简而言之,是的,当然可以反编译,添加一些功能,然后使用修改后的版本。但是,从道德上讲,这是错误的。该代码不是您的,您可能违反了许可、条款和条件。但这个理论是合理的。

    【讨论】:

      猜你喜欢
      • 2011-09-06
      • 2018-07-18
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多