CTF Writeup: Weird Android Calculator

Weird Android Calculator 是来自 CTFLearn 的一道题。题目描述如下:

I've found this very weird android application.

Seems to be some kind of calculator, but there is something strange with it. Can you find out what it is?

https://mega.nz/#!qXIAgSKZ!u2QBlLV-3G8kmsr6yR0wqpQOFyv89e0WvBt45alBIRY

Flag is in Format: FLAG{...}

Note: You don't really need an android device to solve this. But it might be helpful :)

题中 link 给出的文件是 WeirdCalculator.apk。显然我们想看到它的 Java 源码。于是先用 d2j-dex2jar 将 apk 中的 dex 文件转为 jar 包:

d2j-dex2jar WeirdCalculator.apk
# dex2jar WeirdCalculator.apk -> ./WeirdCalculator-dex2jar.jar

然后使用 jd-gui 自动反编译 jar 包中的 class 文件,即可看到 Java 源码。

对源码稍作分析后,可发现 de.vidar.weirdcalculator.Parser.parseExpression() 中明显存在与 calculator 功能无关的代码:

Weird Code

将这段 weird code 单独拿出来,并对输出部分稍作如下修改:

// Test.java
int[] arrayOfInt = new int[41];
... ...
arrayOfInt[40] = 1348;
for (byte b = 0; b < i; b++) {
    // Log.d("OUTPUT", Integer.toString(arrayOfInt[b] ^ 0x539));
    System.out.print((char)(arrayOfInt[b] ^ 0x539));
}

最后运行上面的代码即可得到 flag:

javac Test.java
java Test
# FLAG{APK_4nalys1s_1s_r4th3r_3asy_1snt_1t}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容