欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

从Android锁屏病毒探讨smali语法

来源:本站整理 作者:佚名 时间:2019-04-09 TAG: 我要投稿

本次分析的样本是一款比较简单的android锁屏病毒,通过设备管理器来进行锁屏功能,并利用开机广播和服务的结合实现开机锁屏,解锁方式通过电话拨入,对资源文件进行解密出字符串和来电电话进行匹配的方式进行解锁。我们主要是从者一款比较简单的病毒中熟悉一下smali语法。
文件简介
App应用名称: 红包强盗(后台版)md5: F3ADAADC7A8CB0D16A1AD05AADC8B1F2包名: com.cjk。
详细分析
第一步,直接先上模拟器,看看大概是个什么毒。从截图看出它想申请设备管理员权限,然后就弹出锁屏界面,一枚锁品病毒:

看看apk包内的文件,在res\raw目录下发现四个可疑文本文件,内容是Cj09QU80TVRu、Cj1rRE0xY3puMllqTTVuVE0=这些有可能是加密过的字符串,还在res\drawable目录下,发现下面这个qq二维码,也没什么so文件,也不会加固过。


主要从从AndroidManifest.xml文件中看四大组件,一般样本都会将恶意行为放在服务组件,需要重点关注。
application android:debuggable="false" android:icon="@drawable/icon" android:label="王者荣耀点卷生成器" android:theme="@style/AppTheme">
 activity android:label="@string/app_name" android:name=".M">
   intent-filter>
     action android:name="android.intent.action.MAIN" />
     category android:name="android.intent.category.LAUNCHER" />
   intent-filter>
 activity>
 service android:name="s" />
 receiver android:name="bbb">
   intent-filter android:priority="2147483647">
     action android:name="android.intent.action.BOOT_COMPLETED" />
   intent-filter>
 receiver>
 receiver android:description="@string/hello" android:name=".MyAdmin">
   meta-data android:name="android.app.device_admin" android:resource="@xml/my_admin" />
   intent-filter>
     action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
   intent-filter>
 receiver>
application>
1)s服务根据服务生命周期表可以知道,针对两种不同方式启动的服务,调用的方法是不同的,因为下面onbind方法并没有任何操作,如果要开启这个服务只会走startService方法,所以我们顺着onCreate->onStartCommand来看。

//onBind方法,参数为Intent类实例化的对象
.method public onBind(Intent)IBinder
          //onBind方法方法中用到了6个寄存器
          .registers 6
           //注解,就是java中的@Override
          .annotation runtime Override
          .end annotation
// 将参数p0(this)赋值给变量v0
00000000  move-object         v0, p0
//将参数p1(传入的Intent类型参数)赋值给变量v1
00000002  move-object         v1, p1
00000004  const/4             v3, 0
//检查v3是否可以转化成IBinder类
00000006  check-cast          v3, IBinder
0000000A  move-object         v0, v3
//返回一个null对象
0000000C  return-object       v0
.end method
在看oncreate之前,在他的构造方法中,可以看见有几个敏感的数据,QQ号,暱称,并且将这串字符串进行静态方法MD5Util->getMD5String的处理,下面主要看看这个处理过程。
.method public constructor ()V
          .registers 5
00000000  move-object         v0, p0
00000002  move-object         v2, v0
//直接调用Service的构造方法super(),(这种调用不存在被覆盖,编译时静态确认)
00000004  invoke-direct       Service->()V, v2
0000000A  move-object         v2, v0

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载