Lawnchair 强制开启QSB

简介

主角,也就是Lawnchair,它是由delete scape开发的一款启动器,后经由魔趣修改,变身成魔趣定制版。源代码托管于 GitHub - Lawnchair虽然作为基于Aosp开发的桌面,但作为一个桌面,可谓做得出色。

img

获取信息

00x00

首先要获取信息。考虑qsb怎么样才会显示,安装过“Google应用”的同学会发现:安装了“Google应用”,就会显示qsb。那么,程序怎么检测是否安装了“Google应用”,这里需要用到Java的部分知识,需通过获取一个叫Package Manager类的实例,并传入包名com.google.android.googlequicksearch box,即可检测。

00x01

那么,思路有了,即通过搜索关于com.google.android.googlequicksearchbox的字符串,然后替换为已安装应用(假设命名为a)的包名。这样,程序检测的就是a程序是否安装。如果a是所有手机上都有安装的一个应用(例如“Android系统”),那么,即可实现强制开启qsb。

01x00

接下来使用mt管理器(管理器只要可以编辑dex就行)打开apk,选择class.dex,用dex编辑器或者dex编辑器+打开(dex编辑器+要更方便,但显示内容相对冗杂,入门请使用dex编辑器),右上角“更多”,搜索com.google.android.googlequicksearch box。这里再补充个知识:通常View对象一直存在,只是通过setVisibility()方法,控制了显示或隐藏。
img

img

01x01

在这个列表中找到包含setVisibility方法的class,点击打开,再点击“方法列表”,这次很幸运,关键方法没有被混淆,如同我们所见,”applyVisibility“是”应用可见性“,即我们需要寻找的方法。
img

img

01x02

接下来,将方法内com.google.android.googlequicksearch box字符串,改为a的包名(例:com.android.settings,“设置”应用),然后保存退出,等待编译。
img

02x00

最后一步,所生成的apk无法直接安装(除非破解过Android核心),需要经过签名才可安装。同样mt管理器,单击apk文件-“更多”-“apk签名”-选择一个key(可以跳过这步,使用默认key)-“确认”。这样,所生成的apk就可以安装(文件名带“sign”字样)。但是如果之前安装过原版apk,就需要先卸载,再安装(签名不同无法安装)

结语

这是逆向分析中简单的一类,但可以起到抛砖引玉的效果。往后,将会遇到不同的场景,例如最可恨的代码混淆,以及方法隐藏等。

接下来,我会发出修改其他软件的教程,像网易云音乐、动漫之家。

本文是“逆向分析”系列的第一篇文章,如果您喜欢,请继续关注我的博客 ;)

附件下载:

Lawnchair-07-31-0135版
或者07-31-2315版
网盘密码:5206