最近在部署一台新设备时,由于懒得翻墙用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的弹广告的方式更恶心。