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

CPU被挖矿了,却找不到哪个进程

CPU起飞了 最近有朋友在群里反馈,自己服务器的CPU一直处于高占用状态,但用top、ps等命令却一直找不到是哪个进程在占用,怀疑中了挖矿病毒,急的团团转。 ? ?...但神奇的是,这个进程像是隐身了一般,找不到存在的任何痕迹。 进程如何隐藏 现在说回到本文的正题:Linux操作系统上,进程要隐藏起来,有哪些招数?...进程也不例外, Linux系统中有一个特殊的目录:/proc/,这个目录下的内容,不是硬盘上的文件系统,而是操作系统内核暴露出的内核中进程、线程相关的数据接口,也就是procfs,里面记录了系统上正在运行的进程和线程信息...可以从GitHub上下载它们的源码,加入对应的过滤逻辑,在遍历进程的时候,剔除挖矿进程,实现隐藏的目的。...揪出挖矿进程 通过上面的进程隐藏原理看得住来,都是想尽办法隐藏/proc目录下的内容,类似于“障眼法”,所以包含ps、top、ls等等在内的命令,都没办法看到挖矿进程的存在。

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

Roslyn 解决 dotnet core 应用进程间引用找不到 runtimeconfig 依赖文件

我有一个强大的功能,这个功能就是在 Linux 下使用 GDI 转换 EMF 格式图片为 png 图片,但是有一些有趣的图片会让转换的进程炸掉。...因此我就想让转换服务放在独立的进程,通过进程间调用,也就是命令行调用传入参数的方式,让另一个进程转换图片。...而此时就会遇到一个问题,如何让这个进程也被构建,然后输出到输出路径 在 .NET Core 里面,如果想要让输出文件夹包含两个不同的进程入口文件,最简单的方法是让一个项目引用另一个项目。...error MSB3030: 无法复制文件“C:\lindexi\bin\Release\netcoreapp3.1\lindexi.runtimeconfig.json”,原因是找不到该文件 而如果后续你觉得这个原本是输出为可执行文件的进程不想继续作为输出为...,进程执行失败

1.6K30

为何killall有时找不到你的进程?killall是干什么的?

这些方法我不准备一一列举,本文想说明的一个问题是,为什么明明通过ps找到了进程,但是通过killall却说找不到呢?如果你没有遇到过这样的问题?那你更要注意了!...至此我们可以猜测,killall命令会去读取进程在proc文件系统中的stat文件里的名字。那么如果这么名字和你要杀死的进程对不上不就找不到了吗? 至此,想必你已经明白前面问题的原因了。...虽然进程名还是hello,但是killall已经找不到它了,不过: $ killall bianchengzhuji 还是可以的。 为什么会出现这种情况呢?...=auto hello 然后你就会惊喜的发现找不到hello进程。...这种情况下直接改变了程序的命令名,因此ps之类的找不到。 这个时候看命令名是什么呢?

1.5K10

驱动开发:内核中进程与句柄互转

在内核开发中,经常需要进行进程和句柄之间的互相转换。进程通常由一个唯一的进程标识符(PID)来标识,而句柄是指对内核对象的引用。...对于进程PID和句柄的互相转换,可以使用函数如OpenProcess和GetProcessId。OpenProcess函数接受一个PID作为参数,并返回一个句柄。...GetProcessId函数接受一个句柄作为参数,并返回该进程的PID。...进程PID与进程HANDLE之间的互相转换: 进程PID转化为HANDLE句柄,可通过ZwOpenProcess这个内核函数,传入PID传出进程HANDLE句柄,如果需要将HANDLE句柄转化为PID则可通过...将句柄HANDLE转化为进程PID的方法是通过调用ZwQueryInformationProcess内核函数,传入进程句柄和信息类别作为参数,函数返回有关指定进程的信息,包括进程PID。

35010

VC++使用GetProcessTimes获取进程创建时间、销毁时间、用户态时间、内核态时间

一、GetProcessTimes函数简介(微软MSDN) 微软提供了一个非常有用的API函数GetProcessTimes用来获取进程创建时间、销毁时间、用户态时间、内核态时间,msdn连接为:GetProcessTimes...test_GetProcessTimes() { HANDLE processHandle = GetCurrentProcess(); DWORD currentProcessId = GetProcessId...std::cout << "r: " << r << std::endl; } ::CloseHandle(hProcess); } return r; } 三、进一步扩展:获取每个进程一段时间内的...CPU使用率 由于GetProcessTimes 函数可以获取某个进程的在内核模式下执行的时间量和用户模式下执行的时间量(以100纳秒为单位)。...去获取每个进程的在内核模式下执行的时间量和用户模式下执行的时间量,除以sysTotalTime即为该进程的CPU使用率。

36910

4.1 Windows驱动开发:内核中进程与句柄互转

在内核开发中,经常需要进行进程和句柄之间的互相转换。进程通常由一个唯一的进程标识符(PID)来标识,而句柄是指对内核对象的引用。...对于进程PID和句柄的互相转换,可以使用函数如OpenProcess和GetProcessId。OpenProcess函数接受一个PID作为参数,并返回一个句柄。...GetProcessId函数接受一个句柄作为参数,并返回该进程的PID。...4.1.1 进程PID与进程HANDLE转换进程PID转化为HANDLE句柄,可通过ZwOpenProcess这个内核函数,传入PID传出进程HANDLE句柄,如果需要将HANDLE句柄转化为PID则可通过...将句柄HANDLE转化为进程PID的方法是通过调用ZwQueryInformationProcess内核函数,传入进程句柄和信息类别作为参数,函数返回有关指定进程的信息,包括进程PID。

24130

驱动开发:内核中进程与句柄互转

