# 文件系统，第 8 部分：从 Android 设备中删除预装的恶意软件

> 原文：<https://github.com/angrave/SystemProgramming/wiki/File-System%2C-Part-8%3A-Removing-preinstalled-malware-from-an-Android-device>

案例研究：从 Android 设备中删除恶意软件

本节使用此 wikibook 中讨论的文件系统功能和系统编程工具来查找和删除 Android 平板电脑中不需要的恶意软件。

免责声明。在尝试修改您的平板电脑之前，请确保您的设备上的任何有价值的信息都已备份。不推荐修改操作系统和文件系统的默认设置。尝试使用此 CASU STUDU GUIDE 修改设备可能会导致您的数据丢失或损坏。您的平板电脑可能会无故死机无法使用。后果自负，作者不承担任何责任，也不对本案例研究中包含的这些说明的正确性或完整性做出任何保证。作者不承担任何责任，也不对任何软件（包括本指南中描述或链接的外部第三方软件）提供任何担保。

## 背景

我从亚马逊购买的 E97 Android 平板电脑产生了一些奇怪的问题。最值得注意的是，浏览器应用程序总是在 gotoamazing.com 上打开一个网站，而不是在应用程序首选项中设置的主页（称为浏览器“劫持”）。我们是否可以使用此 wikibook 中的知识来研究一下这种恶意行为的产生原因，并从设备中删除不需要的预安装应用程序？

## 使用的工具

虽然可以通过USB连接计算机，使用Android开发软件来调试删除恶意软件，但本指南仅使用平板电脑上的系统工具。安装了以下应用程序 

*   Malwarebytes - 免费的漏洞和恶意软件工具。
*   Terminal emulator - 一个简单的终端窗口，可以让我们在平板电脑上访问 shell。
*   KingRoot - 使用 Linux 内核中的已知漏洞获取 root 访问权限的工具。

如果能够突破 Android 安全防护系统，安装任何应用程序都可能允许执行任意代码。在上面提到的应用程序中，KingRoot 是最极端的例子，因为它利用系统漏洞为我们的目的获得 root 访问权限。然而，也正因为如此，我们要格外小心KingRoot这个黑客软件 - 我们相信它不会安装任何自己的恶意软件。一个更安全的替代方案是使用 [https://github.com/android-rooting-tools/](https://github.com/android-rooting-tools/)

## 终端概述

最有用的命令是`su grep mount`和 Android 的包管理器工具`pm`。

*   grep -s abc * _/_ （在当前目录和直接子目录中搜索`abc`）
*   su（又名“切换用户”成为 root - 需要 root 设备）
*   mount -o rw，remount / system（允许/系统分区可写）
*   pm disable（又名'包管理器'禁用 Android 应用包）

## 文件系统布局概述

在运行 Android 4.4.2 的特定平板电脑上，预安装的应用程序无法修改且位于

```
/system/app/
/system/priv-app/ 
```

首选项和应用程序数据存储在`/data`分区中，每个应用程序通常打包在一个apk文件中，该文件本质上是一个 zip 文件。安装应用程序时，代码将扩展为可由 Android 虚拟机直接解析的文件。二进制代码（至少对于此特定虚拟机）使用 odex 扩展名。

我们可以在已安装的系统应用程序的代码中搜索字符串'gotoamazing'

```
grep -s gotoamazing /system/app/* /system/priv-app/* 
```

这没有找到任何东西;看来这个字符串没有硬编码到给定系统应用程序的源代码中。那再别的地方看看

我们再来检查所有已安装应用的数据区域

```
cd /data/data
grep -s gotoamazing * */* */*/* 
```

产生了以下内容

```
data/com.android.browser/shared_prefs/xbservice.xml: <string name="URL">http://www.gotoamazing... 
```

-s选项即“silent option”过滤掉其他无效目录或文件。注意我们也可以使用-r 来递归搜索目录，但是使用文件通配符（shell 的通配符扩展*）很有趣。

现在我们到了某个地方！看起来这个字符串是应用程序'com.android.browser'的一部分，但让我们也找出哪个应用程序二进制代码打开'xbservice'首选项。也许这段恶意代码隐藏在另一个应用程序中，并设法秘密加载作为浏览器的扩展？

让我们查找包含 xbservice 的任何文件。这次我们将递归搜索包含'app'的/ system 目录

```
grep -r -s xbservice /system/*app*
Binary file /system/app/Browser.odex matches 
```

最后 - 看来默认浏览器出厂时预先安装了主页劫持。我们卸载吧。为此，让我们先获得管理员权限

```
$ su
# pm list packages -s
```
Android的包管理器有很多命令和选项。以上示例列出了所有当前安装的系统应用程序我们可以使用以下命令卸载浏览器应用程序

```
pm disable com.android.browser
pm uninstall com.android.browser 
```
使用 `pm list packages`，您可以列出所有已安装的包（使用 -s 选项仅查看系统包）。我们禁用了以下系统应用程序。当然，无法真正保证我们已成功删除所有不需要的软件，或者其中一个是误报。因此，我们不建议在此类平板电脑上保留敏感信息。

*   com.android.browser
*   com.adups.fota.sysoper
*   elink.com
*   com.google.android.apps.cloudprint
*   com.mediatek.CrashService
*   com.get.google 应用
*   com.adups.fota（一个可以在将来安装任意项目的无线包）。
*   com.mediatek.appguide.plugin

您可能只需使用`pm enable package-name`或`pm install`以及/ system / app 或/ system / priv-app 中的相关.apk 文件重新启用软件包