? 2026第四届黄河流域公安院校电子物证个人赛 — 程序逆向分析 Writeup ? 报告元数据 首席取证官:yagami 任务目录:/mnt/d/文档/hermes-work/2026黄河流域-程序逆向分析/ 生成时间:2026-08-04 生成模式:完整型取证交付 Writeup ?️ 工具链与环境底座 1. 算力与架构 组件分类 部署详情 自动化编排 Hermes Agent 基座大模型 Qwen3.6-27B-Uncensored-HauhauCS-Aggressive-Q6_K_P 运行架构 本地 (WSL / Windows Subsystem for Linux) 2. 任务信息 考核范围:程序逆向分析(APK静态分析 + PE二进制分析),共10题 检材来源:/mnt/z/2026第四届黄河流域公安院校电子物证个人赛检材/3.第三部分:程序逆向分析/ 检材内容:TuoxinTask-v3.2.1.zip(内含APK)、HuangHe2026.zip(内含PE) 动态状态:Q1-Q10 全部已验证,全量收敛 质控策略:L1-L3多级验证,Java↔native交叉验证,本地Python解密双向验证 ? 考题最终答案汇总看板 题号 核心考点 权威标准答案 状态 等级 核心证据链检索摘要 Q1 APK包名提取 com.tuoxin.task ? 已验证 L1 AndroidManifest.xml package字段直接确认 Q2 通讯录窃取写入文件 contacts_bak.json ? 已验证 L1 DataUploadService.a()方法openFileOutput参数硬编码 Q3 cfg.bin加密方式(多选) BCF ? 已验证 L2 Base64编码+AES-256-CBC+IV来自独立iv.bin,三源交叉 Q4 cfg.bin解密key 47f32b6c3c50f7474f3a14787ef790f46d326e7a33a758d0c7e452cb120e0700 ? 已验证 L3 HARD_KEY hex = SHA-256(key source),Java↔native交叉+本地解密双向验证 Q5 cfg.bin备份IP及端口 121.43.187.92:8080 ? 已验证 L2 cfg.bin解密后JSON中sdk_backup_server字段 Q6 PE编译器识别 B (Borland Delphi 6) ? 已验证 L2 Borland\Delphi\RTL字符串+Delphi单元引用+名称修饰+oleaut32 BSTR函数,多特征交叉 Q7 PE节区数量 8 ? 已验证 L1 PE头NumberOfSections=8,IDA确认8个节区 Q8 PE入口点VA 0x492040 ? 已验证 L1 ImageBase(0x400000)+RVA(0x92040)=0x492040,IDA交叉确认 Q9 注册表值名 Start ? 已验证 L1 IDA字符串搜索ControlSet\Services\UsbStor,值名Start Q10 PE主要功能 D ? 已验证 L2 UsbStor+Start+.inf.disabled+MoveFileA+MessageBoxA,USB启用/禁用工具 ⚔️ 深度取证与解题全链路复盘 ? Q1 — 刷单APP包名 标准答案:com.tuoxin.task 状态等级:? 已验证 / L1 解题主线: 使用jadx MCP直接读取AndroidManifest.xml,提取package属性值。APK反编译后manifest文件中的package字段即为应用包名。 ? 关键证据: 证据编号:FINDING-Q1-001, CMD-20260804-002 AndroidManifest.xml中 package="com.tuoxin.task",versionName="3.2.1",application name="com.tuoxin.task.app.TxApplication" ?️ 核心命令: # jadx MCP读取AndroidManifest mcp_jadx_get_android_manifest() ? 控制台回显: package="com.tuoxin.task", versionName="3.2.1", application name="com.tuoxin.task.app.TxApplication" 验证闭环:AndroidManifest.xml是唯一权威来源,package字段直接确认。 ? Q2 — 通讯录数据写入的JSON文件 标准答案:contacts_bak.json 状态等级:? 已验证 / L1 解题主线: 使用jadx MCP搜索ContactsContract关键字定位通讯录读取点→找到DataUploadService类→分析a()方法完整数据流:从ContactsContract.CommonDataKinds.Phone读取通讯录→经ag0.xorFallback XOR加密→Base64编码→写入本地文件。文件名在openFileOutput()参数中硬编码为"contacts_bak.json",位于getFilesDir()目录下。 ? 关键证据: 证据编号:FINDING-Q2-001, CMD-20260804-003 DataUploadService.a()方法完整链路:ContactsContract读取→XOR加密→Base64编码→openFileOutput("contacts_bak.json") ?️ 核心命令: # jadx MCP获取DataUploadService类源码 mcp_jadx_get_class_source(class_name="DataUploadService") ? 控制台回显: 方法a()读取通讯录ContactsContract.CommonDataKinds.Phone,写入文件 "contacts_bak.json" 验证闭环:类源码中openFileOutput参数直接指定文件名,无歧义。 ? Q3 — cfg.bin加密方式(多选) 标准答案:BCF 状态等级:? 已验证 / L2 解题主线: 分析assets/cfg.bin文件的多层处理流程: 编码层:cfg.bin文件内容为Base64编码文本(B正确,排除A的Base32) 解码后结构:Base64解码后前8字节为header("TX-WEB\0\x01\x00"),bytes[8:24]为IV(全0),byte24起为加密数据 加密算法:AES-256-CBC(C正确,排除D的AES-512-CBC),key由SHA-256派生(32字节) IV来源陷阱:Java代码中System.arraycopy(bArrDecode, 8, new 登录后阅读全文 本文已展示开头部分。成为社区成员,即可解锁全部题目复盘与解题记录、参与讨论并累积积分。 登录 免费注册 登录即表示同意社区准则。