[android] 手機衛士設備管理權限鎖屏


設備管理員 Device Admin

獲取DevicePolicyManager對象,通過getSystemService(DEVICE_POLICY_MANAGER),設備策略管理器

 

調用DevicePolicyManager對象的lockNow()方法,鎖定,此時會報 安全異常

新建一個類MyAdmin繼承系統的DeviceAdminReceiver,這個是廣播接收者

清單文件進行注冊

添加<receiver>節點,設置名稱

設置權限 android:permission=”android.permission.BIND_DEVICE_ADMIN”

添加<meta-data>元數據節點,設置名稱 android:name=”android.app.device_admin”

設置資源 android:resource=”@xml/device_admin_sample”

res目錄下新建xml的文件夾,新建一個device_admin_sample.xml文件

添加<intent-filter>節點,添加動作,android.app.action.DEVICE_ADMIN_ENABLED

此時還會報錯

 

打開系統設置,找到設備管理器,勾選設備管理員權限,激活設備

開啟管理員權限

獲取Intent對象,new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN)

調用Intent對象putExtra(),傳遞數據,要激活的組件,

參數:DevicePolicyManager.EXTRA_DEVICE_ADMINComponentName組件名對象

獲取ComponentName對象,new出來,參數:上下文,Myadmin.class

調用Intent對象putExtra(),傳遞解說數據,勸說用戶開啟,參數:

DevicePolicyManager.EXTRA_ADD_EXPLANATION,文本

調用startActivity()

 

調用DevicePolicyManager對象的isAdminActive()方法,可以判斷是否有管理員權限,參數:ComponentName對象

調用DevicePolicyManager對象的resetPassword()方法,重置密碼,參數:password,0,把password設置為””可以取消密碼

 

調用DevicePolicyManager對象的wipeData()方法,清除數據,參數:清除sdDevicePlocyManager.WIPE_EXTERANL_STORGE

如果是0,就是恢復出廠設置

 

卸載軟件

這個裝上就卸載不掉了

調用DevicePolicyManager對象的removeActiveAdmin()方法,清除管理員權限,參數:ComponentName組件名對象,獲取ComponentName對象,new出來,參數:上下文,Myadmin.class

獲取Intent對象

調用Intent對象的setAction()方法,設置動作,參數:android.intent.action.VIEW

調用Intent對象的addCategory()添加類型,參數:android.intent.category.DEFAULT

調用Intent對象的setData(),設置數據,

參數:Uri對象,獲取Uri對象Uri.parse(“package:”+getPackageName())

調用startActivity()

device_admin_sample.xml

<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-policies>
    <limit-password />
    <watch-login />
    <reset-password />
    <force-lock />
    <wipe-data />
    <expire-password />
    <encrypted-storage />
    <disable-camera />
  </uses-policies>
</device-admin>

 

package com.tsh.mylockscreen;

import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {
    private DevicePolicyManager dpm;
    ComponentName who;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
        who=new ComponentName(this, MyAdmin.class);
    }

    // 一鍵鎖屏
    public void lockScreen(View v) {
        if (dpm.isAdminActive(who)) {
            dpm.lockNow();
            dpm.resetPassword("123", 0);
        } else {
            Intent intent =new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, who);
            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"快開啟吧");
            startActivity(intent);
            Toast.makeText(this, "沒有設備管理權限", 1).show();
        }

    }
    //一鍵卸載
    public void uninstall(View v) {
        dpm.removeActiveAdmin(who);
        Intent intent=new Intent();
        intent.setAction(Intent.ACTION_DELETE);
        intent.addCategory("android.intent.category.DEFAULT");
        intent.setData(Uri.parse("package:"+getPackageName()));
        startActivity(intent);
    }
}

相關技術:

知乎:如何看待安卓惡意軟件開發者和這類軟件?

 

KK咯:

有在“安卓吧”的網友應該都聽說過”薄荷大神“。(不知道的可以進去了解下e涼心薄荷吧_百度貼吧)

后來吧友求助與吾愛破解,然后有大神分析了整個過程。

 

1.經過AndroidKiller工具反編譯、查殼發現,該樣本apk程序已經經過愛加密加固過了。但是也奇怪,碰到不少的Android敲詐者病毒從去年到現在,

基本都是經過愛加密加固加過殼處理。為了分析該敲詐者病毒,對樣本進行脫殼處理.。

2.該敲詐者病毒樣本的包名為android.support.v8主活動類為android.support.v7.q448870015。

3. 該敲詐者樣本Apk被安裝運行后,首先獲取設備安全管理服務,判斷當前主活動組件是否有系統管理員權限;

如果當前主活動組件有系統管理員權限,直接將用戶的手機進行鎖定。

4.如果當前主活動組件沒有系統管理員權限,則創建新的Activity可視界面活動類android.app.action.ADD_DEVICE_ADMIN,

使用誘導性的提示語“請先激活設備管理器”,誘導用戶激活設備管理器,用戶點擊“激活”,激活設備管理器獲取系統管理員權限,

為用戶的手機設置鎖屏密碼做准備。

5.對這個作者很無語,如果用戶點擊“激活”,激活了用戶手機的設備管器,獲取系統權限則該病毒apk程序會為用戶的手機設置固定值的鎖機密碼,

經過解密后得到鎖機密碼為"4650";如果用戶沒有點擊激活,則該樣本apk會死循環調用顯示設備激活管理器界面,直到用戶點擊激活導致手機被鎖屏密碼鎖定為止。

6.該病毒的作者還設置了另外一組手機鎖屏的密碼,但是經過分析發現,用病毒作者的字符串解密代碼解密出來的手機鎖屏密碼是空。

7.但是請注意,即使解鎖了手機的鎖屏密碼,但是一旦用戶的手機重啟、手機的通話狀態發生改變、手機的網絡狀態發生改變、屏幕橫豎屏發生切換、

WIFI的狀態發生改變等,用戶的手機又會被全屏界面活動類鎖定,不能正常使用。

8.由於該病毒apk程序,靜態注冊了上面截圖中提到的很多廣播;因此,一旦有這些廣播發出,該apk程序就會高優先級的調用廣播接收者"android.support.v7.BootBroadcastReceiver"。

9. 廣播接收者"android.support.v7.BootBroadcastReceiver"則會啟動全屏界面透明的活動類"android.support.v7.MainActivity",將用戶的手機再次鎖定,導致用戶的手機不能正常使用並且還會播放一段音樂。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM