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

内核中根据进程Pid获取卷的全目录

一丶简介 在内核中有时候想通过PID 获取进程的全路径以达到监控的作用 比如我们设置了进程回调.则可以根据PID看下进程的全路径....二丶原理 原理就是在内核中 通过 ZwQueryInformationProcess 这个未公开的函数 进行查询. 查询好是 ** ProcessImageFileName ** 也就是27号功能....但是查询出来的路径是Dos路径.还需要进行转化. 1.传入PID 使用 ZwOpenProcess打开PID获取Handle 2.使用ZwQueryInfomationProcess*的27号功能(ProcessImageFileName...) 传入 Process的Handle来获取路径. 3.代码实现. 1.首先是未公开的函数获取....NT路径 NTSTATUS GetDosPathByProcessId(ULONG pid) { /* 1.根据PID获取进程句柄 2.使用ZwQueryInformationProcess

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

    【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )

    文章目录 一、Android 命令行中获取要调试的应用进程的 PID 二、进程注入调试进程内存的 so 库 一、Android 命令行中获取要调试的应用进程的 PID ---- 前置博客 【Android...逆向】修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system ) 先安装 Android...模拟器 , 雷电模拟器 3.75 版本 ; 在模拟器中安装要调试的应用后 , 直接运行 ; 执行 dumpsys activity top|grep pid 命令 , 查看当前正在运行的应用的进程号...PID 为 2328 ; 二、进程注入调试进程内存的 so 库 ---- 在 【Android 逆向】修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝...: chmod 777 tool chmod 777 libbridge.so /data/system/debug/tool 工具有了执行权限后 , 开始向 PID 为 2328 的进程注入调试动态库

    73610

    等待子进程的那些事儿

    ,在 SIGCHLD 信号处理器中调用 wait 等待已结束的子进程,回收进程信息,防止产生僵尸进程 (zombie)。...这是通过指定 SA_SIGINFO 标志位,并提供带 siginfo_t 参数的信号处理器来实现的 (info->si_pid 就是结束进程的进程号); 使用 sigaction 可以获取除子进程结束以外的状态变更通知...我们可以为 SIGCHLD 提供一个处理器,虽然在此信号处理器中无需再次等待子进程,但是我们拥有了获取子进程信息的能力,相对而言,比 SIG_IGN 更有用一些。...在处理器中也应使用 waitpid 等待子进程,如返回 ECHILD 错误,证明该子进程是前台进程,已经被同步 wait 掉了,不需要任何处理;否则作为后台进程处理。...可见,当程序中存在 pclose、system 等隐式 wait 调用时,如果同时需要 SIGCHLD 信号处理,则一定不能: 注册为忽略 SIG_IGN; 通过 sigaction 注册并设置 SA_NOCLDWAIT

    2.4K30

    AirPlay Deamon学习(Linux Daemon)

    它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。...守护进程是非交互式程序,没有控制终端,所以任何输出,无论是向标准输出设备stdout还是标准出错设备stderr的输出都需要特殊处理。...一个进程只能为它自己或子进程设置进程组ID号 会话期: 会话期(session)是一个或多个进程组的集合。...; (3)在子进程中调用chdir函数,让根目录 ”/” 成为子进程的工作目录; (4)在子进程中调用umask函数,设置进程的umask为0; (5)在子进程中关闭任何不需要的文件描述符 说明:...为防止这一点,将文件创建掩模清除:umask(0); 处理SIGCHLD信号 处理SIGCHLD信号并不是必须的。但对于某些进程,特别是服务器进程往往在请求到来时生成子进程处理请求。

    1.2K30

    【Linux探索学习】第十八弹——进程等待:深入解析操作系统中的进程等待机制

    signal() 和 sigaction() 注册 SIGCHLD 信号处理函数,用于非阻塞地获取子进程状态。...使用 SIGCHLD 信号等待子进程 信号的知识我们在前面还没进行讲解,这里还是了解为主,感兴趣的可以看看,不懂的地方可以去搜一下: SIGCHLD 信号在子进程状态发生变化时(如退出)发送给父进程。...main() { signal(SIGCHLD, sigchld_handler); // 注册信号处理器 pid_t pid = fork(); if (pid == 0...总结 父进程等待子进程是进程管理中的关键机制。在实际应用中: 简单的任务可以使用 wait()。 更复杂的需求(如非阻塞、多子进程等待)推荐使用 waitpid()。...实时应用可以结合 SIGCHLD 信号处理。 合理地使用这些机制,不仅可以有效管理资源,还能避免僵尸进程的问题,提升程序的健壮性和运行效率。

    14310

    吃土记之GDB调试原理

    执行信号处理函数。 你知道 redis 通过 fork 管道 信号SIGCHLD方式完成持久化。 你知道valgrind通过非侵式方式,在机器码层接管程序,通过跟踪汇编汇总寄存器 栈 来进程内存泄漏。...read_lock(&tasklist_lock); child = find_task_by_pid(pid); // 获取 pid 对应的进程 task_struct 对象 if (...调试进程(如GDB)调用 ptrace(PTRACE_ATTACH, pid, ...) 来使指定的进程进入被追踪模式。...单步调试模式(PTRACE_SINGLESTEP) 单步调试是一个比较有趣的功能,当把被调试进程设置为单步调试模式后,被调试进程没执行一条CPU指令都会停止执行,并且向父进程(调试进程)发送一个 SIGCHLD...我们再来看看,进程是怎么处理 SIGTRAP 信号的。

    1.1K20

    Linux: 关于 SIGCHLD 的更多细节

    僵尸进程 何为僵尸进程? 一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用 wait 或 waitpid 获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。...对该机制有稍微了解的话,不难得知一个关键因素:SIGCHLD。正是这个SIGCHLD起到了通知的作用,所以后面的处理也是基于它而实现。...不用担心 init会挂着一堆僵尸, init本身的设计就有专门回收的处理,所以有多少回收多少; SIGCHLD 还能干嘛 刚才我们在处理到父子进程相关的问题时,多多少少接触到SIGCHLD, 那么,只有在回收子进程的时候才需要用到么...其实wait是对waitpid的封装,专门用来回收子进程退出的信息,同样的,它简单粗暴的设置成了堵塞方式,如果没有任何子进程退出,那么就堵塞住。...而waitpid功能非常强大,pid和options都提供了非常灵活的用法: pid: pid 的绝对值,如果任何子进程的进程组ID等于该值,则该进程组的任一子进程中的进程状态发生变化

    2.9K60

    【Linux信号】四:SIGCHLD信号

    SIGCHLD产生的条件 实际上,在子进程结束的时候,会产生一个SIGCHLD信号,信号描述如下,根据man手册可以知道,子进程结束运行,其父进程会收到SIGCHLD信号,该信号的默认处理动作是忽略。...信号停止时; 子进程处在停止态,接受到SIGCONT后唤醒时; 既然子进程在退出或暂停的时候会发送SIGCHLD信号,那么我们就可以利用该信号,捕捉该信号,并在捕捉函数中完成子进程状态的回收,这样就不用使用...((pid = waitpid(-1, NULL, WNOHANG)) > 0) { /*如果多个子进程同时结束(主控制中没有睡眠sleep),也能保证回收*/...*/ } return 0; } 根据这个例子,我们可以得到下面几点注意事项 子进程继承了父进程的信号屏蔽字和信号处理动作,但子进程没有继承未决信号集spending; 应该在fork...,实际上就是pause的行为,比 如read 想中断pause,首先信号不能被屏蔽; 信号的处理方式必须是捕捉 (默认动作、忽略都不可以); 中断后返回-1, 设置errno为EINTR,表示被信号中断

    17410

    【Linux进程信号】Linux信号机制深度解析:保存与处理技巧

    可重入函数 可重入函数是指可以被多个任务(如线程、进程)同时调用,并且能保证每个任务调用该函数时都能得到正确结果的函数。...设置SIGCHLD信号的处理函数 act.sa_handler = handle; sigemptyset(&act.sa_mask); act.sa_flags...} } return 0; } 父进程设置了SIGCHLD信号的处理函数handle_sigchld,该函数会在子进程状态改变时被调用。...通过信号的捕获、保存、处理以及恢复,我们可以实现对进程行为的精确控制,从而满足各种复杂的系统需求 在本文的学习过程中,我们共同经历了从信号的基本概念到高级应用的逐步深入,见证了信号处理在Linux编程中的广泛应用和重要作用...我们不仅掌握了信号的捕获和处理技巧,还学会了如何在实际开发中灵活运用这些技巧来解决实际问题 学习之路永无止境。

    16410

    sigaction信号处理

    sa_mask 指定的信号集搁置 sa_flags:设置信号处理相关操作 SA_SIGINFO:如果设置,那么采用sa_sigaction;默认采用sa_handler SA_RESETHAND:当调用信号处理函数时...,将信号的处理函数重置为缺省值SIG_DFL SA_RESTART:如果信号中断了进程的某个系统调用,则系统自动启动该系统调用 SA_NODEFER :一般情况下, 当信号处理函数运行时,内核将阻塞该给定信号...si_pid; /* 发送信号的进程ID,对kill(2),实时信号以及SIGCHLD有意义 */ uid_t si_uid; /* 发送信号进程的真实用户ID,对kill...pid, int sig, const union sigval val)第三个参数传递过来的数据 如:siginfo_t.si_value.sival_int或siginfo_t.si_value.sival_ptr..., SIGCHLD, var); SIGCHLD信号被设置,sigaction主动发送一次信号;子进程退出,系统还会调用sig_handler信号处理,此时携带参数为0 参考:http://blog.csdn.net

    52010

    【linux学习指南】SIGCHLD信号

    采⽤第⼀种⽅式,⽗进程阻塞了就不能处理⾃⼰的⼯作了;采⽤第⼆种⽅式,⽗进程在处理⾃⼰的⼯作的同时还要记得时不时地轮询⼀下,程序实现复杂。...其实,⼦进程在终⽌时会给⽗进程发SIGCHLD信号,该信号的默认处理动作是忽略,⽗进程可以⾃定义SIGCHLD信号的处理函数,这样⽗进程只需专⼼处理⾃⼰的⼯作,不必关⼼⼦进程了,⼦进程终⽌时会通知⽗进程...,⽗进程在信号处理函数中调⽤wait清理⼦进程即可。...请编写⼀个程序完成以下功能:⽗进程fork出⼦进程,⼦进程调⽤exit(2)终⽌,⽗进程⾃定义SIGCHLD信号的处理函数,在其中调⽤wait获得⼦进程的退出状态并打印。...%d\n", getpid()); } 这是一个自定义的信号处理函数,用于处理特定的信号(在程序中注册它来处理 SIGCHLD 信号)。当接收到相应信号时,这个函数就会被调用执行。

    9510

    Android 进程保活 的两种实现方式

    android:persistent="true" 网上还提出了设置这个属性的办法,通过实验发现即使设置了这个属性,应用程序被kill之后还是不能重新启动起来的!...可见进程 Visible process 服务进程 Service process 后台进程 Background process 前台进程 Foreground process 如何在程序杀死的清下重启进程...的sa_flags中的SA_NOCLDSTOP选项打开, 当子进程停止(STOP作业控制)时, 不产生此信号(即SIGCHLD)。...僵尸 sigaction函数: 函数功能是:检查或修改与指定信号相关联的处理动作 sigaction(SIGCHLD, &sa, NULL); wait()函数 函数功能是:父进程一旦调用了wait...如何在程序杀死的清下重启进程-----socket方式 进程间通信 思路 创建一个子进程作为socket的的服务端 将主进程作为客户端,通过socket进行连接,当主进程被杀死之后,子进程服务端会受到一个主进程被杀的消息

    6.5K20

    Linux守护进程

    设置 umask 的方法是调用 umask(0)。 5、关闭不再需要的文件描述符 子进程会继承父进程打开的所有文件描述符,这可能导致不必要的资源消耗。...7、其他处理:忽略 SIGCHLD 信号 处理 SIGCHLD 信号不是绝对必要的,但对于某些并发服务器进程尤其重要。...通过将 SIGCHLD 信号的处理方式设置为 SIG_IGN,可以避免僵尸进程的产生。这样,当子进程结束时,内核将其交给 init 进程处理,减少了父进程的负担,从而提高了服务器的并发性能。...信号处理: 捕获 SIGTERM 信号,干净地终止守护进程并进行资源释放。 捕获 SIGHUP 信号,重新加载配置文件(如改变日志文件的路径)。...cleanup_tmp():每隔 10 分钟清理一次 /tmp 目录中的文件。 handle_signal():处理 SIGTERM 和 SIGHUP 信号。

    16510
    领券