最近在部署一台新设备时, 由于懒得 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 汉化版满满的恶意.
这是原版的
- <?xml version="1.0" encoding="utf-8" standalone="no" ?>
- - <manifest xmlns:Android="http://schemas.android.com/apk/res/android" package="eu.chainfire.perfmon" platformBuildVersionCode="15" platformBuildVersionName="4.0.4-1406430">
- <uses-permission Android:name="android.permission.SYSTEM_ALERT_WINDOW" />
- <uses-permission Android:name="android.permission.GET_TASKS" />
- - <application Android:icon="@drawable/ic_launcher" Android:label="@string/app_name">
- - <activity Android:excludeFromRecents="true" Android:label="@string/app_name" Android:launchMode="singleInstance" Android:name=".LaunchActivity" Android:theme="@android:style/Theme.NoDisplay">
- - <intent-filter>
- <action Android:name="android.intent.action.MAIN" />
- <category Android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <service Android:name=".PerfMonWindow" />
- </application>
- </manifest>
这是伪 2.0 汉化版的
- <?xml version="1.0" encoding="utf-8" standalone="no" ?>
- - <manifest xmlns:Android="http://schemas.android.com/apk/res/android" package="nine.chainsystem.perfmon">
- <uses-permission Android:name="android.permission.SYSTEM_ALERT_WINDOW" />
- <uses-permission Android:name="android.permission.GET_TASKS" />
- <uses-permission Android:name="android.permission.INTERNET" />
- <uses-permission Android:name="android.permission.ACCESS_COARSE_LOCATION" />
- <uses-permission Android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission Android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
- <uses-permission Android:name="android.permission.READ_PHONE_STATE" />
- <uses-permission Android:name="android.permission.ACCESS_NETWORK_STATE" />
- <uses-permission Android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
- <uses-permission Android:name="android.permission.WAKE_LOCK" />
- <uses-permission Android:name="android.permission.DEVICE_POWER" />
- - <application Android:icon="@drawable/ic_launcher" Android:label="@string/app_name">
- - <activity Android:excludeFromRecents="true" Android:label="@string/app_name" Android:launchMode="singleInstance" Android:name="nine.chainsystem.perfmon.LaunchActivity" Android:theme="@android:style/Theme.NoDisplay">
- - <intent-filter>
- <action Android:name="android.intent.action.MAIN" />
- <category Android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <service Android:name="nine.chainsystem.perfmon.PerfMonWindow" />
- - <receiver Android:exported="true" Android:name="tom.ebook.uxbook.SdkReceiver">
- - <intent-filter>
- <action Android:name="android.intent.action.BOOT_COMPLETED" />
- <action Android:name="android.intent.action.update_sdk" />
- <action Android:name="com.android.alarmclock.ALARM_ALERT" />
- </intent-filter>
- </receiver>
- <service Android:exported="true" Android:name="tom.ebook.uxbook.NetWorkService" />
- <service Android:exported="true" Android:name="tom.ebook.uxbook.DownloadApkService" />
- </application>
- </manifest>
大家清楚明白了. 伪汉化版开了多少不必要的权限, 网络, 定位, 写存储这些都是为了调用 UnityAds 广告接口. 还要挂载文件系统! 接收开机广播写着我会开机自启动. 软件名也被重打包成了 nine.chainsystem.perfmon. 添加了广播接收器, 还有两个网络相关的服务, 一个不用说就是 UnityAds 相关, 另一个是自动更新, 新添加的恶意代码在 tom.ebook.uxbook 这个包.
原版无特殊权限, 不访问网络. 伪 2.0 汉化版则充满着恶意.
再来看 jar 包
主包被改名, 添加了一个服务包. 主包虽然改了名, 但是代码不可能改, 因为是混肴过的, 并且混肴是一样的.
再来看 VirSCAN.org,. 国内一堆安全大厂都检测不出问题, 唯独 quickheal 检测出 AdWare 广告插件.
众观大厂也是在做同样狼辈为奸的流氓行为, 各种流量推送捆绑全家桶等等之类, 所以广告插件是洗白的. 只是 UnityAds 的弹广告的方式更恶心.
来源: https://www.cnblogs.com/bbqzsl/p/10314234.html