今天在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三个变量之间的关系验证,而且验证是逐字符的
直接给出逆推代码如下,有问题请留言反馈
▼点击下载题目
领取专属 10元无门槛券
私享最新 技术干货