看到最近有使用Android的伙伴中了安徒生的锁机,原贴是https://www.52pojie.cn/thread-841127-1-1.html,一时好奇于是简单的看了下该软件。
一、找到目标应用
这类软件通常会在系统目录中植入一个apk来执行锁机代码。我们通过对比很容易就发现,安装之后多了一个包名为com.ats.yr的软件。
利用adb命令找到该软件目录,并把它pull到本地进行分析。
如果想要清除该锁机软件,直接删除掉该文件即可,然后卸掉原来的非官方的软件后,重启设备。不过这里为了分析它一下,就先锁着吧。。。
二、开始分析
1、反编译
首先我们看到了一堆难以理解的方法名称。
2、为了便于识别,把一些关键方法重命名
虽然这些文字看不懂,但是通过观察发现基本所有的string都是用下面方法解析的,这样我们用这里作为突破口来进行静态分析。
经过一系列的整理,把难以识别的关键方法和类重新名了下,发现该锁机样本一共有4层。这里我分别重命名为了MyListener1-4
3、首先看第一层
逻辑不难,先计算了v1 = sha1(md5("中奖号码")).去掉字母。后面第二个判断有点长,可以拆分一下:
1、md5(sha1(md5(密码前3位))) + 密码后面所有的位
2、3088aab53a8c14c2a7831cab4c9fe616 + v1前9位
判断1和2是否相等,如果相等就跳转到第二层
4、第二层
v0为md5(中奖号码)去字母,
取密码的头3位做3次md5,然后判断密码后半部分是否和v0相等。
5、第三层
解密方法与第二层相同
6、第四层
第四层逻辑比较简单,不用分析,直接调用他的代码计算一下中奖号码就可以了。
简单示范一下,例如中奖号码是380,则第四层解密为GGGJJ
三、总结
第一层解密:
关键md5值:3088aab53a8c14c2a7831cab4c9fe616
根据md5值“3088aab53a8c14c2a7831cab4c9fe616”,知道密码开头3位为固定的774。(这里这个774可以撞出来,也可以自己跑一下,因为只有3位,很快就能跑出来)
密码的后半部分为sha(md5(中奖号码)),然后取其中的数字的前9位(字母不要)。
第二层和第三层解密是一样的:
关键md5值:7063eeced8dada899a5231e272d0ba07
根据md5值“7063eeced8dada899a5231e272d0ba07”,知道密码开头3位为固定的944
密码后半部分为md5(中奖号码),然后再去掉字符串中的字母
第四层比较简单:
逻辑就是利用中奖号码计算出一个字符串,直接调用他的方法就能完成解密,过程就不分析了。
软件强烈建议在官方和正规渠道下载
到这里,已经成功的进入到了正常的页面。后面先删掉/system/priv-app/antusheng.apk,然后在卸载原异常应用,至此简单的分析就完成了。 |