分析一个安卓锁机APP
时间:2017-1-4 15:05 作者:admin 分类: 技术文章
其实这个样本是我在论坛上别人的求助帖子里看到的,就下载下来看一下:
- 首先这个软件大小就不对,45KB!其次是看在安装界面,注意右下角的不是【安装】而是【激活】,正常的软件安装都是显示安装。再看安装时系统的提醒,此软件需要的权限:
- 清除所有数据,恢复出厂设置;
- 更改屏幕解锁密码;
- 设置密码规则;
- 监视屏幕解锁次数;
- 锁定屏幕;这几条看着怎么都不想常见的APP安装时获取的权限吧
我们是测试嘛!真正在安装遇见这种APP时,请一定慎重!点击激活后,就是锁屏画面咯:
当然,图中的密码,计算方式是逆向此APP后得出的算法而已,接下来我就分析一下;
首先是打开我们的Android逆向工具:Android killer,载入程序:
然后我们是 java的开发工具查看java源码,图中的小红圈图标就是,打开后可以看到程序的结构和其中的密码设置算法(非常简单,就是取随机数加上设定的值):
其中关键的密码算法就是这段:
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码,在程序里面可以很清除的看到:
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,输入后就解锁进入桌面了:
注意:卸载的时候需要取消激活设备管理器,这时候还要在输入一次pin值,完了以后再确认一下是否卸载,去设置-应用,看看有没有该应用,有可能隐藏为系统应用。
最后,就是这个程序的传播者,他说他是这个程序的开发者,简直可笑。。。曝光他:
曝光他的QQ,手机号就行了,至于名字,地址等等就不暴露了,毕竟还是个中学生。。。希望他能够走向正途吧!
我们下回见! Mrxn 04/1/2017
扫描二维码,在手机上阅读
推荐阅读:
评论:
将 2017-01-11 09:30
在博主这里学到了不少东西嘎嘎
by忠实的小粉丝
by忠实的小粉丝
将 2017-01-11 09:26
这样的人太可恶,只知道欺负菜鸟。遇到大神就嗝屁了,真解恨。还知道了一个东西,就是安装软件一定要看权限啊~天知道我从来不来看……
null 2017-01-07 14:28
手机版页面很卡
无聊赚 2017-01-04 17:18
他遇上你这个高手了。我就说刚开始就看着像个而已软件的