在内核开发中,经常需要进行进程和句柄之间的互相转换。进程通常由一个唯一的进程标识符(PID)来标识,而句柄是指对内核对象的引用。...对于进程PID和句柄的互相转换,可以使用函数如OpenProcess和GetProcessId。OpenProcess函数接受一个PID作为参数,并返回一个句柄。...GetProcessId函数接受一个句柄作为参数,并返回该进程的PID。...进程PID与进程HANDLE之间的互相转换: 进程PID转化为HANDLE句柄,可通过ZwOpenProcess这个内核函数,传入PID传出进程HANDLE句柄,如果需要将HANDLE句柄转化为PID则可通过...将句柄HANDLE转化为进程PID的方法是通过调用ZwQueryInformationProcess内核函数,传入进程句柄和信息类别作为参数,函数返回有关指定进程的信息,包括进程PID。

20130

4.1 Windows驱动开发:内核中进程与句柄互转

在内核开发中,经常需要进行进程和句柄之间的互相转换。进程通常由一个唯一的进程标识符(PID)来标识,而句柄是指对内核对象的引用。...对于进程PID和句柄的互相转换,可以使用函数如OpenProcess和GetProcessId。OpenProcess函数接受一个PID作为参数,并返回一个句柄。...GetProcessId函数接受一个句柄作为参数,并返回该进程的PID。...4.1.1 进程PID与进程HANDLE转换 进程PID转化为HANDLE句柄,可通过ZwOpenProcess这个内核函数,传入PID传出进程HANDLE句柄,如果需要将HANDLE句柄转化为PID则可通过...将句柄HANDLE转化为进程PID的方法是通过调用ZwQueryInformationProcess内核函数,传入进程句柄和信息类别作为参数,函数返回有关指定进程的信息,包括进程PID。

15820

如何在Bash中等待多个子进程完成,并且当其中任何一个子进程以非零退出状态结束时,使主进程也返回一个非零的退出码?

问题 如何在 Bash 脚本中等待该脚本启动的多个子进程完成,并且当这其中任意一个子进程以非零退出码结束时,让该脚本也返回一个非零的退出码? 简单的脚本: #!.../bin/bash for i in `seq 0 9`; do calculations $i & done wait 上述脚本将会等待所有 10 个被创建的子进程结束,但它总会给出退出状态 0...我应该如何修改这个脚本,使其能检测到被创建子进程的退出状态,并且当任何进程以非零代码结束时,让脚本返回退出码 1?.../usr/bin/env bash # 这是一个特殊的 sleep 函数,它将睡眠的秒数作为"错误代码" # 或"返回代码"返回,以便我们可以清楚地看到,实际上 # 我们在每个进程完成时确实获取了它的返回代码...# 存储上一个子进程启动的 pid echo " pid = ${pids[$i]}" done for pid in $pids; do wait $pid rc=$?

600

BattlEye逆向工程师跟踪(4)

处理枚举 该机制将枚举计算机上所有打开的手柄,并标记任何游戏进程手柄。...这样做是为了捕获作弊者,迫使其句柄具有通常无法获得的特定级别的访问权限,因为反作弊寄存器会回调,以防止进程获得游戏进程的内存修改权限。...如果某个进程在游戏进程的打开句柄中被捕获,则会将相关信息(例如访问级别和进程名称)发送到游戏服务器: report_buffer = (__int8 *)malloc(0x2800); report_buffer...= -1 ) { // DUMP OWNING PROCESS NAME target_process_id = GetProcessId...report_buffer, buffer_index, false); free(report_buffer); 流程枚举 shellcode实现的第一个例程是一个包罗万象的功能,用于记录和转储有关所有正在运行的进程的信息

15.2K480

Windows环境下的调试器探究

也就是说如果要想调试进程,就必须要调用DbgkpSuspendProcess将调试进程挂起 首先用调试模式创建进程,然后使用调试循环 如果是异常事件则调用ExceptionHandler ExceptionHandler...InitDebuggeeInfo(DWORD dwPID, HANDLE hProcess) { dwDebuggeePID = dwPID; hDebuggeeProcess = hProcess; } DWORD GetProcessId...InitDebuggeeInfo(DWORD dwPID, HANDLE hProcess) { dwDebuggeePID = dwPID; hDebuggeeProcess = hProcess; } DWORD GetProcessId...InitDebuggeeInfo(DWORD dwPID, HANDLE hProcess) { dwDebuggeePID = dwPID; hDebuggeeProcess = hProcess; } DWORD GetProcessId...显示反汇编代码、寄存器等 /* 硬件断点需要设置在被调试进程的的线程上下文中。 因此当被调试程序触发调试器设置的INT 3断点时,此时设置硬件断点较为合理。

66530

Windows环境下的调试器探究

也就是说如果要想调试进程,就必须要调用DbgkpSuspendProcess将调试进程挂起 首先用调试模式创建进程,然后使用调试循环 如果是异常事件则调用ExceptionHandler ExceptionHandler...InitDebuggeeInfo(DWORD dwPID, HANDLE hProcess) { dwDebuggeePID = dwPID; hDebuggeeProcess = hProcess; } DWORD GetProcessId...InitDebuggeeInfo(DWORD dwPID, HANDLE hProcess) { dwDebuggeePID = dwPID; hDebuggeeProcess = hProcess; } DWORD GetProcessId...InitDebuggeeInfo(DWORD dwPID, HANDLE hProcess) { dwDebuggeePID = dwPID; hDebuggeeProcess = hProcess; } DWORD GetProcessId...显示反汇编代码、寄存器等 /* 硬件断点需要设置在被调试进程的的线程上下文中。 因此当被调试程序触发调试器设置的INT 3断点时,此时设置硬件断点较为合理。

59310
领券