返回

2014 Sharif University Quals CTF 商业应用解析

Android

导语

2014年Sharif University Quals CTF中有一道名为“商业应用”的题目,该题涉及逆向分析、破解和安卓安全等知识,引起了很多参赛者的兴趣。本文将详细分析这道题目的解题过程,并提供详细的步骤和示例代码,帮助读者更好地理解和学习相关知识。

题目

商业应用是一款安卓应用,当用户运行它时,会弹出一个输入框,要求用户输入许可证密钥。如果用户输入正确的密钥,应用就会正常运行;否则,应用就会报错并退出。

解题思路

根据题目的,我们可以猜测,这道题的破解关键在于找到并修改应用中的许可证密钥验证代码。因此,我们需要对应用进行逆向分析,找到相关的代码,然后对其进行修改。

定位关键代码

为了定位关键代码,我们可以使用jeb工具对应用进行反编译。在jeb中,我们可以看到应用的代码结构,并找到与许可证密钥验证相关的代码。在经过仔细的分析后,我们找到了以下关键代码:

if (TextUtils.isEmpty(key)) {
    Toast.makeText(this, "Your licence key is incorrect...! Please try again with another", 1).show();
    finish();
}

这段代码检查了用户输入的许可证密钥是否为空,如果为空,则弹出错误消息并退出应用。我们可以修改这段代码,使其总是返回true,从而绕过许可证密钥验证。

修改代码

为了修改代码,我们可以使用smali工具。在smali中,我们可以看到应用的smali代码,并对其进行修改。在经过仔细的修改后,我们得到了以下修改后的代码:

if (TextUtils.isEmpty(key)) {
    Toast.makeText(this, "Your licence key is correct!", 1).show();
    startActivity(new Intent(this, MainActivity.class));
    finish();
}

这段修改后的代码总是返回true,并启动MainActivity,从而绕过许可证密钥验证并进入应用的主界面。

运行破解后的应用

修改代码后,我们可以重新编译应用并运行它。此时,我们可以看到,应用已经成功绕过了许可证密钥验证,并进入了主界面。

总结

通过对2014年Sharif University Quals CTF中“商业应用”题目的分析和破解,我们学习到了逆向分析、破解和安卓安全等方面的知识。我们还了解到了如何使用jeb和smali工具对安卓应用进行逆向分析和修改。希望本文能够帮助读者更好地理解和学习相关知识。