首页
学习
活动
专区
工具
TVP
发布

LinuxHOOK动态链接库中API的方法

2012年,我写了一篇介绍Windows系统Ring3层APIhook方案——《一种注册表沙箱的思路、实现——Hook Nt函数》,其在底层使用了微软的Detours库。...5年后,我又遇到这么一个问题,但是系统变成了Linux。我最开始的想法是找一个Linux的Detours库,于是找到了subhook。...(转载请指明出于breaksoftware的csdn博客)         后来发现,Linux用户层Hook非常简单。我们只要定义一个和被HookAPI相同名称、参数、返回值的函数即可。...这段文字意思是:在默认的库查找顺序,RTLD_DEFAULT是用于查找第一个符号匹配的函数地址,RTLD_NEXT是用于查找第二个符号匹配的函数地址。...HOOK_FUNC_INIT方法声明了一个全局函数指针变量,其在HOOK_FUNC宏中被指定为被HOOK函数的原始地址。

4.2K20

Linux内核跟踪:ftrace hook入门手册(

一、前情提要 在前一篇文章《Linux内核跟踪:ftrace hook入门手册(上)》中,我们对部分ftrace hook经典方案中的实现细节进行了优化。本文会深入说明这些优化的原理和目的。...二、内核版本的差异 目前的ftrace hook实现中,总是需要使用大量条件编译以解决Linux内核的版本差异问题。...其中较为关键的一个差异点,就是Linux内核从4.17版本开始修改了系统调用过程中的函数签名,这对ftrace hook的实现造成了较大的困扰。...hook子程可以直接定义与系统调用函数相同的形式参数来获取系统调用参数值,而返回时也会直接返回到系统调用函数的直接调用方(参考下图[3]): 图5:经典方案中的hook执行流程 然而,由于Linux...,我们很难在过滤器函数中修改或传递更多的参数给外套子程——结果导致在同时存在多个hook目标的情况,外套子程内部难以确定应该调用哪个业务子程。

1.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

React框架 Hook API

Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况使用 state 以及其他的 React 特性。...React 官方文档 本页面主要描述 React 中内置的 Hook API。 如果你刚开始接触 Hook,那么可能需要先查阅 Hook 概览。你也可以在 Hooks FAQ 章节中获取有用的信息。...提示 如果你在接触 Hook 前已经对 context API 比较熟悉,那应该可以理解,useContext(MyContext) 相当于 class 组件中的 static contextType...额外的 Hook 以下介绍的 Hook,有些是上一节中基础 Hook 的变体,有些则仅在特殊情况会用到。不用特意预先学习它们。...延迟格式化 debug 值 在某些情况,格式化值的显示可能是一项开销很大的操作。除非需要检查 Hook,否则没有必要这么做。

11100

Linux Hook 笔记

相信很多人对"Hook"都不会陌生,其中文翻译为"钩子”.在编程中, 钩子表示一个可以允许编程者插入自定义程序的地方,通常是打包好的程序中提供的接口....通过Hook,我们可以暂停系统调用,或者通过改变系统调用的参数来改变正常的输出结果, 甚至可以中止一个当前运行中的进程并且将控制权转移到自己手上....基本概念 操作系统通过一系列称为系统调用的方法来提供各种服务.他们提供了标准的API来访问下面的 硬件设备和底层服务,比如文件系统....$hello表示字符串"Hello"的地址; 32位Linux系统通过0x80中断来进行系统调用....更多关于32位和64位汇编指令的区别可以参考stack overflow的总结, 因为我当前环境是64位Linux,所以下文的操作都以64位系统为例.

2.6K60

Linux Hook技术实践

LInux Hook技术实践 什么是hook 简单的说就是别人本来是执行libA.so里面的函数的,结果现在被偷偷换成了执行你的libB.so里面的代码,是一种替换。...为什么hook 恶意代码注入 调用常用库函数时打log 改变常用库函数的行为,个性化 怎么hook 这个东西在win里面有现成的api,但是在linux里面却要主动修改ELF文件,或者修改动态库链接路径...我看网上写的好多挺麻烦的,而且还要调用各种修改ELF的API。。。。...还有一些比较少用的用法,在某些情况,一些特定线程的系统调用不应占过多的资源,我们可以通过这个方法让之变得高效,这个说法可能比较古怪。...举个例子: 某些系统上select的实现可能与众不同,在没有fd就绪时,并不阻塞,而是忙等,这时便可以通过hook技术,在select中插入usleep,达到释放cpu的作用。

1.1K10

Android逆向|Xposed Hook

0x01 Hook替换函数与函数置空 在我们Hook的时候,常用的回调函数是XC_MethodHook(),用来获取或者修改我们Hook的参数列表。...除了这个回调函数外,还有一个XC_MethodReplacement()函数,用来替换要Hook的函数或者将Hook的函数置空。..."replaceHook"); return null; } }); } } } 日志输出效果图如下: 可以发现test()函数已经被我们成功的替换掉,同理当我们什么也不写只返回Null就相当于将Hook...0x02 Hook内部类与匿名类 在Hook的时候,我们经常也会遇到一些内部类以及匿名内部类,我们还是以之前的案例为例进行说明。...日志如下: 我们通过编写的Hook代码可以发现,Hook内部类的字节码为:类路径$类名 Hook匿名内部类的字节码为:类路径1 类路径2 类路径 0x03 Xposed主动调用 在Hook的时候

