首页
学习
活动
专区
工具
TVP
发布

2016大学生信息安全竞赛——拯救地球

今天在QQ群推广了一波公众号,首先在这里感谢大家的关注,有问题或者建议欢迎留言,看到后会及时回复大家。

从分值来看这道题算是比较难的题,但和上一篇安卓脱壳题(【CTF训练】JCTF 2014 —— 不服再战)类似,不过是难在壳上,一起分析一下吧

01

查壳&脱壳

下载题目文件是apk安装包,拖入JEB发现JAVA层关键代码已被抽取,只留下一个壳。使用DexHunter脱壳(详细的使用步骤以后有专题讲解)

配置壳特征字符串

获得odex

odex转dex

再次用JEB打开脱壳后的dex文件如下图

02

静态分析

首先分析入口类onCreate方法,很容易发现在单击事件中验证函数是Answer类的equal方法

下面请看Answer类的相关代码,注意看注释提示

看完以上代码,我们得到以下信息:

成员变量aa,answers与形参arg7三者进行验证运算

aa字符串可能是base64编码

参数arg7和aa都需要进行一次Encode类decode方法的解码

首先第一步要验证的就是aa到底是不是base64编码,使用在线base64工具解码测试

可以正常解码,基本上可以确定Encode类就是个base64编码解码工具类,那么不用浪费时间去分析它了

03

解题

回过头再看看equal方法不难发现是arg7、aa、answers三个变量之间的关系验证,而且验证是逐字符的

直接给出逆推代码如下,有问题请留言反馈

▼点击下载题目

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券