恶意软件分析---Android设备管理器

参考此篇文章https://blog.csdn.net/etzmico/article/details/6848061,本文旨在记录在恶意代码分析时在遇到申请设备管理器类型恶意软件时需要着重注意的代码位置,以及几个关键的回调函数的调用时机。

AM文件中必须有如下声明:

<receiver android:name=".deviceAdminReceiver" android:label="@string/app_name"  
    android:description="@string/description" android:permission="android.permission.BIND_DEVICE_ADMIN">  

    <meta-data android:name="android.app.device_admin"  
                android:resource="@xml/device_admin" />  

    <intent-filter>  
        <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />  
    </intent-filter>  

</receiver>  

还需要一个xml清单文件,一般位于Resource/xml/下,其中“uses-policies”字段将声明设备管理器拥有的权限,形如:

<?xml version="1.0" encoding="utf-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-policies>
        <disable-camera />
        <expire-password />
        <limit-password />
        <watch-login />
        <reset-password />
        <force-lock />
        <wipe-data />
        <recover-password />
        <history-password />
        <min-passwordcomplexchars />
        <require-device-encryption />
        <require-storagecard-encryption />
        <allow-wifi />
        <allow-bluetoothmode />
        <encrypted-storage />
    </uses-policies>
</device-admin>

广播类deviceAdminReceiver,继承DeviceAdminReceiver,重写一些必要的实现函数:

public class deviceAdminReceiver extends DeviceAdminReceiver {   

    @Override  
    public void onEnabled(Context context, Intent intent) {  
        // TODO Auto-generated method stub  
        showToast(context, "设备管理:可用");  
        // 在此方法中,一般的勒索恶意软件在回调到此函数时,可以开始执行加密数据、修改密码、锁屏之类的操作了
    }  

    @Override  
    public void onDisabled(Context context, Intent intent) {  
        // TODO Auto-generated method stub  
        showToast(context, "设备管理:不可用");  
    }  

    @Override  
    public CharSequence onDisableRequested(Context context, Intent intent) {  
        // TODO Auto-generated method stub  
        return "这是一个可选的消息,警告有关禁止用户的请求";  
    }  

    @Override  
    public void onPasswordChanged(Context context, Intent intent) {  
        // TODO Auto-generated method stub  
        showToast(context, "设备管理:密码己经改变");  
    }  

    @Override  
    public void onPasswordFailed(Context context, Intent intent) {  
        // TODO Auto-generated method stub  
        showToast(context, "设备管理:改变密码失败");  
    }  

    @Override  
    public void onPasswordSucceeded(Context context, Intent intent) {  
        // TODO Auto-generated method stub  
        showToast(context, "设备管理:改变密码成功");  
    }  

}  

猜你喜欢

转载自blog.csdn.net/u014021893/article/details/79696223