最近在部署一台新设备时,由于懒得FQ用google下载软件,由一次中了坑。百度搜索出来的这个《性能监视器 v2.0 汉化版》,安装了之后,设备会时不时自动弹出广告。反编译分析了一下,的确就是这货汉化做了流氓,大伙都为这货送钱弹广告。
首先,PerfMon是一个在安卓系统提供性能监测的浮动窗口的工具软件,是xda.develop上一个chainfire的作者开发的,最后版本是1.21,2015年,大小只有110k。并不存在2.0版本。
那时国内的汉化版也是1.21版,大小也是110k。但是随后就出了一个2.0的汉化版,大小却变成了139k。明白人一看就知道八分了。
1.21及1.21汉化版,大小是110k,图标是这样的:
声称2.0汉化版,大小是138k,图标却变成了这样的:
下面百度的搜索结果前三条:
这流氓汉化版和百度一起作恶不少。我查的是“PerfMon android”,不是搜索出googleplay,以及chainfire在xda上的贴,百度这搜索真让人怀疑。
如果你安装了这货,你的设备就会每半分到一分钟弹一次UnityAds广告。
回到反编译分析。
刚看androidmanifest.xml,就一身汗,伪2.0汉化版满满的恶意。
这是原版的
1 <?xml version="1.0" encoding="utf-8" standalone="no" ?>
2 - <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="eu.chainfire.perfmon" platformBuildVersionCode="15" platformBuildVersionName="4.0.4-1406430">
3 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
4 <uses-permission android:name="android.permission.GET_TASKS" />
5 - <application android:icon="@drawable/ic_launcher" android:label="@string/app_name">
6 - <activity android:excludeFromRecents="true" android:label="@string/app_name" android:launchMode="singleInstance" android:name=".LaunchActivity" android:theme="@android:style/Theme.NoDisplay">
7 - <intent-filter>
8 <action android:name="android.intent.action.MAIN" />
9 <category android:name="android.intent.category.LAUNCHER" />
10 </intent-filter>
11 </activity>
12 <service android:name=".PerfMonWindow" />
13 </application>
14 </manifest>
这是伪2.0汉化版的
1 <?xml version="1.0" encoding="utf-8" standalone="no" ?>
2 - <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="nine.chainsystem.perfmon">
3 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
4 <uses-permission android:name="android.permission.GET_TASKS" />
5 <uses-permission android:name="android.permission.INTERNET" />
6 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
7 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
8 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
9 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
10 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
11 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
12 <uses-permission android:name="android.permission.WAKE_LOCK" />
13 <uses-permission android:name="android.permission.DEVICE_POWER" />
14 - <application android:icon="@drawable/ic_launcher" android:label="@string/app_name">
15 - <activity android:excludeFromRecents="true" android:label="@string/app_name" android:launchMode="singleInstance" android:name="nine.chainsystem.perfmon.LaunchActivity" android:theme="@android:style/Theme.NoDisplay">
16 - <intent-filter>
17 <action android:name="android.intent.action.MAIN" />
18 <category android:name="android.intent.category.LAUNCHER" />
19 </intent-filter>
20 </activity>
21 <service android:name="nine.chainsystem.perfmon.PerfMonWindow" />
22 - <receiver android:exported="true" android:name="tom.ebook.uxbook.SdkReceiver">
23 - <intent-filter>
24 <action android:name="android.intent.action.BOOT_COMPLETED" />
25 <action android:name="android.intent.action.update_sdk" />
26 <action android:name="com.android.alarmclock.ALARM_ALERT" />
27 </intent-filter>
28 </receiver>
29 <service android:exported="true" android:name="tom.ebook.uxbook.NetWorkService" />
30 <service android:exported="true" android:name="tom.ebook.uxbook.DownloadApkService" />
31 </application>
32 </manifest>
大家清楚明白了。伪汉化版开了多少不必要的权限,网络,定位,写存储这些都是为了调用UnityAds广告接口。还要挂载文件系统!接收开机广播写着我会开机自启动。软件名也被重打包成了nine.chainsystem.perfmon。添加了广播接收器,还有两个网络相关的服务,一个不用说就是UnityAds相关,另一个是自动更新,新添加的恶意代码在tom.ebook.uxbook这个包。
原版无特殊权限,不访问网络。伪2.0汉化版则充满着恶意。
再来看jar包
主包被改名,添加了一个服务包。主包虽然改了名,但是代码不可能改,因为是混肴过的,并且混肴是一样的。
再来看VirSCAN.org,http://r.virscan.org/report/02ed82737b021a8fb4927707ddd7cfad。国内一堆安全大厂都检测不出问题,唯独quickheal检测出AdWare广告插件。
众观大厂也是在做同样狼辈为奸的流氓行为,各种流量推送捆绑全家桶等等之类,所以广告插件是洗白的。只是UnityAds的弹广告的方式更恶心。