Skip to content

info — 查看 SO 结构

查看一个 SO 的 ELF 结构信息,主要用于修复前探测位宽与架构、确认源文件是否合法。

用法

bash
SoFixer-skills-CLI64 info -s <源文>

选项

选项必填说明
-s, --source <path>待查看的 SO 文件

输出示例(成功)

json
{
  "ok": true,
  "tool": "SoFixer-skills-CLI",
  "arch": 64,
  "command": "info",
  "result": {
    "file": "dump.so",
    "elf_class": "ELFCLASS64",
    "data_encoding": "ELFDATA2LSB",
    "machine": "AARCH64",
    "entry": "0x7db078b010",
    "segments": [
      { "type": "PT_LOAD", "vaddr": "0x7db078b000", "filesz": 524288, "memsz": 524288 }
    ],
    "dynamic": {
      "DT_SONAME": 15,
      "DT_NEEDED": [3],
      "DT_STRTAB": "0x7db0831000"
    }
  }
}

输出示例(失败 · 位宽不符)

json
{
  "ok": false,
  "tool": "SoFixer-skills-CLI",
  "arch": 64,
  "command": "info",
  "error": {
    "code": "class_mismatch",
    "message": "elf class mismatch, use the other variant",
    "stage": "ElfReader::Load"
  }
}

位宽不符是最常见情况

infoclass_mismatch 时,换另一个位宽变体重试即可(CLI64 ↔ CLI32)。这是预期内的探测流程,不是真正的错误。

字段说明

字段含义
elf_classELFCLASS32 / ELFCLASS64,对应 CLI32 / CLI64
machineARM(40)/ AARCH64(183)等
entry入口虚拟地址(十六进制字符串,避免精度丢失)
segmentsprogram header 列表
dynamicdynamic 段里的关键 DT_* 条目

已知限制

  • DT_NEEDED / DT_SONAME 输出的是字符串表偏移,而非库名本身(要拿库名需自己按偏移读 strtab)。
  • 64 位地址一律用十六进制字符串输出(JSON Number 是 double,只能精确到 2^53)。

退出码

  • 0 — 读取成功
  • 1 — 读取失败(load_failed / class_mismatch
  • 2 — 参数错误(缺 -s

AI 调用建议

info 当作修复前的第一步探测:先拿它确认位宽与架构,再决定用哪个变体跑 fixclass_mismatch 不是错,是探测信号。

基于 VitePress 构建