[GDOUCTF 2023]Check_Your_Luck

z3求解,第一次见查一查,挺简单的,写个脚本吧

相册
APK文件,使用jadx-gui打开
查找关键词邮箱(mail)
发现一个静态方法sendMailByJavaMail(用于通过 JavaMail API 发送电子邮件)

右击查找用例


表示调用 A2 类中的静态方法 (判断:方法名前面有类名)sendMailByJavaMail

他接受了三个参数
该方法接受三个参数:
C2.MAILSERVER: 邮件服务器地址或配置。"通讯录(" + tel + "IMEI" + imei + ")": 邮件的主题。notebooks: 邮件的内容。
跟进MAILSERVER

用loadlibrary函数,加载了core.so文件中的内容
base64关键字
跟进NativeMethod

三个方法均返回字符串
解压apk文件,访问libcore.so
查壳,用IDA打开libcore.so
shift+F12查找关键信息
base64编码

解码得到flag

[BJDCTF 2020]JustRE
查壳

shift+F12查找关键词

好像,追踪

点击19999下给你flag,666这是要累死你,动态调试一下看看
嗯,他就是这个意思end
Z3小知识

1 | from z3 import * |
APK文件
APK(Android Package)是 Android 应用程序的安装包文件格式。它包含了应用程序的所有代码、资源、配置文件等。
APK 文件结构
APK 文件本质上是一个 ZIP 压缩包,包含以下主要文件和目录:
AndroidManifest.xml:- 应用程序的配置文件,定义了应用的基本信息(如包名、版本号、权限、组件等)。
- 使用二进制 XML 格式存储,需要通过工具(如
apktool)反编译后才能查看。
classes.dex:- 包含应用程序的 Java/Kotlin 代码编译后的 Dalvik 字节码。
- 可能包含多个
.dex文件(如classes2.dex),用于支持多 Dex 文件的应用。
resources.arsc:- 编译后的资源索引表,存储了字符串、布局、样式等资源的映射关系。
- 通过资源 ID 快速定位资源。
res/:- 包含应用程序的资源文件(如图片、布局文件、字符串等)。
- 子目录包括
drawable/、layout/、values/等。 assets/:- 存放原始资源文件(如字体、配置文件等),不会被编译到
resources.arsc中。 - 通过
AssetManager访问。
- 存放原始资源文件(如字体、配置文件等),不会被编译到
lib/:- 包含应用程序的本地库(如
.so文件),通常按 CPU 架构分类(如armeabi-v7a、arm64-v8a)。
- 包含应用程序的本地库(如
META-INF/:- 包含应用的签名信息,用于验证 APK 的完整性和来源。
- 主要文件:
MANIFEST.MF:列出所有文件的哈希值。CERT.SF:签名文件的哈希值。CERT.RSA:包含公钥和签名信息。
APK 的反编译与修改
- 反编译工具:
apktool:反编译 APK,提取资源和AndroidManifest.xml。dex2jar:将.dex文件转换为.jar文件,便于查看 Java 代码。JD-GUI:查看.jar文件中的 Java 代码。