duyi324 发表于 2025-2-13 14:53

【春节】解题领红包之三 {Android 初级题} Writeup

本帖最后由 duyi324 于 2025-2-13 15:47 编辑

下载压缩包后解压,得到

手机连接电脑,执行 adb install 命令安装 apk

adb install .\【2025春节】解题领红包之三.apk

手机上打开软件,看到如下界面,任何手势都没反应。



手机用MT管理器提取apk,打开AndroidManifest.xml,找到入口



然后去打开这个类,转成加Java代码,发现是个ViewPager,而且禁用了输入操作。先把这个改了。






编译安装后,发现可以滑动了。左滑出现第二个pager,继续滑可以让折叠屏折起来,然后白屏了,不能操作了。

继续翻代码。这次换到电脑端操作吧,手机不方便。。。

jadx-gui打开apk,找到MainActivity,看到代码中ViewPager2的数据来源是FoldPagerAdapter,刚好代码中有个FoldFragment1和FoldFragment2,盲猜就是这个了



打开简单过了一下,发现里面的函数有各种密文,大概率就是它了


现在有GPT了,直接复制所有代码给GPT,让它给我分析一下。



里面提到了3000ms,那我就先去长按3000ms试试。



只有个提示“快去寻找flag吧”,说明长按操作会生成flag。
继续回到jadx中,找到密文附近跟长按有关的代码,


最下面的Toast.makeText是弹Toast提示用的,忽略掉。
剩下的就是 spu.s 函数了。跟进去。。。



发现存储到了xml文件里。
我手机没root,那就打开Android Studio找一下这个文件。
为了看到应用的私有文件,需要把Manifest.xml中添加 debuggable 属性:



编译安装,再去 Android Studio 中找到这个包名下的文件。我的三星S9手机文件路径是:

/data/data/com.zj.wuaipojie2025/shared_prefs/F.xml



有那么点意思了,但是发现只有一半。继续寻找 spu.s 函数,发现在

new GestureDetector.SimpleOnGestureListener() 的 onScroll 函数中有如下代码:


这是手势监听事件回调函数,这段代码有个条件是if (f4 >= f5),说明在手势操作满足某个条件的时候才能触发。

懒得分析怎么满足条件了。直接把条件干掉。

打开这个类,注意,匿名函数在MT管理器中是单独的类文件:




找到 SPU.INSTANCE 前面的条件,注释掉:



转成 Java 代码看一下,可以看到这里已经没有条件语句了。


编译安装,然后再打开三折叠那个Fragment随便划拉几下~~~
最后打开 Android Studio 同步一下文件,打开 F.xml 查看:



终于看到熟悉的 flag 了。

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="1">flag{</string>
<string name="2">xnkl2025!}</string>
</map>


两个字符串一拼接,得到最终结果为:flag{xnkl2025!}





正己 发表于 2025-2-13 16:24

继续左滑能解锁另一部分的flag

lwq1213 发表于 2025-2-13 17:07

感谢分享,学习了

爱飞的猫 发表于 2025-2-13 20:03

正己 发表于 2025-2-13 16:24
继续左滑能解锁另一部分的flag

正己老师什么时候录一下怎么划的视频 {:17_1068:}

正己 发表于 2025-2-13 20:33

爱飞的猫 发表于 2025-2-13 20:03
正己老师什么时候录一下怎么划的视频

下周,最近开学比较忙{:301_999:}

duyi324 发表于 2025-2-13 23:20

正己 发表于 2025-2-13 16:24
继续左滑能解锁另一部分的flag

我的手机左滑3次APP就白屏了,然后再怎么滑也没出现flag,所以我就直接把条件干掉了
页: [1]
查看完整版本: 【春节】解题领红包之三 {Android 初级题} Writeup