【问题标题】:How are windows executables [.exe] launched out of browsers?Windows 可执行文件 [.exe] 如何从浏览器中启动?
【发布时间】:2010-12-08 03:31:25
【问题描述】:

我不是在谈论浏览器漏洞。我说的是真实公司中使用的真实应用程序,例如IjjiNexon

基本上,您可以在他们的网站上单击“开始游戏”按钮,这将启动分别位于 c:\ijji\english 或 c\nexon[gamename] 的可执行文件。这些应用程序是真正的桌面应用程序,这意味着它们可以利用文件系统、direct3d 和操作系统 [以执行其他应用程序的形式]。应用程序也可以通过命令行启动[而不是去游戏主机的网站]。

我认为如果应用程序创建一个 ActiveX 对象来调用新进程的创建,这将是可能的。但是,这些网站能够从 Internet Explorer 以外的多个浏览器启动应用程序,包括 chrome,据我所知,它没有实现 ActiveX。

显然,开发这些应用程序的人使用他们自己的方式来做到这一点。

通过查看服务列表以及当前正在运行的应用程序列表,我没有迹象表明它们正在运行类似“gameLaunchingServer.exe”的东西,它侦听某个模糊端口以获取传入连接 [使用 iframe 访问 - HTTP 协议] 并通过启动应用程序来响应...

我被难住了,这有点卡在我的脑海里。显然,他们没有使用一些随机浏览器漏洞,否则 http://www.[insertMaliciousWebsiteHere].com 上的人会抓住机会安装随机垃圾。不管怎样,它看起来很酷,我想知道它是如何工作的。

只是好奇,呵呵。

【问题讨论】:

    标签: javascript html web-applications executable


    【解决方案1】:

    我相信他们正在做的是在安装时设置自己的协议处理程序 - 当要求浏览器使用它不知道如何处理的协议访问地址时(例如,steam://地址),它会查看所有已安装的协议处理程序以找到匹配项。

    因此您可以将您的应用程序注册为 myApplication:// 协议处理程序,然后您的网页可以链接到 myApplication:// 地址并启动您的应用程序。

    【讨论】:

      【解决方案2】:

      我并没有完全找到您所说的按钮,但我认为它只有在您安装一次应用程序后才能工作,不是吗?

      在这种情况下,应用程序可能创建了自己的协议,就像 skype、msn 和一堆客户端一样。

      【讨论】:

        【解决方案3】:

        拥有一个协议是最简单的方法(而且确实很容易实现 - 一个简单的注册表项)。

        另一种使用方式是扩展或插件。

        【讨论】:

          【解决方案4】:

          我以为它们是通过插件或类似小程序运行的。

          例如,MS SilverLight

          【讨论】:

            猜你喜欢
            • 2015-09-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多