android - 使用 Intent URL 启动 Android 浏览器的私有(private) Activity

标签 android android-intent android-activity intentfilter android-browser

首先我不得不承认我是Android的新手,但我们知道在android中我们不能通过另一个应用程序启动应用程序的私有(private) Activity 。除非它们在它们的 intent-filter 中设置为 android:exported=true 或者它们是为 implicit calls 制作的。 但我们应该能够从应用程序中启动私有(private) Activity 。对于浏览器(特别是在 Android 中),我们可以使用 Intent URLs 启动浏览器的私有(private) Activity。

我在 Opera Mobile 中发现了一些 Activity ,问题是我无法使用 Intent URL 运行它们,而且我不知道我在这方面做错了什么。

例如,歌剧中有一个名为 OperaMainActivity 的 Activity(或另一个名为 OperaStartActivity),我试图像这样启动它们:

intent:#Intent;component=com.opera.browser/com.opera.android.OperaMainActivity;end

intent:#Intent;component=com.opera.browser/com.opera.android.OperaStartActivity;end

但这些都不会启动调用的 Activity 。

尽管我仍然可以启动 AdMarvelActivity,它也是私有(private)的:

"intent:#Intent;S.url=https://google.com;component=com.opera.browser/com.admarvel.android.ads.AdMarvelActivity;end";

这是在 AndroidManifest 中定义 OperaMain Activity 的方式:

<activity ns0:label="@string/app_name_title" ns0:name="com.opera.android.OperaMainActivity" ns0:launchMode="singleTask" ns0:configChanges="keyboard|keyboardHidden|orientation|screenSize" ns0:windowSoftInputMode="10" />

而且没有 intent-filter

AndroidManifest 中的 AdMarvelActivity 是这样定义的:

<activity ns0:theme="@*ns0:style/Theme.NoTitleBar.Fullscreen" ns0:name="com.admarvel.android.ads.AdMarvelActivity" ns0:process=":helper" ns0:configChanges="keyboard|keyboardHidden|orientation" />

我看不出这两者有什么大的区别。我做错了什么?!

最佳答案

Vulnerable Handling of Intent URL Scheme很久以前就知道了,大多数流行的浏览器(如 chrome、opera)都修复了这个错误。然而,替代的 Android 浏览器仍然存在此漏洞。

我尝试了对当前版本的 Opera Mobile (v37) 的攻击,幸运的是它不起作用。您必须在较旧的 apk 上运行它。

如果您有兴趣在替代浏览器上测试这种攻击,您可以关注这个演讲:All Your Browsers Belong To Us ;其中演示了对 Dolphin 浏览器和 Mercury 浏览器的这种攻击。

关于android - 使用 Intent URL 启动 Android 浏览器的私有(private) Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39563222/

相关文章:

Android:点击按钮时刷新/更新另一个 Activity 的 fragment

Ubuntu 上的安卓模拟器

java - 使用 Robolectric,如何在运行测试类中的所有测试方法之前和之后初始化和完成内容

android - 恢复 Top Activity 而不是启动 Launcher Activity

java - Activity 在收到 onActivityResult 之前被销毁并重新创建

android - 如何使用后退按钮转到上一个 Activity

java - 按手机上的后退按钮有不同的行为来返回 Intent

android - 浏览器 Intent 导致应用程序重新创建 Activity

java - 运行 Activity 时无限循环

android - 谷歌+登录 : Activity won't start