2025春节红包之Android初级题Writeup
安装【2025春节】解题领红包之三.apk,打开后显示华为logo,无法点击、滑动。丢到Jadx分析,看起来`viewPager2.setUserInputEnabled(false)`限制了app的滑动。
使用MT管理器,将false改为true后重打包安装此app。
此时打开可以向右滑动,出现“遥遥领先”图片,图片也可以转动,但是没有发现flag。
有点奇怪🤔,继续审计一下代码。FoldFragment1和FoldFragment2看着有点意思,审计完FoldFragment1主要是mediaPlayer的启动停止相关的功能,没什么用。FoldFragment2的startLongPressTimer()方法有两个加密字符串,有点可疑。
deepseek说是startLongPressTimer()方法处理长按事件的。所以回到遥遥领先页面,长按后发现弹出了“快去寻找flag吧!”。
结合之前出现的两个字符串,可以分析出` TO.INSTANCE.db()`是一个解密函数,密文`cYoiUd2BfEDc/V9e4LdciBz9Mzwzs3yr0kgrLA==` 解密后的明文为“快去寻找flag吧!”,Toast.makeText().show()会弹出解密结果。
基于目前的分析,将密文传入`TO.INSTANCE.db()`解密,然后调用Toast.makeText().show()弹出解密结果应该就可以得到flag了。
完整审计FoldFragment2,发现`onViewCreated()`还有一个加密字符串。
目前的路径变成了解密`hjyaQ8jNSdp+mZic7Kdtyw==`与`2hyWtSLN69+QWLHQ`两个加密字符串,因此会涉及到smali代码的重写。
头大,不会修改smali代码怎么办?用deepseek啊,把需求告诉deepseek,自动生成smali代码,爽歪歪,提示词如下:
```smali
我想在下面的smali代码中添加一个Toast.make().show()方法,传入参数为2hyWtSLN69+QWLHQ,我担心重打包后app不能运行,请你帮我添加一下并告诉我你修改的地方。
.method private static final startLongPressTimer$lambda$1(Lcom/zj/wuaipojie2025/FoldFragment2;)V
.registers 5
const-string v0, "this$0"
invoke-static {p0, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
const/4 v0, 0x1
.line 92
iput-boolean v0, p0, Lcom/zj/wuaipojie2025/FoldFragment2;->un:Z
.line 93
sget-object v0, Lcom/zj/wuaipojie2025/SPU;->INSTANCE:Lcom/zj/wuaipojie2025/SPU;
invoke-virtual {p0}, Lcom/zj/wuaipojie2025/FoldFragment2;->requireContext()Landroid/content/Context;
move-result-object v1
const-string v2, "requireContext(...)"
invoke-static {v1, v2}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V
const/4 v2, 0x2
const-string v3, "hjyaQ8jNSdp+mZic7Kdtyw=="
invoke-virtual {v0, v1, v2, v3}, Lcom/zj/wuaipojie2025/SPU;->s(Landroid/content/Context;ILjava/lang/String;)V
.line 94
invoke-virtual {p0}, Lcom/zj/wuaipojie2025/FoldFragment2;->getParentFragmentManager()Landroidx/fragment/app/FragmentManager;
move-result-object v0
invoke-virtual {v0}, Landroidx/fragment/app/FragmentManager;->beginTransaction()Landroidx/fragment/app/FragmentTransaction;
move-result-object v0
.line 95
sget v1, Lcom/zj/wuaipojie2025/R$id;->fold2:I
new-instance v2, Lcom/zj/wuaipojie2025/FoldFragment1;
invoke-direct {v2}, Lcom/zj/wuaipojie2025/FoldFragment1;-><init>()V
check-cast v2, Landroidx/fragment/app/Fragment;
invoke-virtual {v0, v1, v2}, Landroidx/fragment/app/FragmentTransaction;->replace(ILandroidx/fragment/app/Fragment;)Landroidx/fragment/app/FragmentTransaction;
move-result-object v0
const/4 v1, 0x0
.line 96
invoke-virtual {v0, v1}, Landroidx/fragment/app/FragmentTransaction;->addToBackStack(Ljava/lang/String;)Landroidx/fragment/app/FragmentTransaction;
move-result-object v0
.line 97
invoke-virtual {v0}, Landroidx/fragment/app/FragmentTransaction;->commit()I
.line 98
invoke-virtual {p0}, Lcom/zj/wuaipojie2025/FoldFragment2;->requireContext()Landroid/content/Context;
move-result-object p0
sget-object v0, Lcom/zj/wuaipojie2025/TO;->Companion:Lcom/zj/wuaipojie2025/TO$Companion;
const-string v1, "cYoiUd2BfEDc/V9e4LdciBz9Mzwzs3yr0kgrLA=="
invoke-virtual {v0, v1}, Lcom/zj/wuaipojie2025/TO$Companion;->db(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
check-cast v0, Ljava/lang/CharSequence;
const/4 v1, 0x0
invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
move-result-object p0
invoke-virtual {p0}, Landroid/widget/Toast;->show()V
return-void
.end method
```
需要注意的是,DeepSeek生成的smali代码中,需要将`cYoiUd2BfEDc/V9e4LdciBz9Mzwzs3yr0kgrLA==`修改为`hjyaQ8jNSdp+mZic7Kdtyw==`,不然还是弹出“快去寻找flag吧!”。
最后重打包安装apk,长按后弹出flag:`flag{xnkl2025!}` 厉害呀, 学习到了 学到了学到了 厉害
页:
[1]