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, 云安全监控, 后台面板检测, 逆向分析, 静态分析