安卓逆向刷题笔记
本文会持续更新
BUU-findit
xml里找到函数入口

可看到Java层逻辑

直接看到有两行关键代码
1 | new char[]{'T', 'h', 'i', 's', 'I', 's', 'T', 'h', 'e', 'F', 'l', 'a', 'g', 'H', 'o', 'm', 'e'}[i] |
pvkq{m164675262033l4m49lnp7p9mnk28k75}这玩意一眼凯撒位移吧,十位解密之后得到flag
flag{c164675262033b4c49bdf7f9cda28a75}
BUU-简单注册器
题目链接:https://buuoj.cn/challenges#%E7%AE%80%E5%8D%95%E6%B3%A8%E5%86%8C%E5%99%A8
xml里找到函数入口

点进去看主要逻辑

发现输入的判断条件
1 | if (xx.length() != 32 || xx.charAt(31) != 'a' || xx.charAt(1) != 'b' || (xx.charAt(0) + xx.charAt(2)) - 48 != 56) { |
可以直接按照以上判断条件输入符合的32位字符,点击按钮出flag,或者运行以下代码
1 | char[] x = "dd2940c04462b4dd7c450528835cca15".toCharArray(); |
总的来说,该代码生成的flag与用户输入无关,只要输入满足条件,程序就会对固定的字符串(x = "dd2940c04462b4dd7c450528835cca15")进行处理,因此直接运行代码或构造符合条件的输入均可得到正确flag
攻防世界-mobile easy-so
题目链接:https://adworld.xctf.org.cn/media/file/task/456c1dab04b24036ba1d6e32a08dc882.apk
xml里找到函数入口

点进去查看主要逻辑

发现逻辑校验关键函数CheckString,进去之后发现是调了so层的cyberpeace函数

在IDA里反编译so文件,分析关键函数逻辑

主要逻辑就是将获取到的字符串进行一系列变换和f72c5a36569418a20907b55be5bf95ad作比较,所以要写一段逆运算的代码
1 |
|
包上flag{}包裹,flag{90705bb55efb59da7fc2a5636549812a}
攻防世界-mobile 基础Android
题目链接:https://adworld.xctf.org.cn/media/file/task/6a0484a135bb44ba8fdcf829b5d9865b.apk
xml里找到函数入口

点进去分析主要逻辑:通过checkPassword函数对比字符串,成功后显示*Good,Please go on!*并进入MainActivity2

分析checkPassword函数逻辑

1 | 根据代码逻辑,字符的转换是: |
输入后进入下一界面
![Screenshot_2025-02-23-21-51-43-34_8e9213dd12c701caf40fa4cb254e198a[1].jpg](/../assets/post/%E5%AE%89%E5%8D%93%E9%80%86%E5%90%91/2.23/Screenshot_2025-02-23-21-51-43-34_8e9213dd12c701caf40fa4cb254e198a1.jpg)
根据代码逻辑此时来到了MainActivity2,分析逻辑

可以看到发送了一个广播,那么在xml布局文件里能看到被定义的广播接收器

看到关键字符串:android.is.very.fun,输入后即可得到flag
![Screenshot_2025-02-23-21-55-58-11_8e9213dd12c701caf40fa4cb254e198a[1].jpg](/../assets/post/%E5%AE%89%E5%8D%93%E9%80%86%E5%90%91/2.23/Screenshot_2025-02-23-21-55-58-11_8e9213dd12c701caf40fa4cb254e198a1.jpg)
flag{08067-wlecome}
PS:android:name="android.is.very.fun" 是自定义的广播动作,当其他组件发送一个包含 android.is.very.fun 动作的意图时,这个接收器就会被触发,所以与实际发送内容是无关的
NewStarCTF 2023 Week2-AndroDbgme
题目链接:
这道题jadx打开会炸,高版本jeb反编译是正常的,分析MainActivity主要逻辑

发现只要动调就会出flag

那么在xml里的application加上一条件android:debuggable=”true”使app支持动调
![Screenshot_2025-02-26-23-25-26-25_9e8df3d0c7c1f50248b6ee043a653d26[1].jpg](/../assets/post/%E5%AE%89%E5%8D%93%E9%80%86%E5%90%91/2.27/Screenshot_2025-02-26-23-25-26-25_9e8df3d0c7c1f50248b6ee043a653d261.jpg)
保存后需要自签名一下
![Screenshot_2025-02-26-23-24-53-33_9e8df3d0c7c1f50248b6ee043a653d26[1].jpg](/../assets/post/%E5%AE%89%E5%8D%93%E9%80%86%E5%90%91/2.27/Screenshot_2025-02-26-23-24-53-33_9e8df3d0c7c1f50248b6ee043a653d261.jpg)
之后安装新的app
![Screenshot_2025-02-26-23-25-00-82_9e8df3d0c7c1f50248b6ee043a653d26[1].jpg](/../assets/post/%E5%AE%89%E5%8D%93%E9%80%86%E5%90%91/2.27/Screenshot_2025-02-26-23-25-00-82_9e8df3d0c7c1f50248b6ee043a653d261.jpg)
jadx双击进程即可启动动调


此时在app里任意输入点击按钮即可得到flag
![Screenshot_2025-02-26-22-50-02-73_7ca81305321c94afdc4b991336a8af21[1].jpg](/../assets/post/%E5%AE%89%E5%8D%93%E9%80%86%E5%90%91/2.27/Screenshot_2025-02-26-22-50-02-73_7ca81305321c94afdc4b991336a8af211.jpg)
flag{Let_1t_run_@t_f1rs7_m@ybe_th3_b3st}
- 标题: 安卓逆向刷题笔记
- 作者: mmj
- 创建于 : 2025-02-22 23:38:01
- 更新于 : 2025-02-27 21:15:43
- 链接: https://samzhaohx.github.io/2025/02/22/安卓逆向刷题笔记 1a2fdee511a980d485f9c3b3868b8a1e/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。