3.4K20

逆向实用干货分享,Hook技术第一讲,之Hook Windows API

逆向实用干货分享,Hook技术第一讲,之Hook Windows API 一丶什么是Hook,以及Hook能干啥 首先这一个小标题主要介绍神马是Hook,如果知道的,则不用看了...二丶Hook API的原理,以及思路 现在我们要知道我们要怎么Hook API 假设我们程序现在要调用一个MessageBox函数,那么我们把这个API Hook了,变为我们的API去执行,执行完我们的代码之后再去执行它的的函数...利用这个技术,我们可以监控API,比如应用程序会调用loadLibrary,那我们把它Hook了,把Dll路径改成我们的,那加载的就是我们的dll了,当然 HookAPI很多,因为只要是Windows...的API都能HOOK 因为JMP的时候占五个字节,而WindowsAPI也是头部弄了五个字节,猜想可能是Windows自己留作Hook的....GetprocAddress的位置断点, 看下获取到的Msg的地址是多少 ?

3.2K70

构建API调用框架绕过杀软hook

首发于跳跳糖社区:https://tttang.com/archive/1546/ 前言 我们知道杀软在API函数的监控上一般有两种手段,一种是在3环直接通过挂钩到自己的函数判断是否调用了这个API,...调用过程 我们首先来看一API函数的调用过程,这里以OpenProcess函数为例 首先在kernel32.dll里面找到OpenProcess函数 往下走这里调用了NtOpenProcess...这里去导出模块看一调用了ntdll.dll的NtOpenProcess 这里在ntdll.dll里面定位到NtOpenProcess,这里使用7A的调用号,通过call dword ptr [edx...3环API(kernel32.dll) -> ntdll.dll -> sysenter -> KiFastCallentry -> SSDT -> 真正调用的0环API 我们可以在3环直接自己写asm...调用成功 那么这里我们去pchunter里面看一原来的SSDT表,起始地址为805A5614 结束地址为0x805CC8FE,而我们自己创建的SSDT表的地址为0x860203D0 那么如果杀软在

47220

构建API调用框架绕过杀软hook

我们知道杀软在API函数的监控上一般有两种手段,一种是在3环直接通过挂钩到自己的函数判断是否调用了这个API,另外一种方式就是在0环去往SSDT表的路径上挂钩来判断进0环后的操作。...调用过程 我们首先来看一API函数的调用过程,这里以OpenProcess函数为例 首先在kernel32.dll里面找到OpenProcess函数 往下走这里调用了NtOpenProcess 这里去导出模块看一调用了...限于篇幅这里就不赘述了 我们直接去到关键的汇编语句,我们可以看到这里就是找到SSDT函数表的地址,通过3环传入的调用号,去SSDT表里面寻址 通过SSDT定位到NtOpenProcess函数 思路 我们总结一调用过程...3环API(kernel32.dll) -> ntdll.dll -> sysenter -> KiFastCallentry -> SSDT -> 真正调用的0环API 我们可以在3环直接自己写asm...调用成功 那么这里我们去pchunter里面看一原来的SSDT表,起始地址为805A5614 结束地址为0x805CC8FE,而我们自己创建的SSDT表的地址为0x860203D0 那么如果杀软在

96061

干货 | 通过HOOK底层API实现进程隐藏

文件隐藏可以通过 •进程伪装: 将进程名替换成其他正常进程的名称(修改PEB路径和命令行信息)•傀儡进程: 通过将主进程挂起,替换内存数据,卸载镜像,修改上下文,并执行真正我们想要执行的进程,这也是一些壳的原理•HOOK...: 通过HOOK三环最底层APIZwQuerySystemInformation实现隐藏,这是本文的重点•COM劫持、DLL劫持、DLL注入.........32位和64位需要修改的字节数是不同的,使用xdbg断点找到对应的硬编码 32位: 需要修改5个字节硬编码 0xe9 xx xx xx xx ? ?...64位: 需要修改12个字节的硬编码 0x48 0xb8, xx xx xx xx xx xx xx xx0xFF 0xE0 ? ?...实现代码 hook函数 void hookZwQuerySystemInformation(){ //获取ZwQuerySystemInformation的地址 HMODULE hntdll

1.7K70

ring0的Inline hook

前言 Inline hook是直接在以前的函数替里面修改指令,用一个跳转或者其他指令来达到挂钩的目的。...这是相对普通的hook来说,因为普通的hook只是修改函数的调用地址,而不是在原来的函数体里面做修改。一般来说,普通的hook比较稳定使用。inline hook 更加高级一点,一般也跟难以被发现。...ring3的Inline hook在之前已经实现过了,再看看ring0的Inline hook该如何实现。...KeServiceDescriptorTable kd> dd 80505450 + 74 * 4 kd> u 8057b182 我这里因为windbg的原因没有显示函数名称,到pchunter里面确认一,...后的一些信息,这里用到PsGetCurrentProcess获取进程的EPROCESS结构,在0x174偏移存放着进程名,我们通过打印进程名来查看一哪些进程调用了NtOpenFile这个函数 char

41510

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券