有米回应,表示从未在经营过程中采集任何直接的个人身份识别信息,或泄露、兜售任何个人用户信息”,而且有米的SDK插件只是用于“帮助广告主、开发者防作弊,而在实现过程中不符苹果的规定”,而不是“安全漏洞”。
测试版本为V5.3.3,从有米官网下载,包名为YoumiSdk_v5.3.3_2015-10-10.jar。在这个小小的SDK里,有米几乎动用了所有安卓上公开的或者半公开的手段,竭尽全力在了解你的一切,不知道我们揭开这个大幕后,你有没有被有米感动。验证信息如下:
SHA1: F838907012DC1818B8943976DC291D8860F8E859
1、获得安装应用列表。通俗来讲,就是有米在追踪你的手机上安装了哪些APP。大量的广告SDK(包括有米),通过知道你装了哪些APP从而了解你的兴趣(或者性趣),从而在它们的广告平台上对你进行精准画像,然后把这个信息“卖掉”(也可能自用),最终提供“精准”的广告。
2、获得系统里所有正在运行的进程。你上9158了吗?你开快播了吗?你开美图秀秀了吗?你正在手机上干什嘛,有米都知道。有米都知道。有米都知道。重要的话要说三遍。
3、获得正在使用的应用。上一个是获得全部的运行APP列表,这次是当前正在运行的APP,呵呵,有米够狠。有米够狠。有米够狠。
{
return !paramd.h.equals(((ComponentName)localObject).getPackageName());
4、获得用户最近使用过的应用程序信息集合。连最近跑过的APP,已经在后台的,有米都不放过。对你深入地分析,全力以赴了解你的隐私,有米真的好有耐心!
ActivityManager localActivityManager = (ActivityManager)paramContext.getSystemService("activity");
ActivityInfo localActivityInfo = newIntent("android.intent.action.MAIN").addCategory("android.intent.category.HOME").resolveActivityInfo(localPackageManager,0);
long l = System.currentTimeMillis();
Object localObject1 = paramContext.getSystemService("usagestats");
List localList = (List)localMethod1.invoke(localObject1, new Object[] { Integer.valueOf(4), Long.valueOf(l - paramLong), Long.valueOf(l) });
{
Method localMethod2 = localClass2.getMethod("getLastTimeUsed", new Class[0]);
Method localMethod3 = localClass2.getMethod("getPackageName", new Class[0]);
6、通过网络获取当前地理位置。这个就再清楚不过了,它在追踪你的位置,你去了哪里,在哪里待的最久,经常出没在哪里,有米都知道,当然还有后面更狠的——追踪你的基站。而你不知道它知道你,它知道你不知道它知道你!
localLocation = localLocationManager.getLastKnownLocation("network");
localObject = (GsmCellLocation)localTelephonyManager.getCellLocation();
a= ((GsmCellLocation)localObject).getCid();
中国电信获取LAC、CID的方式
Method[] arrayOfMethod = localObject.getClass().getMethods();
for (int j = 0; j < arrayOfMethod.length; j++)
Method localMethod = arrayOfMethod[j];
if (localMethod.getName().equals("getbaseStationId"))
else if (localMethod.getName().equals("getNetworkId"))
else if (localMethod.getName().equals("getSystemId"))
}
str1 = localTelephonyManager.getDeviceId();
String str = Settings.Secure.getString(paramContext.getContentResolver(), "android_id");
WifiManager localWifiManager = q.c(paramContext);
String str = localWifiInfo.getMacAddress();
String str3 = localTelephonyManager.getNetworkOperator();
String str4 = localTelephonyManager.getSubscriberId(); 13、手机移动终端的网络类型。有米要知道你在用什么网络,是GSM,还是CDMA,还是WCDMA,还是LTE,总之你是逃不掉了。 int i = localTelephonyManager.getPhoneType();
Field localField = Build.class.getField("MANUFACTURER");
private static void b(Context paramContext, int paramInt)
SensorManager localSensorManager = (SensorManager)paramContext.getSystemService("sensor");
if (localSensor != null)
localSensorManager.registerListener(i, localSensor, 2);
16、访问proc文件夹。这里面可以访问进程的状态,知道你运行的APP当前处于什么状态,可是这个相比于下面这个目的,就是小巫见大巫了:/proc/%d/oom_score 通过修改其值为0 ,可防止进程因为内存不足而被系统杀死,这下你明白你的手机为啥耗电了吧,为啥卡顿了吧,这根本不是八核、十六核能解决的啊。
最后总结一下,我们测试的有米安卓SDK,每隔一秒都要统计一下你的状态,即使系统内存不足也能保证用自己SDK的APP不会被杀死,它几乎把安卓上关于“你是谁”的全部维度(就差读取短信、读取通话记录、读取通讯录、读取上网记录,读取搜索记录,读取WIFI记录,读取相册)都统计了,相对跟那些“穷凶极恶”的安卓广告SDK,这已经比较文明的了。
如果您对我们的分析有任何疑点,或者您希望我们分析某款APP,欢迎发送邮件到James@toolwiz.com。我们将陆续公开全球近100种广告SDK的内幕,请持续关注我们(微信公众号:必拓狮)。
