arm64 内核 inline hook

ARM64汇编0C - inlinehook 本文是ARM64汇编系列的完结篇,主要利用前面学过的知识做一个小实验完整系列博客地址:https://www.lyldalek.top/article/arm这里只讨论 ARM64 下的 inlinehook,做一个简单的demo,只是抛砖引玉,有兴趣了解更多细节的可以去查找资料,看开源项目。ARM64 相比 ARM 的 inlinehook 要麻烦不少,因为有很多指令都没了,且无法直接访问 PC 寄存器。 阅读详情

linux 内核对于安全可能是比较重要的一环。

关于syscall table 表替换的问题

这里以linux 4.15和4.19为代表的说明我遇到的问题。

syscall hook4.154.19
拥有可读写状态hook成功hook失败

这里似乎到4.19添加了对systable的保护。

如果非要对systable进行hook,可能替换这页表,改变物理地址指向是一种解决办法。

还有就是直接inline hook对内核进行更改。

inline hook的实现

一、寄存器的保存和恢复

STP X1, X0, [SP, #-0x10]
LDR X0, 8
BR X0
[TARGET_
ADDRESS] (64bit)
LDR X0, [SP, -0x8]

这里简化了,实际上我们需要将所有的寄存器进行保存和恢复。

Android-Native-Hook-Practice-Arm64

BR指令是对绝对跳转
B 指令是相对于pc寄存器的跳转
LR是用于保存函数调用的返回地址的link register。

二、指令的修复和执行

我们需要对备份的指令进行修复。在实际修复过程中,有些指令也受影响,有如下几种:

  • 取PC的值进行计算的指令
  • 跳转到备份区域的指令

第一种我们已经解释过了,而第二种则是由于我们备份区域中的代码已经被替换了,如果有跳转到这个区域的指令,那接下来执行的就不试原来这个位置的指令了。我们可以再把第二类细分成两类:

  • 从备份区域跳转到备份区域的指令
  • 从备份区域外跳转到备份区域的指令
    前者通过计算目标代码在备份区域中的绝对地址来代替原来的目标地址从而修复,而后者由于不知道整个程序中到底有多少条指令会跳转过来,所以无法修复。

Android-Native-Hook-Practice

Arm Inline hook的简易原理图 Arm架构下有arm指令和thumb指令之分,不同指令集的hook过程不一样。 假设我们要hook libc.so中的execv和read函数,android系统的库应该都加了-mthumb-interworking编译选项,支持thumb/arm的代码交织,所以要区分目标函数是thumb还是arm指令的。 用ndk编译自己的代码好像默认的是arm(虽然我网上查的说默认是thumb,但我的库编 阅读详情

相关推荐

简单linux 下 x64任意地址的inlinehook

相对主流工具frida,更加快速的inlinehook,代码简单,可以针对性进行修改

liutianheng654的博客 1829

实现Android ARM64平台下Inline Hook框架

Android阵营新出机型的cpu基本都是64位了,虽然可以向下兼容armeabi-v7a,但是使用32位的so毕竟不能充分发挥64位cpu的潜力,所以以后arm64-v8a用的会越来越多。但是整个安卓生态圈似乎还没有开源发布的ARM64内联HOOK方案,所以自己动手写了个,姑且取名And64InlineHook吧,需要注意的是仍然是Alpha版。         关于Inline Hook的背

Rprop 6万+

Apatch内核模块实战:如何用inline_hook监控Android系统调用(附栈回溯源码解析)

本文详细介绍了如何利用Apatch内核模块,通过inline_hook技术监控Android系统调用,特别是针对直接使用svc指令绕过用户层Hook的加固应用。文章提供了从环境搭建、原理对比到实战代码的完整路径,并重点解析了实现栈回溯以追踪调用来源的核心源码与技巧,为安全研究人员提供了深度的系统级监控方案。

weixin_29202213的博客 162

ARM INLINE HOOK (一)

运行在ARM指令集的CPU上(比如Android手机),通过HOOK机制,对一些关键的方法进行监控,从而达到一些特殊目的,比如性能监控、安全等。 常用的HOOK方法有:GOT表Hook和Inline Hook。而inline hook具有更广泛的适用性,几乎可以Hook任何函数(当然也有特殊情况无法进行inline hook,后面会提到)。相较于GOT表hook,inline hook由于需要能...

jiang_lostcode的专栏 2144

避开seccomp陷阱:Apatch内核模块在ARM64架构下的系统调用监控方案

本文深入探讨了在ARM64架构下,如何利用Apatch内核模块方案替代传统的seccomp,实现更强大的系统调用监控。该方案通过内核态直接拦截,不仅能捕获系统调用参数与结果,更支持精准的栈回溯,为移动安全研究、恶意软件分析和RASP系统构建提供了灵活且深度的监控能力。

weixin_29303701的博客 269

深入解析Apatch内核模块:高效svc监控与精准栈回溯实践

本文深入解析Apatch内核模块在高效svc监控与精准栈回溯中的实践应用。通过详细的技术实现原理和实战案例,帮助开发者掌握跨版本兼容的内核模块开发技巧,优化性能并解决实际问题,特别适用于系统调用监控和异常行为追踪场景。

weixin_30872499的博客 368

ARM64 Linux内核级openat系统调用Inline Hook实战

系统调用Hook是Linux内核安全与行为审计的核心技术,其本质是在内核态拦截并重定向原始函数执行流。在ARM64架构下,由于缺乏x86的INT 0x80软中断机制,必须依托EL1异常处理模型、严格对齐的32位指令编码及SPSR寄存器状态管理来实现精准跳转。该技术具备穿透seccomp、SELinux等策略层的能力,提供原始参数可见性,是eBPF不可替代的底层干预手段。典型应用场景包括国产化平台系统调用增强、无BPF环境的运行时审计、以及嵌入式实时系统的轻量级路径监控。本文聚焦openat这一高频率、结构清

weixin_29163857的博客 95

【密码学】生成8位26个字母和数字的全排列(密码字典,密钥)c++代码(非递归高效直接)

生成8位26个字母和数字的全排列(密钥)代码(非递归高效直接) 用C语言或C++,生成一个8位的26个字母和数字的全排列的原代码,例如从:00000000到ZZZZZZZZ。 说明:生成的这个字典会非常大,有36^8条记录,估计要3T的硬盘,跑一个晚上看看         这个方法比递归更高效,更直接。                                                ...

Wu_Being 的优快云 博客 1万+

Apatch内核模块之svc监控和栈回溯

现代 app 的壳中有大量的 syscall 的直接调用,想要知道其中的调用参数以及结果有以下方法:1、使用 frida 进行内存搜索 svc 0 指令的机器码(01 00 00 D4),然后自己想办法干掉2、使用 seccomp 进行拦截,使用 seccomp 的过程中可能会遇到一些奇奇怪怪的问题3、使用内核模块在内核态进行拦截在 Apatch 之前编写的内核模块需要针对单独的内核进行编译,并且编译环境还需要完整内核的依赖文件,这种方法还需要修改内核设置并将内核放入到系统映像中重新刷机。

2503_90751938的博客 1325

V.PhyloMaker实战:从物种列表到维管束植物系统发育树的完整流程

本文详细介绍了使用V.PhyloMaker工具包,从物种列表快速构建维管束植物系统发育树的完整实战流程。内容涵盖R包安装、物种名标准化、核心函数phylo.maker的三种构建方案选择、结果树的可视化与导出,以及与picante包的联动分析,为生态学和生物地理学研究提供了高效解决方案。

weixin_29057237的博客 376

AFSim 2.9中文手册实战指南:从安装到高级功能详解(附B站视频链接)

本文详细介绍了AFSim 2.9的安装配置、基础功能操作和高级功能应用,帮助用户快速掌握这款强大的仿真平台。从系统要求检查到多体动力学仿真,再到性能优化技巧,全面解析AFSim 2.9的使用方法,适合初学者和进阶用户参考。

weixin_30892037的博客 566

Android安全攻防:基于Inline Hook的Frida检测与绕过实战

在移动应用安全领域,动态插桩技术是进行运行时分析和漏洞挖掘的重要手段。其核心原理是通过注入代码或修改内存指令,实现对目标进程行为的监控与干预。这项技术在安全评估、逆向工程和自动化测试中具有极高的技术价值,尤其在Android平台,被广泛应用于应用行为分析、协议解密和漏洞验证等场景。然而,随着安全对抗升级,针对动态插桩工具的检测与防护机制也日益增强。本文聚焦于基于Inline Hook的实战攻防,深入探讨如何通过直接修改内存指令来检测Frida等工具的注入痕迹,并详细解析相应的绕过策略。文章将结合ARM/AR

weixin_34082854的博客 351

双相机坐标系标定

工业双相机对位标定

sinat_33762356的博客 8317

APatch 深度解析:内核级 Root 方案、KernelPatch 与 SuperKey 安全模型

APatch 是一款面向 Android 设备的内核级 Root 方案,它融合了 Magisk 基于 `boot.img` 的便捷安装方式与 KernelSU 强大的内核修补能力。本文以项目官方 FAQ 为骨架,结合仓库源码(`apd/` 守护进程与 KernelPatch 交互层),系统讲解 APatch 与 Magisk、KernelSU 的本质差异,KPM(Kernel Patch Modu

gitblog_00360的博客 885

Dify沙箱权限配置实战:解决‘operation not permitted‘报错的完整指南

本文详细解析了Dify平台中常见的'operation not permitted'报错根源,即沙箱安全机制对系统调用的限制。通过实战步骤,指导用户定位并修改config.yaml配置文件,精准配置allowed_syscalls白名单以解决权限问题,涵盖从文件操作、进程控制到网络通信等关键系统调用的编号详解与配置示例,帮助用户在保障安全的前提下,顺利运行依赖特定库的代码工作流。

tech5的博客 1202

DeepSeek+Coze扣子搭建智能体(保姆级教程)

DeepSeek+Coze扣子搭建智能体(保姆级教程)

yizhen91y的博客 1万+

APatch 技术指南:基于 KernelPatch 的 Android 内核级 Root 方案深入解析

APatch 是一款面向 Android 设备的**内核级 Root 解决方案**,它融合了 Magisk 通过 `boot.img` 便捷安装的方式与 KernelSU 强大的内核修补能力。本指南以官方 FAQ 为核心,结合仓库源码([apd/src/supercall.rs](https://link.gitcode.com/i/a881875b6cc9d40075b441c4ab8968b7

gitblog_00774的博客 212

SPMI协议学习总结

SPMI(System Power Management Interface)是由MIPI(Mobile Industry Processor Interface)联盟定义的一种硬件接口标准,它主要用于移动设备中,连接SoC(System on Chip)处理器系统的集成电源控制器与一个或多个电源管理IC(PMIC),以实现精确的电源管理

歌颂苦难的行为是无耻的; 1082

APatch终极指南:Android内核深度定制的革命性解决方案

APatch是一款革命性的Android内核修补工具,它通过创新的内核级修改技术为Android设备提供了全新的root解决方案。作为Android系统深度定制的终极工具,APatch结合了Magisk的易用性和KernelSU的强大内核修补能力,为开发者和高级用户提供了前所未有的系统定制自由度。 ## APatch核心功能解析:内核级系统定制 APatch的核心在于其独特的内核修补技术,它直

gitblog_00215的博客 502

AI原生应用架构师指南:系统化思维框架解析

随着ChatGPT、Stable Diffusion等AI技术的普及,「AI原生应用」(AI-Native Application)已从概念走向实践。传统应用以「功能逻辑」为核心(比如用代码写死的购物车规则),而AI原生应用以「数据+模型」为核心(比如根据用户行为动态推荐商品)。本文的目的是为架构师提供一套系统化思维框架如何区分「伪AI应用」和「真AI原生应用」?数据、模型、业务场景三者如何协同设计?架构师需要关注哪些关键技术节点?如何避免「为了AI而AI」的陷阱?

AI Python 编程之道的博客 491

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

APatch 内核级 Root 方案:内核修补原理、SuperKey 安全模型与 APM/KPM 模块体系

APatch 是一个基于 Linux 内核直接修补(kernel patching)的 Android Root 方案,它融合了 Magisk 通过 `boot.img` 便捷安装的方式与 KernelSU 强大的内核修补能力。本文基于当前仓库的 README 与源码,系统讲解 APatch 的架构定位、SuperKey/SuperCall 安全模型、内核配置要求、APM 与 KPM 模块体系、S

gitblog_00578的博客 209

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【亲测免费】 探索内核的新境界:KernelPatch,无源码下的Linux内核修补与钩取利器

在技术的深谷中探索,我们常常遇到需要对系统底层进行定制或优化的需求。今天,向大家隆重介绍一款名为**KernelPatch**的开源项目,它让我们能够无需源代码和符号信息,直接对Linux内核进行修补与钩取操作,解锁了内核调试与增强的新大门。 ## 项目介绍 KernelPatch,如同一位隐身于二进制世界的黑客,仅凭一份被剥离的Linux内核镜像,就能施展魔法般地获取所有符号信息,实现静态补...

gitblog_01099的博客 796

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

APatch内核模块开发深度解析:从系统级Hook到内核Patch实现原理

APatch作为Android系统内核级修改工具,通过其独特的KPM(Kernel Patch Module)机制实现了对Android内核的深度定制和功能扩展。本文将深入探讨APatch的技术架构、内核Hook实现原理、模块开发机制以及安全设计考量,为高级开发者和系统架构师提供完整的技术实现指南。 ## 技术背景与系统级Hook挑战 在Android生态系统中,系统级功能修改一直面临着诸多技

gitblog_00347的博客 176

linux 进程 inline hook,高级Linux Kernel Inline Hook技术分析与实现 -电脑资料

==Ph4nt0m Security Team==Issue 0x03, Phile #0x03 of 0x07|=---------------------------------------------------------------------------=||=--------------=[ 高级Linux Kernel Inline Hook技术分析与实现 ]=----------...

weixin_29479863的博客 237

[源码和文档分享]实现32位和64位系统的Inline Hook API

背景 API HOOK技术是一种用于改变API执行结果的技术,Microsoft 自身也在 Windows 操作系统里面使用了这个技术,如Windows兼容模式等。 API HOOK 技术并不是计算机病毒专有技术,但是计算机病毒经常使用这个技术来达到隐藏自己的目的。 本文就是向大家讲解在 32 位系统和 64 位系统下的 Inline Hook...

qq_38474647的博客 365
上一篇: linux 内核页表替换
下一篇: linux user namespace 和cgroup
inquisiter
博客等级 码龄10年 374粉丝 228原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值