frednery7-hub/dexpilot

GitHub: frednery7-hub/dexpilot

DexPilot 是一款用 Kotlin 编写的实验性 CLI 工具,用于解析、验证 Android DEX 文件头部结构并输出技术报告。

Stars: 0 | Forks: 0

# DexPilot DexPilot 是一款实验性的 Kotlin/JVM 命令行工具,用于检查 Android DEX 文件。 MVP 1 的范围是有意限定的:DexPilot 读取 .dex 文件,解析其 header,验证基础结构字段,并以文本或 JSON 格式打印技术报告。 DexPilot 不是 DEX 优化器、bytecode 重写器、压缩器、混淆器、APK 重打包工具或 Gradle 插件。 ## 当前状态 MVP 1:DEX Inspector。 已实现: - Kotlin/JVM CLI。 - DEX header 解析器。 - DEX header 验证器。 - 支持的 DEX 版本:035、037、038、039、040。 - 识别但拒绝的版本:041。 - 文本报告输出。 - 通过 --json 输出 JSON 报告。 - 通过 LoggerPort 进行最简化的日志记录。 - 日志写入 stderr。 - 报告写入 stdout。 - 使用 JUnit 5 和 Kotest Assertions 进行测试。 - 位于 src/test/resources/fixtures/valid/minimal-header.dex 的受控 fixture。 ## 要求 - JDK 17。 - repository 中包含 Gradle Wrapper。 ## 命令 运行测试: ``` ./gradlew test ``` 构建: ``` ./gradlew build ``` 显示版本: ``` ./gradlew run --args="--version" ``` 显示帮助: ``` ./gradlew run --args="--help" ``` 检查 DEX header: ``` ./gradlew run --args="header src/test/resources/fixtures/valid/minimal-header.dex" ``` 分析 DEX 文件: ``` ./gradlew run --args="analyze src/test/resources/fixtures/valid/minimal-header.dex" ``` 生成 JSON 报告: ``` ./gradlew run --args="analyze --json src/test/resources/fixtures/valid/minimal-header.dex" ``` 将干净的 JSON 生成到文件中: ``` ./gradlew -q run --args="analyze --json src/test/resources/fixtures/valid/minimal-header.dex" > report.json ``` 在本地验证生成的 JSON: ``` python3 -m json.tool report.json ``` ## 架构 DexPilot 遵循简单的 Clean Architecture 划分: ``` presentation/cli CLI entrypoint and commands application/ports Ports such as binary reader and logger application/usecase Analysis use case and result types domain/dex DEX model and validation rules infrastructure/dex File reader and header parser infrastructure/report Text and JSON report writers infrastructure/logging Console logger ``` ## 验证策略 MVP 1 验证: - DEX magic 前缀。 - DEX 版本支持。 - 声明的文件大小与实际文件大小的比对。 - 支持版本的 header 大小。 - Endian tag。 - 基础 section 偏移范围。 MVP 1 不验证完整的 DEX 语义正确性、map list 一致性、checksum 正确性、SHA-1 signature 正确性、类数据、code item、指令或 APK 级别的完整性。 ## 版本策略 MVP 1 中支持: - 035 - 037 - 038 - 039 - 040 MVP 1 中识别但拒绝: - 041 在 MVP 1 中,有意不将版本 041 视为受支持,因为它需要不同的/container 感知处理,这属于未来模块的范畴。 ## 安全与防护态势 DexPilot 不执行 DEX bytecode。它只读取字节并解析 metadata。 默认行为避免转储字符串、类名、方法名、bytecode 或原始 binary payload。MVP 1 专注于 header 级别的 metadata。 日志写入 stderr。报告写入 stdout。这使得 JSON 输出可以被重定向。 ## 开发策略 该项目分四个门控里程碑进行开发: - 25%:文档和结构审计。 - 50%:Kotlin/Gradle/CLI 基础审计。 - 75%:DEX header 解析器和验证审计。 - 100%:MVP 1 最终审计。 仅在每次里程碑审计通过后才创建 commit。 ## 许可证 在早期开发期间为专有/源代码可见。
标签:Android开发, DEX解析, Kotlin, 云安全监控, 后台面板检测, 逆向分析, 静态分析