描述

What if JD-GUI doesn’t show you the password?

目标

找到Flag

APK下载

https://yhxx.lanzoub.com/ikyBX0mj4kab

题解

首先打开APP看一下,可以看到是输入密码点击SUBMIT来获取Flag

CrackMe

用Jadx-GUI打开APK看一下源码,在MainActivity中找到了SUBMIT按钮绑定的onClick函数。 在①中通过FlagGuard().getFlag()函数来根据获取文本框中输入的passwordApplicationContext得到flag。 ②中Flag不为空则展示Congratulations!Flag

CrackMe

进入FlagGuard().getFlag(),发现只要传入的str(即输入的password)与Data().getData(context)相等就会返回②所计算出的flag,现在只需要看Data().getData()就可以拿到密码。

CrackMe

进入Data().getData(),发现函数需要获取到ApplicationContext中的字符串来当做password

CrackMe

追踪进去后我们发现R.string.secret的值是一个地址,这显然不是明文密码,那么我该何看到密码呢?

CrackMe

Android的字符串资源都存储在/res/values/strings.xml中 可以使用apktool工具解压apk文件查看:

1
2
3
apktool d base.apk
cd base
cat res/values/strings.xml

或者直接在Jadx-GUI的路径/资源文件/resources.arsc/res/values/strings.xml中查看。 打开xml文件后可以看到名为secret的字符串值:s0m3_0th3r_s3cr3t_passw0rd即为密码。

CrackMe

在文本框输入s0m3_0th3r_s3cr3t_passw0rd即可拿到flag

CrackMe