一、前言
现如今Android用户的安全意识不是很强,又有一些恶意开发者利用应用的名字吸引眼球,包装一个恶意锁机收费的应用,在用户被骗的安装应用之后,立马手机锁机,需要付费方可解锁。这样的恶意软件是非常让人痛恨的。所以本文就用一个案例来分析如何破解这类应用,获取解锁密码,让被骗的用户可以找回爽快!
二、分析软件锁机原理
本文用的是一款叫做:安卓性能激活.apk,关于样本apk文件后面会给出下载地址,从名字可以看到它肯定不会是一个恶意软件,但是当我们安装的时候,并且激活它的权限之后就完了。下面不多说了,直接用Jadx工具打开它:
从包名可以看到是梆梆加固的,咋们也看不到他的代码了,所以第一步咋们得先脱壳了,在这之前我们再看看他的清单文件:
这里可以看到,他利用了设备管理器权限,来强制修改了系统密码来做的,我们通过打开软件也可以确定这点:
看到了,他申请了设备管理器权限,而这个权限用过的同学都知道,当获取到这个权限之后可以控制这个设备了,包括修改系统密码。而这个软件也是利用这个权限来做到锁机的。
注意:对于这个权限还有一个重要作用,就是可以防止应用被卸载,现在很多应用为了防止自己被用户无情的卸载了,就用这个权限,可以看到这个应用申请了这个权限之后,卸载页面:
是不可以卸载的。从Android系统来说这个也是合乎情理的,因为这个应用具备了设备管理器权限如果能被卸载那是不可能的。所以有一些应用就利用这个功能来防止被卸载。
三、脱壳工具DexExtractor原理分析
上面分析完了这个应用的锁机原理,下面就需要破解它获取到锁机密码即可,但是从上面代码可以看到他用到了梆梆加固,所以如果想破解它得先把壳给脱了,关于脱壳文章在前面两篇文章中介绍了两篇关于脱壳文章:Apk脱壳圣战之---脱掉“爱加密”的壳和 Apk脱壳圣战之---脱掉“360加固”的壳,本文就要先来介绍如何脱掉梆梆的壳,因为如果这个壳不脱掉,没法分析他的恶意锁机的解锁密码。
前面的这两篇文章介绍脱壳主要是通过IDA动态调试下断点dump出内存的dex数据,但是本文不这么玩了,而是借助一个脱壳工具DexExtractor,这个工具是开源的:https://github.com/bunnyblue/DexExtractor,这里给出了修改源代码。其实他的原理也很简单,就是修改系统的DexFile.cpp源码,在解析dex的函数开头处加上自己的dumpdex逻辑:
这里的DexHacker就是他自己定义的,这里的dexFileParse就是系统解析dex函数,