013 Android锁机病毒分析

免流服务器-锁机病毒分析

首先来分析这个免流服务器的锁机病毒,文件信息如下

文件: 免流服务器.apk
大小: 799835 bytes
修改时间: 2016年3月 16日, 23:26:10
MD5: 2EFCA46F34A565C2EF4052B89B6B364B
SHA1: 5493A958A592BB0B19C43ACB2C1F52C898885207
CRC32: 7F89A927

在这里插入图片描述

安装以后点击安装核心按钮

在这里插入图片描述

这里在请求root权限,点击允许

在这里插入图片描述

按照提示重启模拟器

在这里插入图片描述

重启完成之后手机被锁屏。将apk拖到Android Killer进行分析

在这里插入图片描述

首先查看工程信息,这里可以查看到当前apk的四大组件的注册信息以及用户权限。

在这里插入图片描述

然后查看当前工程的清单文件,入口类为MainActivity

在这里插入图片描述

直接查看onCreate函数的JAVA代码,从头开始分析。

这里创建了一个文件对象stk3.apk,然后往路径中写入文件数据。

写入的文件数据来自于getAssets方法中的stk3.apk文件。

getAssets方法的含义就是获取当前apk的assets文件夹,当前apk的assets有下面几个自定义资源文件

在这里插入图片描述

上面的代码写入的数据就是来源于stk3.apk

在这里插入图片描述

Android Killer的反编译效果并不好,这里可以换成jadx进行对比分析。到这里onCreate方法就分析完了,该app启动时,会自动将资源中的stk3.apk写入到SD卡中。

接着查看资源中的layout布局文件

在这里插入图片描述

安装核心这个按钮,有一个对应的onClick方法,接着来分析这个onClick方法

在这里插入图片描述

az这个方法是将stk3.apk拷贝到系统,点进去看CopyAppToSystem函数


    private void copyAppToSystem(String str) {
        try {
            Process root = getRoot();
            if (root != null) {
                DataOutputStream dataOutputStream = new DataOutputStream(root.getOutputStream());
                dataOutputStream.writeBytes("mount -o remount, rw /system/\n");
                dataOutputStream.writeBytes(new StringBuffer().append(new StringBuffer().append(new StringBuffer().append("cp ").append(str).toString()).append(" /system/app/").toString()).append("\n").toString());
                dataOutputStream.writeBytes(new StringBuffer().append(new StringBuffer().append(this.CHMOD_CMD).append(str.substring(str.lastIndexOf("/"))).toString()).append("\n").toString());
                dataOutputStream.writeBytes("exit\n");
                root.waitFor();
                dataOutputStream.close();
                Toast.makeText(this, "开始安装核心文件....", 0).show();
                Toast.makeText(this, "正在进行最后处理....", 0).show();
                Toast.makeText(this, "核心文件安装完成!重启手机后生效!", 0).show();
            }
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(this, "核心文件安装错误!请确认手机是否已经root!", 0).show();
        }
    }


这个方法做了以下几件事

  1. 获取root权限
  2. 执行shell命令,修改系统目录
  3. 将stk3.apk拷贝到system/app目录下
  4. 修改apk权限为777,可读可写可执行
  5. 执行退出命令
  6. 提示用户重启手机

接着来分析stk3.apk

在这里插入图片描述

查看工程信息,确定入口类

在这里插入图片描述

再查看清单文件,清单文件中有开机自启动的权限以及一个广播接收者,也就是说开机之后会自动执行广播接收者的回调函数

再来查看入口类的代码

在这里插入图片描述

onCreate方法中启动了一个名为llxfc的服务

在这里插入图片描述

在onStartCommand方法里,创建了一个覆盖桌面的窗口,并且设置了42个按钮,这里只要找到了解锁按钮对应的响应事件就能够找到密码

而解锁按钮必然要获取输入的内容进行比较

在这里插入图片描述

这里直接搜索equals就能找到响应函数

      @Override
      public void onClick(View paramAnonymousView)
      {
        if ((llxfc.access$L1000000(llxfc.this).getText().toString().equals("T")) && (llxfc.access$L1000001(llxfc.this).getText().toString().equals("F")) && (llxfc.access$L1000002(llxfc.this).getText().toString().equals("B")) && (llxfc.access$L1000003(llxfc.this).getText().toString().equals("4"))) {
          llxfc.access$L1000005(llxfc.this).removeView(llxfc.access$L1000006(llxfc.this));
        }
      }
    });

这里很容易就能看到密码是TFB4

在这里插入图片描述

输入TFB4,点击解锁

在这里插入图片描述

即可完成解密

秒抢红包-锁机病毒分析

样本信息如下:

文件: 锁机-秒抢红包.apk
大小: 251271 bytes
修改时间: 2016年4月 15日, 23:37:26
MD5: 033AE1BA78676130E99ACC8D9F853124
SHA1: B43F731C59FF37602CB9F971F893965EF19C9DEE
CRC32: AAC480FC

在这里插入图片描述

运行样本,提示是否激活设备管理器

在这里插入图片描述

点击激活后,返回主界面,模拟器被锁屏。这个样本是个双重密码,安装完成后有运行时解锁密码,重启之后有屏幕锁屏密码

在这里插入图片描述

将文件用Android Killer打开,查看工程信息,

在这里插入图片描述

接着查看onCreate方法,里面调用了activiteDevice方法,跟进去查看代码

在这里插入图片描述

这个函数创建了一个Intent,获取一个Class,接着启动了这个设备管理器。接着来查看MyAdmin这个类
在这里插入图片描述

分析onEnabled函数,这个是设备管理器的激活方法,很明显就能看出密码就是8985,但是这个8985并不是当前这一层的解锁密码。

接着又启动了一个服务,就是说com.h.s这个类是一个服务类,剩下的代码都在服务里面。首先查看服务的onCreate方法

在这里插入图片描述

这里创建了一个pass和passw对象,和一个des算法对象

this.pass = ((Math.random() * 100000000));
this.passw = new Long(this.pass + '?');
this.des = new DU("flower");

接着获取Flowers这个xml文件

this.share = getSharedPreferences("Flowers", 0);

如果Flowers.xml里面的m等于0的话,就往里面写入pass这个值

 if (this.share.getLong("m", 0) == 0)
      {
        this.editor.putLong("m", this.pass);
        this.editor.commit();
      }

往 this.editor写入passw和加密后的字符串

 this.editor.putString("passw", this.des.encrypt(new StringBuffer().append("").append(this.passw).toString()));

this.editor.commit();

也就是说Flowers.xml里面有两个数据,一个是m对应的value,一个是passw对应的value。接着我们用adb连接模拟器,去查看这个文件的内容

在这里插入图片描述

首先查看当前设备,确认连接成功

在这里插入图片描述

接着使用adb shell命令,进入到命令行

在这里插入图片描述

切换到data/data/com.h目录下,里面有一个文件夹shared_prefs

在这里插入图片描述

查看Flowers.xml,可以看到m的值和passw的值

在这里插入图片描述

回到代码,m的值就是pass,而passw就是pass加上8985,所以passw的值就等于‭65475849‬,这个就是第一层的密码

在这里插入图片描述

输入密码之后,第一层解锁完成

在这里插入图片描述

再输入8985,第二层解锁完成,到这里这个锁机病毒就分析完成了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼手56

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值