Linux Hook技术
文章平均质量分 81
霜晨月c
https://xiaose-code.github.io/
欲买桂花同载酒,终不似,少年游。
展开
-
IP_FILE_HOOK项目bug汇总
如果你想使用 Ninja 作为构建工具,你需要确保它已安装在你的系统上。如果你不想使用Ninja作为构建系统,你可以在命令中使用不同的生成器,常见的替代选项包括 “Make” 或不指定生成器(CMake将使用系统的默认生成器)。如果以上方法仍无法解决问题,你可能需要进一步检查共享库的依赖关系和构建过程,以确保所有库正确链接,并且符号都能够正确解析。一旦你解决了这些问题,CMake应该能够成功配置你的项目并生成构建系统。在其他系统上,你可能需要使用不同的软件包管理器或手动下载 Ninja。原创 2023-11-23 16:47:51 · 68 阅读 · 0 评论 -
ip_file_Hook项目解读
inet_ntop函数用于将二进制形式的网络地址转换为人类可读的IPv4或IPv6地址表示。af:地址族(Address Family),可以是AF_INET(IPv4)或AF_INET6(IPv6)。src:指向要转换的二进制网络地址的指针。dst:指向用于存储结果的缓冲区。sizedst缓冲区的大小。inet_ntop函数的原理是将二进制网络地址转换为可读的点分十进制(IPv4)或冒号十六进制(IPv6)表示。函数根据给定的地址族af,采用不同的格式化方式来完成这一转换。原创 2023-11-23 16:43:03 · 77 阅读 · 0 评论 -
Hook--拦截IP地址访问
实现一个网络访问过滤器,允许或拒绝网络连接和接受请求,基于一个黑名单中的IP地址列表。原创 2023-10-31 11:28:44 · 697 阅读 · 0 评论 -
Hook--基于LD_PRELOAD方法的文档拦截实现
白名单中只添加了cat进程名,按道理说应该只有cat命令打开的文件才被允许执行,但是出现了bug,无法拦截open、more这两个命令打开文件,初步推测是因为LD_PRELOAD这种方法的局限性,还无法拦截open、more这些底层更为复杂的操作,需要考虑别的方法。实现一个动态链接库(DLL)的功能,其主要目的是拦截文件访问操作和命令执行操作,检查当前进程是否在白名单中,记录访问记录到日志,并定期检查白名单是否发生变化。定义一个空的白名单数组,然后从txt白名单文件中读取内容(进程名)存入到白名单数组中,原创 2023-10-31 11:18:07 · 440 阅读 · 0 评论 -
Hook技术--⑥Netfilter
Netfilter/IPTables是Linux2.4.x之后新一代的Linux防火墙机制,是一套融入到linux内核网络协议栈的框架,是linux内核的一个子系统。Netfilter采用模块化设计,具有良好的可扩充性。其重要工具模块IPTables从用户态的iptables连接到内核态的Netfilter的架构中,在报文流经的关键位置处,基于不同协议(ipv4/ipv6)的hook方式,使用hook列表中对应的钩子函数匹配处理,以实现过滤、修改报文、跟踪等功能;原创 2023-10-31 11:15:00 · 429 阅读 · 1 评论 -
Hook技术--④Ptrace和⑤Kernel Inline Hook
使用Linux Module、或者LSM挂载点对进程的启动动作进行实时的监控,并通过Ring0-Ring3通信,通知到Ring3程序有新进程启动的动作用ptrace函数attach上目标进程让目标进程的执行流程跳转到mmap函数来分配一小段内存空间把一段机器码拷贝到目标进程中刚分配的内存中去最后让目标进程的执行流程跳转到注入的代码执行用PTRACE_ATTACH或者PTRACE_TRACEME 建立进程间的跟踪关系。原创 2023-10-31 11:12:49 · 253 阅读 · 1 评论 -
Hook技术--③Linux系统调用劫持 hook
使用Makefile编译,insmod插入内核模块后,再执行ls时,就会进入到我们的系统调用,我们可以在hook代码中删掉某些文件,ls就不会显示这些文件,但是这些文件还是存在的。当用户态发起一个系统调用时,会通过80软中断进入到syscall hander,进而进入全局的系统调用表sys_ call _table去查找具体的系统调用,那么。系统调用劫持的目的是改变系统中原有的系统调用,用我们自己的程序替换原有的系统调用。,系统调用表实际上是指针数组,下标是系统调用号,原创 2023-10-31 11:09:33 · 599 阅读 · 1 评论 -
Hook技术--②LD_PRELOAD
定义与目标函数完全一样的函数,包括名称、变量及类型、返回值及类型等。将包含替换函数的源码编译为动态链接库。通过命令export LD_PRELOAD="库文件路径",设置要优先替换动态链接库。如果找不替换库,可以通过export LD_LIBRARY_PATH=库文件所在目录路径,设置系统查找库的目录。替换结束,要还原函数调用关系,用命令解除想查询依赖关系,可以用ldd 程序名称。共享库必须是可执行文件,即必须具有x权限。共享库必须是使用-fPIC编译的,以避免地址重定位问题。原创 2023-10-31 11:06:35 · 503 阅读 · 1 评论 -
Hook技术--①函数指针Hook
在计算机编程中,HOOK 是一种「劫持」程序原有执行流程,添加额外处理逻辑的技术。基本所有的软件程序都可以通过hook方式进行行为拦截,hook方式就是改变原始的执行流。原创 2023-10-31 11:00:53 · 348 阅读 · 1 评论