首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux Hook技术实践

LInux Hook技术实践 什么是hook 简单的说就是别人本来是执行libA.so里面的函数的,结果现在被偷偷换成了执行你的libB.so里面的代码,是一种替换。...为什么hook 恶意代码注入 调用常用库函数时打log 改变常用库函数的行为,个性化 怎么hook 这个东西在win里面有现成的api,但是在linux里面却要主动修改ELF文件,或者修改动态库链接路径...所以这里提供一种简单的方法来hook 下面直接demo吧 /*myselect.c*/ #define _GNU_SOURCE #include #include <stdio.h...举个例子: 某些系统上select的实现可能与众不同,在没有fd就绪时,并不阻塞,而是忙等,这时便可以通过hook技术,在select中插入usleep,达到释放cpu的作用。

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

调用NtCreateUserProcess创建进程绕过杀软hook

如果发生这种情况,则有可能正在访问的内存只是描述进程的结构的相对偏移量,而不是实际的内存地址,初始化ProcessParameters的代码如下 RtlCreateProcessParametersEx...因为我们是在堆里面分配的空间,需要用RtlFreeHeap释放堆空间,使用RtlDestroyProcessParameters()释放存储在RTL_USER_PROCESS_PARAMETERS结构中的进程参数...x64dbg的ntdll.h文件,链接如下:https://github.com/x64dbg/TitanEngine/blob/x64dbg/TitanEngine/ntdll.h 实现效果如下 父进程欺骗...我们在使用CreateProcess创建进程的时候能通过设置特定的参数来达到欺骗的效果,在NtCreateUserProcess里面也同样能够做到 这里我们首先看一下之前我们生成的进程,可以看到父进程为...explorer 添加代码即可伪造父进程为explorer

1.8K20

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

