BroadcastReceiver 和 ContentProvider 除了应用程序开、关事件还能接收什么?这是别人的代码安全吗?
<provider
android:authorities="${applicationId}.elephantprovider"
android:name="com.elephant.data.ElephantDataProvider"
android:exported="true"
android:multiprocess="false"/>
<receiver android:name="com.elephant.data.ElephantBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED"/>
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
<data android:scheme="package"/>
</intent-filter>
</receiver>
Декомпилированый jar:
package com.elephant.data;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.elephant.data.p000a.C0016g;
import com.elephant.data.p012g.C0082a;
public class ElephantBroadcastReceiver extends BroadcastReceiver {
static {
String str = C0082a.af;
}
public void onReceive(Context context, Intent intent) {
try {
((BroadcastReceiver) Class.forName(C0016g.class.getName()).newInstance()).onReceive(context, intent);
} catch (Throwable th) {
}
}
}
package com.elephant.data;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import com.elephant.data.p000a.C0018i;
public class ElephantDataProvider extends ContentProvider {
public int delete(Uri uri, String str, String[] strArr) {
return C0018i.m37a().m40a(uri, str, strArr);
}
public String getType(Uri uri) {
C0018i.m37a();
return C0018i.m38b();
}
public Uri insert(Uri uri, ContentValues contentValues) {
return C0018i.m37a().m42a(uri, contentValues);
}
public boolean onCreate() {
C0018i.m37a().m43a(getContext());
return true;
}
public Cursor query(Uri uri, String[] strArr, String str, String[] strArr2, String str2) {
return C0018i.m37a().m41a(uri, strArr, str, strArr2, str2);
}
public int update(Uri uri, ContentValues contentValues, String str, String[] strArr) {
return C0018i.m37a().m39a(uri, contentValues, str, strArr);
}
}
其他类别的垃圾。
与它的要求隔离的安全性 - 不存在。例如,将 AirPush 中的木马添加到应用程序中,达到一定程度,不仅不坏,而且是极好的实践。这样做的人不是病毒作者,而是合作伙伴。但在某些时候,显然,投诉流超出了所有可以想象的限制,使用这种垃圾的应用程序突然变得非常糟糕。与此同时,规则诞生了,Googleplay 上充斥着“airpush 探测器”之类的应用程序。
此方法允许您找出已安装的应用程序。例如,这就是公司收集有关用户使用什么、他们安装什么软件等统计数据的方式。原则上,没有犯罪行为......但有细微差别。例如,通过这种方式,网络的作者将能够控制“已售安装”,即 查明用户是否安装了广告的应用程序。你自愿成为僵尸网络的一员,不是吗?第二个问题是侵犯隐私,因此公司可以发现没有在任何地方发布的私人应用程序,用户显然不会对此感到高兴。
而能不能发到Googleplay,还要看Googleplay本身的规则。今天很可能这是一个很好的联盟计划,有很酷的好处(或者至少统计数据,有时它们以 30 块银子的价格出售)。明天,这种污秽将被禁止。