手机锁机软件原理 |
您所在的位置:网站首页 › 锁机生成器怎么下载 › 手机锁机软件原理 |
这两天在手机论坛里面发现好多手机被锁屏软件锁屏了,锁屏效果(模拟器中)如下:
初次接触这个软件,我一直以为是锁定了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 |