PE文件隐藏可以通过 •进程伪装: 将进程名替换成其他正常进程的名称(修改PEB路径和命令行信息)•傀儡进程: 通过将主进程挂起,替换内存数据,卸载镜像,修改上下文,并执行真正我们想要执行的进程,这也是一些壳的原理...•HOOK: 通过HOOK三环最底层APIZwQuerySystemInformation实现隐藏,这是本文的重点•COM劫持、DLL劫持、DLL注入.........SystemInformationLength, _Out_opt_ PULONG ReturnLength); 如果通过hook...实现代码 hook函数 void hookZwQuerySystemInformation(){ //获取ZwQuerySystemInformation的地址 HMODULE hntdll...可以看到QQ进程信息已经剔除 思考 如何将所有进程钩住? 使用全局钩子,这里我认为是两个知识点,就不继续展开说了。 ?

1.8K70

调用NtCreateUserProcess创建进程绕过杀软hook

如果发生这种情况,则有可能正在访问的内存只是描述进程的结构的相对偏移量,而不是实际的内存地址,初始化ProcessParameters的代码如下 RtlCreateProcessParametersEx...因为我们是在堆里面分配的空间,需要用RtlFreeHeap释放堆空间,使用RtlDestroyProcessParameters()释放存储在RTL_USER_PROCESS_PARAMETERS结构中的进程参数...x64dbg的ntdll.h文件,链接如下:https://github.com/x64dbg/TitanEngine/blob/x64dbg/TitanEngine/ntdll.h 实现效果如下 父进程欺骗...我们在使用CreateProcess创建进程的时候能通过设置特定的参数来达到欺骗的效果,在NtCreateUserProcess里面也同样能够做到 这里我们首先看一下之前我们生成的进程,可以看到父进程为...explorer 添加代码即可伪造父进程为explorer

1.3K30

linux通过进程名杀死进程_linux关闭进程命令

笔记:根据一个进程的名字或启动此进程的命令(连续的一部分即可)杀死进程 一、使用单条命令 ps -ef | grep 进程名/启动进程的命令 | grep -v grep | awk ‘{print $2...}’ | xargs kill -9 执行结果: [1]-  已杀死               sleep 200 [2]+  已杀死               sleep 200 二、编写脚本 linux.../bin/bash # 脚本名:kill_process.sh # 脚本功能:强制杀死进程 方式kill -9     # 1通过ps查询进程的id     # 2使用kill -9 强制终止进程...函数功能:根据进程名杀死程序     参数:进程名     返回值:无 !...————————————————————— # 根据进程名查询包含进程名的进程 并排除grep查询进程和此脚本进程 ps -ef | grep “$pName” | grep -v grep | grep

15.8K20

Linux进程学习【进程状态】

本文将会带着大家认识的各种 进程 状态 ---- 正文 在谈 进程状态 之前,首先要回顾下之前的 进程 相关知识 OS管理的本质是先描述,再组织 OS并非直接管理 进程 ,而是管理 进程 的 PCB(...,即把手机揣进兜里,然后 专心执行走路这个 进程 进程状态 进程 有各种运行状态,方便OS进行管理,在 Windows 中,进程 状态是这样的 而在我们 Linux 中,新建、就绪、运行都可以看作...运行 R 这一个状态,所以比较清晰 而我们今天要学习的正是 Linux 中的 进程 状态 进程是何种状态,取决于此进程的PCB在哪里排队 ️运行 R 首先来看看第一种状态 R 以我们以往的认知来说...父进程,此时 子进程 会被OS领养 子进程 的 父进程 变为 1号进程进程 就变成了一个 孤儿进程 发出指令终止 父进程 假设 子进程 不被 1号进程 领养 子进程 退出时就会无人回收...,成为一只游离的僵尸 僵尸进程 有 内存泄漏 的风险 因此 子进程 会被OS领养 ---- 总结 以上就是关于进程学习【进程状态】的全部内容了,我们简单学习了 进程 的相关状态,知道了何为 阻塞、进程

17730

Linux进程学习【进程地址】

,这种行为称为 写时拷贝 刚开始,父子进程共同使用同一块空间 当子进程修改共享值后 ---- 进程地址空间 下面来好好谈谈 进程地址空间 (虚拟地址) ️虚拟地址 在早期程序中,是没有虚拟地址空间的...因为每个进程都有属于自己的空间,OS 在管理进程时,能够以统一的视角进行管理,效率很高 光有 虚拟地址空间 是不够的,还需要一套完整的 ‘‘翻译’’ 机制进行程序寻址,如 Linux 中的 页表 +...后续对这块进行写入操作时,会直接拒绝 对于这种机制感兴趣的同学可以点击下面这几篇文章查看详细内容: Linux的虚拟内存详解(MMU、页表结构) ARM体系架构——MMU 逻辑地址、页表、MMU等...️写时拷贝 Linux 中存在一个很有意思的机制:写时拷贝 这是一种 赌bo 行为,OS 此时就赌你不会对数据进行修改,这样就可以 使多个 进程 在访问同一个数据时,指向同一块空间,当发生改写行为时...(权限设置) 将 进程管理 和 内存管理 进行 解耦,方便 OS 进行更高效的管理 可以让进程以统一的视角看待自己的代码和数据 ---- 总结 以上就是本篇关于 Linux进程学习【进程地址】的全部内容了

13820

Linux进程调度_linux进程的查看和调度

对于处理器消耗型的进程,调度策略往往是降低他们的执行频率,延长运行时间。 Linux 系统为了提升响应的速度,倾向于优先调度 I/O 消耗型。...一、普通进程Linux 中普通进程依赖称之为 nice 值 的东东来进行进程的优先级描述。nice 值的范围是 [-20, 19]。...—— 小结 实时进程优先级:value 越高,优先级越大 普通进程优先级:nice值越高,普通进程的优先级越小 任何实时进程的优先级 > 普通进程 Linux 调度算法 ---- Linux 中有一个总的调度结构...Linux 调度时机 ---- 一、进程切换 从进程的角度看,CPU是共享资源,由所有的进程按特定的策略轮番使用。...也可以用 pidstat -w 命令查看进程切换的每秒统计值: pidstat -w 1 Linux 3.10.0-229.14.1.el7.x86_64 (bj71s060) 02/01/2018

20.5K10

【Android 插件化】Hook 插件化框架 ( 从 Hook 应用角度分析 Activity 启动流程 二 | AMS 进程相关源码 | 主进程相关源码 )

插件化框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理 ) 【Android 插件化】Hook 插件化框架 ( Hook 实现思路 | Hook 按钮点击事件 ) 【Android...插件化】Hook 插件化框架 ( Hook Activity 启动过程 | 静态代理 ) 【Android 插件化】Hook 插件化框架 ( 从 Hook 应用角度分析 Activity 启动流程...一 | Activity 进程相关源码 ) 【Android 插件化】Hook 插件化框架 ( 从 Hook 应用角度分析 Activity 启动流程 二 | AMS 进程相关源码 | 主进程相关源码...三、博客资源 ---- 前言 上一篇博客 【Android 插件化】Hook 插件化框架 ( 从 Hook 应用角度分析 Activity 启动流程 一 | Activity 进程相关源码 ) 分析了...Activity 启动流程中 , Activity 进程中相关调用链涉及的源码 ; 本博客中着重分析 AMS 中涉及到的源码 和 AMS 启动主进程 Activity 源码 ; ---- 一、ActivityManagerService

81410

Linux】静态进程和动态进程

引言 在Linux环境中,进程的加载方式涉及到静态进程和动态进程两个概念。这两种方式都有各自的优势和劣势,而正确选择加载方式对于应用程序的性能和管理至关重要。...本文将深入探讨静态进程和动态进程的特点、优劣势,并为你提供在不同场景下的选择建议。 1....静态进程适用于不经常更新和部署的应用,以及对独立性和部署简便性要求较高的环境。 2. 动态进程 动态进程是一种加载方式,它在程序运行时依赖外部的共享库(动态链接库)。...相对于静态进程,动态进程的可执行文件较小,因为它只包含程序自身的代码,而共享库的加载则在程序启动时由动态链接器完成。...无论选择静态进程还是动态进程,了解它们的特点以及在不同情况下的适用性,可以帮助开发者更好地优化程序的性能和管理。 结论 静态进程和动态进程各有优劣,选择合适的加载方式取决于项目的具体需求。

10510

Linux进程编程

Linux进程编程 3.1 fork系统调用 3.1.1 fork工作原理 3.1.2 fork函数 3.1.3 fork编程示例 3.1.4 小结 3.2 exec系统调用 3.2.1 exec函数族作用...执行过程如下: Linux内核在进程表中为子进程分配一个表项,然后分配PID。...子进程表项的内容来自父进程,fork会将父进程的表项复制为副本,并分配给子进程Linux内核使父进程的文件表和索引表的节点自增1,创建用户及上下文; 将父进程上下文复制到子进程上下文空间中; fork...这里的可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。...我们应该明白了,Linux下是如何执行新程序的,每当有进程认为自己不能为系统和用户做出任何贡献了,他就可以发挥最后一点余热,调用任何一个exec,让自己以新的面貌重生;或者,更普遍的情况是,如果一个进程想执行另一个程序

7.8K20

Linux进程基础

这个进程是执行/bin/init这一文件(程序)生成的。当Linux启动的时候,init是系统创建的第一个进程,这一进程会一直存在,直到我们关闭计算机。这一进程有特殊的重要性,我们会不断提到它。...如何创建一个进程 实际上,当计算机开机的时候,内核(kernel)只建立了一个init进程Linux内核并不提供直接建立新进程的系统调用。剩下的所有进程都是init进程通过fork机制建立的。...当进程fork的时候,Linux在内存中开辟出一片新的内存空间给新的进程,并将老的进程空间中的内容复制到新的空间中,此后两个进程同时运行。...进程与线程(thread) 尽管在UNIX中,进程与线程是有联系但不同的两个东西,但在Linux中,线程只是一种特殊的进程。多个线程之间可以共享内存空间和IO接口。...所以,进程Linux程序的唯一的实现方式。 总结 程序,进程,PID,内存空间 子进程,父进程,PPID,fork, wait 觉得本文对你有帮助?请分享给更多人。

5K40

linux进程管理

一.基本介绍 1.在 LINUX 中,每个执行的程序(代码)都称为一个进程。...每一个进程都分配一个 ID 号 2.每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程 3.每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。...查看进程树 pstree [选项] -p 查看进程pid -u 查看进程所属用户 三.结束进程 kill 进程号 #停止进程 kill-9 进程号 #强迫进程立即停止 killall...进程名称 #停止所有相同的进程名称 四.ps指令详解 BSD风格 详解 user 用户名称 pid 进程号 %cpu 进程占用cpu百分比 %%mem 进程占用物理内存的百分比 vsz...stat 进程状态 S:睡眠 s:会话的先导进程 N:进程拥有比普通优先级更低的优先级 R:正在运行 D:短期等待 Z:僵尸进程 T:被跟踪或者被停止 start 进程启动时间 time

8K10

Linux进程状态

二.通过系统调用获取标识符 linux中可以通过 系统调用接口:getpid 获取该进程的PID,getppid可以获取父进程的PID  例: #include #include...} 三.fork函数的认识与理解 fork认识  linux输入 man fork 可以看到以上信息:       1.fork包含在头文件 中;       2.返回值是 pid_t...一般情况下,子进程和父进程也是共享数据的,但是一直共享数据也不现实,因为当我们要修改数据时,会把两个进程的数据都改了,这并不是我们想要的,但是重新开一块空间拷贝父进程的数据又有点浪费,所以linux就使用了一种叫写时拷贝的技术...linux进程的状态 linux中的进程状态分为这几种 static const char * const task_state_array[] = { "R (running)", /* 0...孤儿进程 如果父进程先退出,子进程就称之为“孤儿进程”,此时孤儿进程在后台运行; 孤儿进程会被1号init进程领养,最后由init进程回收; 孤儿进程退出不会成为僵尸进程,因此也不会资源泄露。

16310

linux进程调度

调度策略 进程可以分为实时进程和普通进程,对于这两种不同类型的进程肯定有不同的调度策略,task_struct中的policy就用来表示调度策略。...task_struct中配有优先级,需要注意的是优先级数越小优先级越高,实时进程的优先级处于099之间,普通进程的优先级处于100139。...普通调度策略有 SCHED_NORMAL, SCHED_BATCH,SCHED_IDLE SCHED_NORMAL:普通的进程 SCHED_BATCH:后台进程 SCHED_IDLE:空闲时运行的进程...,可以打断所有其他进程,并且该进程不会被抢占 rt_sched_class:RR算法或者FIFO算法的调度策略,具体由该进程的task_struct->policy决定。...CFS为每个进程定义一个虚拟运行时间vruntime,每次总是选择vruntime最小的那个进程进程得到处理机后变随着其运行时间的增加 增加其vruntime。

8K20

Linux 进程总结

进程创建的进程(通常称为子进程),它们和父进程存在隶属关系。子进程又可以创建进程,这样形成一个进程家族。子进程可以继承其父进程几乎所有的资源。 ?...孤儿进程 孤儿字面意思就是没有父母的孩子,那孤儿进程的意思就是没有父进程进程。这种情况是怎么发生的呢?就是父进程先于子进程结束,这时子进程被init进程收养,init的进程号为1。...僵尸进程 当一个子进程终止时,如果它的父进程还在运行,内核会为这个终止的子进程保留一定量的信息。父进程可以根据这些信息知道子进程的情况。直到父进程对其进行了善后处理,子进程才会完全终止。...进程组 每个进程都属于某个进程组。进程组是一个或多个进程的集合。通常它们与同一作业相关联,可以接收来自同一终端的各种信号。每个进程组有一个唯一的进程组ID。...每个进程组都有一个组长进程进程ID等于进程组ID的进程就是组长进程。 ? 会话 会话(session)是一个或多个进程组的集合。

5.5K20
领券