参考此篇文章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, "设备管理:改变密码成功");
}
}