手机锁机软件原理

您所在的位置:网站首页 锁机生成器怎么下载 手机锁机软件原理

手机锁机软件原理

2024-07-16 22:35| 来源: 网络整理| 查看: 265

这两天在手机论坛里面发现好多手机被锁屏软件锁屏了,锁屏效果(模拟器中)如下:

 

初次接触这个软件,我一直以为是锁定了fastloader,但是问哪些被锁屏的人,他们没有root,也没有刷过机,只是单单的安装了这个软件,所以就得排除锁定loader的方式。

直到后来反编译这个锁屏软件的安装包,才解开它真正实现的原理:

  1. 通过锁定home键,锁定返回键,这样单凭按键是无法退出该应用。

  2. 用户可能选择强制关机,一旦开机之后,系统就会恢复到桌面应用,而不是本应用,为了开机之后打开本应用,就需要是在应用中注册一个开机完成的广播接受者

    广播如下:android:name="android.intent.action.BOOT_COMPLETED"/>,收到该广播后就通过intent打开本应用。

     3. 当应用不在前台时,比如如下情况: 手机被锁定了,手机来电了,这时应用就在电话应用的下一个应用,这个时候你可以按下home键,将后台的那个应用侧滑清除掉,

     

   为了保证侧滑不被清楚点,它便在后台开启一个看门狗服务,每150ms检测一下前台应用应用是不是我的应用,如果不是就跳转到我的应用,也就是判断上图中最底下的应用是不是我的锁屏应用,如果是的话,就重新打开我的应用。

 

 应用关键代码如下: 

  //4.0以上锁定home键     getWindow().setFlags(0x80000000, 0x80000000);

  //这个方法是锁定home键,4.0下可用,4.0上对部分机型可用.    getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);

  //屏蔽返回键 

     

@Override public void onBackPressed() {

  //屏蔽父类的返回处理   //super.onBackPressed(); }

 

开机广播接受处理:

 public class BootBroadcastReceiver extends BroadcastReceiver  {     String action_boot="android.intent.action.BOOT_COMPLETED";

    @Override     public void onReceive(Context context, Intent intent)     {

      /*因为手机刷了MIUI,我不知道能不能自启,如果不能,删除注释符号。*/

        if (intent.getAction().equals(action_boot)){       Intent ootStartIntent=new Intent(context, MainActivity.class);       ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);       context.startActivity(ootStartIntent);        }

    }

  }

 

开门狗代码:

public class killpoccessserve extends Service{   Context context;   @Override   public IBinder onBind(Intent p1)   {     // TODO: Implement this method     return null;   }

  @Override   public void onCreate()   {     context = this;     //Handler线程,接收timertask的message,用于重启应用。     final Handler h = new Handler(new Handler.Callback(){       public boolean handleMessage(Message msg){         ActivityManager am=(ActivityManager)context.getSystemService(context.ACTIVITY_SERVICE);         List runningTasks = am.getRunningTasks(1);         ActivityManager.RunningTaskInfo runningTaskInfo = runningTasks.get(0);         ComponentName topActivity =runningTaskInfo.topActivity;         String packageName =topActivity.getPackageName();         if(packageName.equals("tk.jianmo.study")){//判断是否是本应用         }else{            //不是本应用,启动应用,并kill掉之前的应用             Intent intent=new Intent();             intent.setClass(context,MainActivity.class);             intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);             startActivity(intent);             am.killBackgroundProcesses(packageName);           }         return false;       }     });

 

    Timer timer;     TimerTask timertask;     timer = new Timer();     timertask = new TimerTask(){     @Override     public void run(){       h.obtainMessage().sendToTarget();

      }     };

    timer.schedule(timertask, 0, 150);//0.15秒启动一次timertask,无延迟

  }

  @Override   public void onStart(Intent intent, int startId){     // TODO: Implement this method     super.onStart(intent, startId);

  }

  @Override   public void onDestroy()   {     // TODO: Implement this method     super.onDestroy();     }}

 

 解决办法:软件卸载(以下的解决办法程度递增的)

  1. 锁屏软件也是软件,只不过你启动该软件后是手机无法退出该软件,当然不排除你手速够快能在150ms(软件开发者设定,如果1s你就gg了)的时间内卸载该应用。

  2. 既然手机是无法退出该应用,那么我们可以借助电脑来卸载该软件,如果手机打开了usb调试,就可以通过手机助手在电脑中卸载安装在手机中的软件,如何没有开启的话,如  果手速够快的话,也可以在150ms时间内,打开usb调试。

  3. 甚至有些手机可以远程管理手机应用,甚至是清除数据。

      4.手机数据双清。

      5.手机刷机。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3