分析一个安卓锁机APP 技术文章

其实这个样本是我在论坛上别人的求助帖子里看到的,就下载下来看一下:


  • 首先这个软件大小就不对,45KB!其次是看在安装界面,注意右下角的不是【安装】而是【激活】,正常的软件安装都是显示安装。再看安装时系统的提醒,此软件需要的权限:
  • 清除所有数据,恢复出厂设置;
  • 更改屏幕解锁密码;
  • 设置密码规则;
  • 监视屏幕解锁次数;
  • 锁定屏幕;这几条看着怎么都不想常见的APP安装时获取的权限吧

step.png


我们是测试嘛!真正在安装遇见这种APP时,请一定慎重!点击激活后,就是锁屏画面咯:解锁.png

当然,图中的密码,计算方式是逆向此APP后得出的算法而已,接下来我就分析一下;

首先是打开我们的Android逆向工具:Android killer,载入程序:

12345.png

然后我们是 java的开发工具查看java源码,图中的小红圈图标就是,打开后可以看到程序的结构和其中的密码设置算法(非常简单,就是取随机数加上设定的值):

1234.png

其中关键的密码算法就是这段:

super.onCreate();
    this.pass = (()(Math.random() * 100000000));
    long l = this.pass + 100;
    Long localLong = new Long(l);
    this.passw = localLong;
    DU localDU1 = new DU("flower");
    this.des = localDU1;

其中的passw就是锁屏上的所谓序列号,解锁密码就是这个序列号加上 100,到这还没完,因为输入这个后,重启开机还得输入程序改变设置的pin码,在程序里面可以很清除的看到:

123.png


public class MyAdmin extends DeviceAdminReceiver
{
  @Override
  public CharSequence onDisableRequested(Context paramContext, Intent paramIntent)
  {
    String str = Integer.toString(2580);
    getManager(paramContext).lockNow();
    getManager(paramContext).resetPassword(str, 0);
    return super.onDisableRequested(paramContext, paramIntent);
  }

DeviceAdminReceiver就是安卓的设备管理器,通过这个设置的pin码,刚刚前面讲了,程序在安装时就获取了这个权限,所以在后面的卸载中也需要用到设备管理器才可以卸载的。接下来说一下怎么卸载:

首先我们在重启后需要输入刚刚从源码里分析得到儿pin码:2580,输入后就解锁进入桌面了:1231.png1212.png


注意:卸载的时候需要取消激活设备管理器,这时候还要在输入一次pin值,完了以后再确认一下是否卸载,去设置-应用,看看有没有该应用,有可能隐藏为系统应用。

xiez.png

quxiao.pngshebei.png

最后,就是这个程序的传播者,他说他是这个程序的开发者,简直可笑。。。曝光他:

2b.jpg15775701007.jpg

曝光他的QQ,手机号就行了,至于名字,地址等等就不暴露了,毕竟还是个中学生。。。希望他能够走向正途吧!

我们下回见! Mrxn 04/1/2017




admin 发布于  2017-1-4 15:05