使用意图URL启动Android浏览器的私人活动

问题描述:

首先,我必须承认,我是Android的新手,但我们知道,在Android中,我们无法通过其他应用程序启动应用程序的私人活动。除非它们在intent-filter中设置为android:exported = true,或者它们用于implicit调用。 ,但我们应该可以从应用程序启动私人活动。当涉及到浏览器(特别是android)时,我们可以使用Intent URLs来启动浏览器的私人活动。使用意图URL启动Android浏览器的私人活动

我在Opera Mobile中发现了一些活动,问题是我不能使用Intent URL运行它们,我不知道我在这做什么错误。

例如有在戏曲活动称为OperaMainActivity(或另一个叫OperaStartActivity)我尝试启动它们是这样的:

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

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

但这些都不将启动活动被调用。

但我仍然可以启动AdMarvelActivity这是一个私人,以及:

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

这里是活动如何OperaMain在AndroidManifest定义:

<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它。

这是怎么AdMarvelActivityAndroidManifest定义:

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

我看到这两个的区别并不是很大。我究竟做错了什么 ?!

+0

你在找吗? https://*.com/questions/3004515/android-sending-an-intent-to-browser-to-open-specific-url – Shmuel

+0

没有。它关于启动浏览器的公共活动,可以从其他应用程序调用。即时通讯寻找明确调用隐私浏览器本身的私人活动,当然使用意向URL Schemes –

Vulnerable Handling of Intent URL Scheme已经知道很长时间了,大多数流行的浏览器(如chrome,opera)已经修复了这个bug。然而,其他的Android浏览器仍然有这个漏洞。

我试图对当前版本的Opera Mobile(v37)进行攻击,幸好它没有工作。您必须在较旧的apk上运行它。

如果您有兴趣在其他浏览器上测试此攻击,您可以按照以下说法进行操作:All Your Browsers Belong To Us;它在Dolphin浏览器和Mercury浏览器上展示了这种攻击。

+0

感谢您的回答,我知道有关攻击。但我的问题有点不同。即时通讯问我是否可以开始私人活动,那么为什么我不能开始在问题中提供的活动。我想知道如何运行它们。我的意思是如果我可以启动AdMarvelActivity,那么为什么我不能启动其他人?!我写意图网址错了吗?! –

+1

我同意如果可以运行'AdMarvelActivity',则其他人也应该可以运行。这可能是因为你错过了一些活动开始必需的附加组件。您可以通过'adb logcat |拦截或记录所有意图fgrep -i意图“,并检查问题是否与意图被解雇或接受有关。你想要什么版本的Opera Mobile?请分享您尝试使用的apk和Intent网址。 –

+0

adb命令对于监控非常有用。我发现这个问题出现在某些版本的浏览器(特别是新的浏览器)中,在意图URL中过滤了这个组件。如果你在代码中有通知,他们立即在parseURI之后设置intent.setComponent(null)。所以我们不能使用组件调用私人活动。有没有其他的方式来启动它们? –