安卓逆向刷题笔记

本文会持续更新
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 | 根据代码逻辑,字符的转换是: |
输入后进入下一界面
根据代码逻辑此时来到了MainActivity2
,分析逻辑
可以看到发送了一个广播,那么在xml布局文件里能看到被定义的广播接收器
看到关键字符串:android.is.very.fun
,输入后即可得到flag
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支持动调
保存后需要自签名一下
之后安装新的app
jadx双击进程即可启动动调
此时在app里任意输入点击按钮即可得到flag
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 进行许可。