首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2016大学生信息安全竞赛——珍贵资料

简单的安卓逆向题目,记录下安卓逆向思路与adb的备份恢复命令

01

确认文件类型

下载题目得到两个文件,分别为unknown和unknown2,使用010编辑器打开

unknown

打开之后首行惊现ANDROID BACKUP,没错这正是使用adb backup命令的备份文件,我们将其重命名为unknown.ab以备后用。

unknown2

似曾相识PK头,还看到安卓布局文件目录res/layout/xxx字符串,结合上一个安卓备份文件100%肯定unknown2是apk安装包,重命名为unknown2.apk 拖入JEB

02

静态分析

JEB打开后,发现有三个类,那么哪个类是我们需要的呢?

可以选择逐个打开分析,也可以查看AndroidManifest.xml来从入口类可以分析

LoginActivity是入口类,那就从这开始切入吧

来到LoginActivity的onCreate方法,发现程序使用了SharedPreferences存储类,来读取私有目录下shared_prefs/userInfo.xml文件的USER_NAME键和PASSWORD(在截图外)键的值。其中USER_NAME的值需要与用户名输入框内容相同,PASSWORD的值需要与密码输入框内容进行encode处理后的值相等。

如果登录成功才会用到LogoActivity和WelcomeAvtivity类,那么直接不需要考虑他们了(实际上这两个类是为了显示“flag is password”来提示我们密码框内容就是flag)

接下来先研究下encode都干了什么

encode最终调用Encryption方法,乍一看Encryption还挺唬人。。。

其实就是利用字符串key=“ijklmstuvwxyz0123abcdenopqrfgh456789”做了简单的移序映射加密(自己胡乱起的)。会按照key的排列规则对待加密字符串逐字符进行后移三位的处理,比如字符b加密后就是在key中b后面的第三个字符e

解题思路:

找到userInfo.xml的内容得到相关数据

逆向Encryption方法,进行解密运算

03

恢复数据

首先想要完成第一步,必须要有userInfo.xml这个文件(其实该软件并没有对userInfo.xml赋值的代码),我们先安装软件运行一下看看能不能直接得到这个文件

果不其然连shared目录都没有,这时候unknown.ab就派上用场了

使用adb restore命令恢复数据,手机会提示点击“恢复我的数据”即可

userInfo.xml就回来了,成功获得第一步所需数据

04

解密代码

接下来的工作就是将PASSWORD值字符串"dudqlvqrero1"进行解密

由第二部分的分析可以得知加密就是字符映射关系的问题,解密只需要逆映射关系即可

运行以下Python脚本得到的结果就是最终flag了

▼点击下载题目

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180330G1ID4P00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券