# Smali 反汇编

## 阅读方法或类

使用 `decode`，通过 descriptor 或 DEX 坐标检查方法：

```bash
dexsql decode --input app.apk --method 'Lcom/example/Foo;->bar(I)V'
dexsql decode --input app.apk --file-id 0 --method-idx 123
dexsql decode --input app.apk --class 'Lcom/example/Foo;'
```

可重复 `--input`。`--method`、`--method-idx`、`--class` 三选一；索引查询需要 `--file-id`。descriptor 在多个 DEX 中出现时，错误会列出候选 file ID。类选择按方法索引顺序输出所有定义，包括 abstract/native 声明；空类成功但不输出方法。CLI 在所选方法全部解码成功后才写 stdout。

## 输出范围

输出使用 `vN` 寄存器、code-unit 标签、精确常量位和转义 UTF-16 字符串。支持标准 DEX 035、037–041 指令、payload 和 catch 指令。输出为方法块，不包含完整类/字段声明、注解或调试指令，不能直接作为完整类重新组装。Smali 无法无歧义表示的 call-site NaN 位或未引用 switch 表保留在注释中。Quickened/odex 指令返回带可用方法/偏移信息的错误。


## 使用 AI 客户端

连接后的 AI 可以先通过 SQL 找到方法，再分页阅读 smali。英文 [MCP 解码参考](../mcp/smali.md)说明了对应工具的调用流程。

---

Copyright (c) 2026 LSPosed Developers。本文档采用 [MIT 许可证](../license.md)。
