[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 代码。