安卓小白 发表于 2017-11-26 14:23

简单锁屏app分析

本帖最后由 安卓小白 于 2018-1-31 20:58 编辑

样本区的一个锁屏app
https://www.52pojie.cn/thread-661872-1-1.html
1.初步观察
apk安装后界面如下,点击解锁后会出现“加油你还差xx次就可以解锁了”字样

2.定位关键代码
猜想关键代码应该是OnClick之类的,使用jeb打开apk,搜索setOnClickListenter,得到下面

查看类100000000和100000001中的OnClick()

第一个onClick作用是在你点击按钮的时候显示“加油xxxx”,用来调戏人的,没实际用途;第二个才是解锁的关键,其中主要操作有a.set,b.decrypt,v0.this$0.a.decrypt,v0.this$0.m
3.算法分析1
(1)a.set

进行字符串替换后返回

(2)b.decrypt

主要过程为hex2byte和decrypt

hex2byte将16进制字符串转化为byte,例如"7f"转化为byte(128)。decrypt为 AES/ECB/PKCS5Padding 解密操作,秘钥由createKey产生。

(3)v0.this$0.a.decrypt


v0.this$0.a.decrypt调用的是myapp中的a成员的decrypt方法,最终使用a.decryptCipher.doFinal,加密算法为des,秘钥为包名转化为byte数组后取前8位(a的构造函数和v5.getKey)
(4)v0.this$0.m

对字符串decode后再用zlib解压缩,decode使用了base64编码(4, 3, 61等数字和codes数组已经暗示了是base64)

到这里算法就分析的差不多了,再次搬出验证的代码,其中v2就是你的输入,v0.this$0.lock1xlh是序列号。


这里修改下源程序打印Log得到密码。
这里输入密码后点击“我要解锁”发现没反应,重新看了前面注册事件的控件id,2131165186,将apktool反编译apk后查看public.xml(所有资源编号都在这里),得到资源名,再根据资源名去查看layout目录,可以发现注册事件的控件为“解除锁定”,点击后顺利得到密码。



4.算法分析2

输入密码后进入第二关,代码跳转到了

关键代码在100000002的onClick这里。onClick中比较了两个字符串。字符串一为将输入字符串的前3位进行sha1,md5后拼接上剩余的字符串;字符串二由"9fd09fe7fd77ab118ef78795668bc8a1"与v3的前9个字符拼接,v3为序列号进行md5,sha1后再replace()。

观察可知字符串二前缀为字符串一前3位的哈希(SHA1+MD5),所以字符串一前3位是固定的,对应字符串2的前缀。按理说由哈希是不可逆的,抱着试试的想法,找了个在线哈希解密网站把字符串2前缀扔进去,发现解开了,”187“,有点惊讶,md5和sha1组合居然可以解开。
在关键代码处插入Log可以得到后面9个字符,前面再拼接187得到密码。


到这里算法分析就真正结束了,现在可以根据加密算法写出密码计算程序了。emmm......
虽然算法分析出来,但是编写程序还是有点麻烦,这里我选择对app进行修(调)改(教),使它自己吐出密码。修改后的app在密码框输入序列号可以得到密码,具体看附件。
5.锁屏原理

通过android的WindowManagerService创建一个全屏置顶的view,不受事件影响,程序监听了开机广播,开机自启动,简单粗暴?什么root,设备管理服务权限都不需要。

6.清理方案
1.可以通过计算密码进行解锁,因为没有赋予该app特殊权限(root,设备管理),所以不用担心后门,解锁后卸载即可。
2.adb卸载

3.recovery模式下进入shell删除安装包。

链接: https://pan.baidu.com/s/1i6YifXz 密码: 4c6x

安卓小白 发表于 2017-11-28 21:52

webspider88 发表于 2017-11-28 21:10
如果不知道安装后的名字怎么用adb卸载?请赐教

jeb查看AndroidManifext.xml文件
也可以使用adb查看当前活动栈顶信息:
Linux:adb shell dumpsys activity | grep "mFocusedActivity"
window:adb shell dumpsys activity | findstr "mFocusedActivity"

小烦凡 发表于 2017-12-28 18:38

安卓小白 发表于 2017-11-28 12:26
在模拟器分析的,分析这种东西一般不都是在模拟器吗,如果用手机分析,万一解不出来就尴尬了

楼主给个模拟器呗谢谢啦

Hmily 发表于 2017-11-27 16:01

@安卓小白 图片需要上传再贴到正文中,直接粘贴是不行的,方法见帮助:https://www.52pojie.cn/misc.php?mod=faq&action=faq&id=29&messageid=36

安卓小白 发表于 2017-11-27 20:46

Hmily 发表于 2017-11-27 16:01
@安卓小白 图片需要上传再贴到正文中,直接粘贴是不行的,方法见帮助:https://www.52pojie.cn/misc.php?mo ...

谢谢,图片已经补上

hxrjian 发表于 2017-11-28 11:17

安卓小白 发表于 2017-11-28 12:26

hxrjian 发表于 2017-11-28 11:17
是在手机上使用的吗?

在模拟器分析的,分析这种东西一般不都是在模拟器吗,如果用手机分析,万一解不出来就尴尬了{:1_890:}

我是淡淡 发表于 2017-11-28 16:51

讲的不错,给你加分

xuanshao6 发表于 2017-11-28 17:06

感谢分享

wang4585 发表于 2017-11-28 17:16

大神级别的

ljw5201314 发表于 2017-11-28 17:17

高科技的东西~~~~~

小贺贺 发表于 2017-11-28 17:25

学习了 不错 很不错的分享
页: [1] 2 3 4 5
查看完整版本: 简单锁屏app分析