Dere3046/ksymless_Android

GitHub: Dere3046/ksymless_Android

该工具在 Android ARM64 GKI 内核上,无需导出符号即可发现 sys_call_table 并重建完整的 kallsyms 数据结构,解决无符号环境下的内核地址解析问题。

Stars: 2 | Forks: 0

# 无 ksym 的 Android 针对 Android GKI 内核的 [ksymless](https://github.com/rota1001/ksymless) ARM64 实现。 在不使用导出内核符号的情况下,发现 kallsyms 数据和 sys_call_table。 有关 kallsyms 的内部机制详见 [xcellerator 的文章](https://xcellerator.github.io/posts/linux_rootkits_11/)。 ## 工作原理 改编自原始的 x86_64 ksymless 技术: 1. 遍历 x29 帧指针链以查找 do_el0_svc 的返回地址 2. 扫描 ADRP+ADD+B 模式以定位 sys_call_table(相当于 ARM64 上的 GOT 扫描) 3. 从 sprint_symbol 追踪 BL 调用链,收集 ADRP 目标页 4. 通过匹配内核基址值来识别 kallsyms_relative_base 5. 将最长的已排序 u32 序列识别为 kallsyms_offsets 6. 根据内核源码布局计算所有 8 个 kallsyms 数据结构 7. 实现 kallsyms_name_to_addr 和 sym_name_at 8. 在可用时使用 kprobe 进行验证 ## 文件结构 ``` ├── src/ │ ├── core.c / core.h stack, SCT discovery, kallsyms, lookup │ ├── verify.c / verify.h kprobe verification, layout dump │ └── main.c entry point ├── Makefile └── .github/workflows/build.yml ``` ## 环境要求 - 搭载 android16-6.12 GKI 的 ARM64 设备 - 已导出 sprint_symbol - 有可用的 kprobe 用于验证(可选,核心逻辑在没有它的情况下也能工作) ## 许可证 GPL-2.0
标签:0day挖掘, Android, ARM64, DSL, 云资产清单, 内核安全, 安全渗透, 客户端加密, 漏洞利用辅助, 符号解析, 逆向工程