ubuntu24.02
下载编译工具
然后是在这下载GNU tools ,建议使用aarch64-none-elf,我之前使用linux自带的aarch64-linux-gnu编译出来无法正常使用。d82K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2S2M7X3#2Q4x3X3g2U0L8$3#2Q4x3V1k6V1L8%4N6F1L8r3!0S2k6s2y4Q4x3V1k6Q4x3X3c8Q4x3V1k6S2M7X3#2Q4x3X3c8Y4L8Y4g2Q4x3X3c8@1L8$3!0D9j5$3S2S2K9h3&6Q4x3X3c8V1L8%4N6F1L8r3!0S2k6s2y4Q4x3V1j5I4x3g2)9J5k6o6u0Q4x3X3b7J5x3o6t1J5i4K6u0V1x3o6t1`.
d82K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2S2M7X3#2Q4x3X3g2U0L8$3#2Q4x3V1k6V1L8%4N6F1L8r3!0S2k6s2y4Q4x3V1k6Q4x3X3c8Q4x3V1k6S2M7X3#2Q4x3X3c8Y4L8Y4g2Q4x3X3c8@1L8$3!0D9j5$3S2S2K9h3&6Q4x3X3c8V1L8%4N6F1L8r3!0S2k6s2y4Q4x3V1j5I4x3g2)9J5k6o6u0Q4x3X3b7J5x3o6t1J5i4K6u0V1x3o6t1`.
实测这个地址下载的非常慢,建议直接复制链接用迅雷
下载示例编译
下载工程,切换到示例hello工程
安装hello.kpm
adb push hello.kpm /storage/emulated/0/Download
理解KPM模块的基本信息
hello模块作为最简单的KPM示例,其中包含了KPM模块的基本框架内容。
该内容会显示在安装界面上
init 加载触发
exit 卸载触发
control0 在界面上输入参数时候触发
获取了输入参数,并且调用compat_copy_to_user显示到用户
compat_copy_to_user
关于这两部分,原文档说的特别清楚。我直接放给AI总结一下
045K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6T1L8h3q4^5x3e0t1I4i4K6u0r3d9$3g2J5L8X3g2D9f1r3q4@1j5$3S2Q4x3V1k6T1L8r3!0T1i4K6u0r3L8h3q4A6L8W2)9J5c8X3c8G2j5#2)9J5c8Y4A6Z5i4K6u0V1b7@1&6Q4x3V1k6A6L8X3I4A6L8X3g2Q4x3X3c8Z5L8$3!0C8i4K6u0W2L8h3b7`.d5dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6T1L8h3q4^5x3e0t1I4i4K6u0r3d9$3g2J5L8X3g2D9f1r3q4@1j5$3S2Q4x3V1k6T1L8r3!0T1i4K6u0r3L8h3q4A6L8W2)9J5c8X3c8G2j5#2)9J5c8Y4A6Z5i4K6u0V1b7@1&6Q4x3V1k6K6P5i4y4U0j5h3I4D9i4K6u0V1K9r3!0G2K9#2)9J5k6h3#2V1
在反调试检测和环境伪装这一块,kpm能做到更底层的对抗。
抛砖引玉,我这里实战对抗一下libmsaoaidsec.so这个模块的frida检测。不用frida脚本的反检测代码而是通过kpm模块隐藏frida信息。
libmsaoaidsec.so
代码整理中,先发试试能不能通过检测
APatch部署及KPM实现InlineHook及SyscallHook技术APatch部署及KPM实现InlineHook及SyscallHook技术-先知社区
官方教程KernelPatch Modules(KPM) 使用指南 | APatch DocsKernelPatch/doc/zh-CN at main · bmax121/KernelPatch
传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!