精华内容
下载资源
问答
  • 但在 Windows 系统中使用任务管理器大多数情况下都是为了进程,而在Linux系统中则是为了判断服务器的运行状态是否合理。无论是系统管理员还是普通用户,都需要实时的监控系统进程的运行情况,当系统进程出现错误...

    Linux系统中的进程管理和Windows系统中的任务管理器的作用都是非常类似的。但在 Windows 系统中使用任务管理器大多数情况下都是为了杀死进程,而在Linux系统中则是为了判断服务器的运行状态是否合理。无论是系统管理员还是普通用户,都需要实时的监控系统进程的运行情况,当系统进程出现错误时能够及时关闭一些进程以防止系统出现混乱。 良许Linux系统图片 在Windows系统中,主要使用任务管理器来对进程进行管理,而在Linux系统中主要使用命令行进行进程管理,两者对进程管理的目的都是一样的,即查看系统中运行的程序和进程、判断服务器的健康状态和及时制止不需要的进程等。

    程序就是人们使用计算机语言编写的可以实现一定的功能并且可以解决特定问题的代码的集合。而进程则是正在执行中的程序。当程序被执行时,所执行人的权限、属性以及程序的代码都会被载入内存,操作系统给这个进程分配一个ID,称为PID,即进程ID

    在 Windows 系统中,通常是使用任务管理器来强制关闭没有任何反应的软件,也就是结束进程。这是在诸多进程管理工具和命令中最常见的方法之一,但强制终止进程这种方法在进程的管理工作中并不常用,因为每个进程都有自己正确的结束方法,而强制终止进程则是在正常方法已经失效的情况下的后续步骤。

    1、用来判断服务器的状态。进程管理最主要的工作就是用来判断服务器当前运行的状态是否需要进行手动修改。如果服务器的 CPU 占用率、内存占用率都比较高的话,那么就需要手动去解决这些问题。

    2、查看系统中所有的进程。在进程管理工作中需要查看系统中所有正在运行的进程,通过这些进程可以判断系统中运行了哪些服务、是否有非法服务正在运行以便于及时终止,从而减少内存的占有率。

    以上就是良许教程网为各位朋友分享的Linux系统进程管理和其的作用。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你! 公众号

    展开全文
  • 怎么实现防止被其他进程杀

    千次阅读 2014-11-04 17:37:35
    WINDOWS操作系统下,当我们无法结束或者不知道怎样结束一个程序的时候,或者是懒得去找“退出”按钮的时候,通常会按“CTRL+ALT+DEL”呼出任务管理器,找到想结束的程序,点一下“结束任务”就了事了,呵呵,虽然...
    进程防杀的实现

    在WINDOWS操作系统下,当我们无法结束或者不知道怎样结束一个程序的时候,或者是懒得去找“退出”按钮的时候,通常会按“CTRL+ALT+DEL”呼出任务管理器,找到想结束的程序,点一下“结束任务”就了事了,呵呵,虽然有点粗鲁,但大多数情况下都很有效,不是吗?

    设想一下,如果有这么一种软件,它所要做的工作就是对某个使用者在某台电脑上的活动作一定的限制,而又不能被使用者通过“结束任务”这种方式轻易地解除限制,那该怎么做?无非有这么三种方法:1.屏蔽“CTRL+ALT+DEL”这个热键的组合;2.让程序不出现在任务管理器的列表之中;3.让任务管理器无法杀掉这个任务。对于第一种方法,这样未免也太残酷了,用惯了“结束任务”这种方法的人会很不习惯的;对于第二种方法,在WINDOWS 9X下可以很轻易地使用注册服务进程的方法实现,但是对于WINDOWS NT架构的操作系统没有这个方法了,进程很难藏身,虽然仍然可以实现隐藏,但实现机制较为复杂;对于第三种方法,实现起来比较简单,我的作品:IPGate 网址过滤器 就是采用的这种方式防杀的,接下来我就来介绍这种方法。

    任务管理器的“结束任务”实际上就是强制终止进程,它所使用的杀手锏是一个叫做TerminateProcess()的Win32 API函数,我们来看看它的定义:

    BOOL TerminateProcess(
    HANDLE hProcess; // 将被结束进程的句柄
    UINT uExitCode; // 指定进程的退出码
    );

    看到这里,是不是觉得不必往下看都知道接下来要做什么:Hook TerminateProcess()函数,每次TerminateProcess()被调用的时候先判断企图结束的进程是否是我的进程,如果是的话就简单地返回一个错误码就可以了。真的是这么简单吗?先提出一个问题,如何根据hProcess判断它是否是我的进程的句柄?答案是:在我的进程当中先获得我的进程的句柄,然后通过进程间通讯机制传递给钩子函数,与hProcess进行比较不就行了?错!因为句柄是一个进程相关的值,不同进程中得到的我的进程的句柄的值在进程间进行比较是无意义的。

    怎么办?我们来考察一下我的hProcess它是如何得到的。一个进程只有它的进程ID是独一无二的,操作系统通过进程ID来标识一个进程,当某个程序要对这个进程进行访问的话,它首先得用OpenProcess这个函数并传入要访问的进程ID来获得进程的句柄,来看看它的参数:

    HANDLE OpenProcess(
    DWORD dwDesiredAccess, // 希望获得的访问权限
    BOOL bInheritHandle, // 指明是否希望所获得的句柄可以继承
    DWORD dwProcessId // 要访问的进程ID
    );

    脉络渐渐显现:在调用TerminateProcess()之前,必先调用OpenProcess(),而OpenProcess()的参数表中的dwProcessId是在系统范围内唯一确定的。得出结论:要Hook的函数不是TerminateProcess()而是OpenProcess(),在每次调用OpenProcess()的时候,我们先检查dwProcessId是否为我的进程的ID(利用进程间通讯机制),如果是的话就简单地返回一个错误码就可以了,任务管理器拿不到我的进程的句柄,它如何结束我的进程呢?

    至此,疑团全部揭开了。由Hook TerminateProcess()到Hook OpenProcess()的这个过程,体现了一个逆向思维的思想。其实我当初钻进了TerminateProcess()的死胡同里半天出也不来,但最终还是蹦出了灵感的火花,注意力转移到了OpenProcess()上面,实现了进程防杀。喜悦之余,将这心得体会拿出来与大家分享。


    windowsNT下的通过截获OpenProcess函数来禁止终止本进程的VC代码如下:

    StickyApp32.cpp文件
    #include <windows.h>
    #include "HookAPI.h"
    
    typedef HANDLE (__stdcall *OPENPROCESS_PROC)(DWORD, BOOL, DWORD);
    
    OPENPROCESS_PROC pOpenProcess = NULL;
    
    HANDLE __stdcall OpenProcess_Handler(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId)
    {
    HANDLE RetValue = NULL;
    HWND hWnd;
    DWORD ProcessId;
    
    hWnd = FindWindow("ThunderRT5Form", "StickyApp32";
    
    GetWindowThreadProcessId(hWnd, &ProcessId);
    
    if (dwProcessId != ProcessId)
    RetValue = pOpenProcess(dwDesiredAccess, bInheritHandle, dwProcessId);
    
    return RetValue;
    }
    
    
    __declspec(dllexport) LRESULT CALLBACK HookFunction(int code, WPARAM wParam, LPARAM lParam)
    {
    if (pOpenProcess == NULL)
    pOpenProcess = (OPENPROCESS_PROC)HookAPIFunction(GetModuleHandle(NULL), "KERNEL32.DLL", "OpenProcess", (PROC)OpenProcess_Handler);
    
    return false;
    }
    
    
    BOOL WINAPI DllMain(HANDLE hInst, ULONG dwReason, LPVOID lpReserved)
    {
    switch (dwReason)
    {
    case DLL_PROCESS_ATTACH:
    
    DisableThreadLibraryCalls(hInst);
    
    break;
    }
    
    return true;
    }
    


    HOOKAPI.cpp文件
    // ----------
    // HOOKAPI - Matt Pietrek 1995
    // ----------
    
    #include <windows.h>
    #include "HookAPI.h"
    
    // Macro for adding pointers/DWORDs together without C arithmetic interfering
    
    #define MakePtr(cast, ptr, addValue) (cast)((DWORD)(ptr)+(DWORD)(addValue))
    
    PROC HookAPIFunction(HMODULE hFromModule,
    PSTR pszFunctionModule,
    PSTR pszFunctionName,
    PROC pfnNewProc)
    {
    PROC pfnOriginalProc;
    PIMAGE_DOS_HEADER pDosHeader;
    PIMAGE_NT_HEADERS pNTHeader;
    PIMAGE_IMPORT_DESCRIPTOR pImportDesc;
    PIMAGE_THUNK_DATA pThunk;
    
    DWORD dwProtectionFlags;
    DWORD dwScratch;
    
    // Verify that a valid pfn was passed
    
    if (IsBadCodePtr(pfnNewProc)) return 0;
    
    // First, verify the the module and function names passed to use are valid
    
    pfnOriginalProc = GetProcAddress(GetModuleHandle(pszFunctionModule), pszFunctionName);
    
    if (!pfnOriginalProc) return 0;
    
    pDosHeader = (PIMAGE_DOS_HEADER)hFromModule;
    
    // Tests to make sure we're looking at a module image (the 'MZ' header)
    
    if (IsBadReadPtr(pDosHeader, sizeof(IMAGE_DOS_HEADER))) return 0;
    
    if (pDosHeader->e_magic != IMAGE_DOS_SIGNATURE) return 0;
    
    // The MZ header has a pointer to the PE header
    
    pNTHeader = MakePtr(PIMAGE_NT_HEADERS, pDosHeader, pDosHeader->e_lfanew);
    
    // More tests to make sure we're looking at a "PE" image
    
    if (IsBadReadPtr(pNTHeader, sizeof(IMAGE_NT_HEADERS))) return 0;
    
    if (pNTHeader->Signature != IMAGE_NT_SIGNATURE) return 0;
    
    // We know have a valid pointer to the module's PE header.
    // Now go get a pointer to its imports section
    
    pImportDesc = MakePtr(PIMAGE_IMPORT_DESCRIPTOR, pDosHeader,
    pNTHeader->OptionalHeader.
    DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].
    VirtualAddress);
    
    // Bail out if the RVA of the imports section is 0 (it doesn't exist)
    
    if (pImportDesc == (PIMAGE_IMPORT_DESCRIPTOR)pNTHeader) return 0;
    
    // Iterate through the array of imported module descriptors, looking
    // for the module whose name matches the pszFunctionModule parameter
    
    while (pImportDesc->Name)
    {
    PSTR pszModName = MakePtr(PSTR, pDosHeader, pImportDesc->Name);
    
    if (stricmp(pszModName, pszFunctionModule) == 0) break;
    
    // Advance to next imported module descriptor
    
    pImportDesc++;
    }
    
    // Bail out if we didn't find the import module descriptor for the
    // specified module. pImportDesc->Name will be non-zero if we found it.
    
    if (pImportDesc->Name == 0) return 0;
    
    // Get a pointer to the found module's import address table (IAT)
    
    pThunk = MakePtr(PIMAGE_THUNK_DATA, pDosHeader, pImportDesc->FirstThunk);
    
    // Blast through the table of import addresses, looking for the one
    // that matches the address we got back from GetProcAddress above.
    
    while (pThunk->u1.Function)
    {
    if (pThunk->u1.Function == (PDWORD)pfnOriginalProc)
    {
    dwProtectionFlags = PAGE_READWRITE;
    
    VirtualProtect(&pThunk->u1.Function, 4096, dwProtectionFlags, &dwScratch);
    
    // We found it! Overwrite the original address with the
    // address of the interception function. Return the original
    // address to the caller so that they can chain on to it.
    
    pThunk->u1.Function = (PDWORD)pfnNewProc;
    
    return pfnOriginalProc;
    }
    
    // Advance to next imported function address
    
    pThunk++;
    }
    
    // Function not found
    
    return 0;
    }
    


    Hookapi.h文件

    #ifndef HOOKAPI_H
    #define HOOKAPI_H
    
    PROC HookAPIFunction(HMODULE hFromModule,
    PSTR pszFunctionModule,
    PSTR pszFunctionName,
    PROC pfnNewProc);
    
    #endif


    展开全文
  • 6种进程方案和源码.rar

    热门讨论 2010-09-27 14:30:31
    优点:通用性较强,任意的windows平台均可防止任务管理器杀进程 缺点:只能针对windows任务管理起到防杀作用 5.双进程保护 原理:主进程和守护进程互相监控,发现对方不在就启动对方。为了避免父子进程关系,主进程启动...
  • ---防止windows某个进程被强(ctrl+alt+delete任务管理器)---
  • 内核模式免杀功能可使上机者无法用任务管理器杀掉'定时关机器'进程,更完美的控制上机者的上机时间,避免像大多数同类软件一样可被任务管理器杀掉而无法完成任务. 如果与'意天Windows助手'软件结合还可拥有强大的进程...
  • 强大的自身保护机能可让它在后台运行时不被任务管理器杀掉,以稳定的完成你所设置的关机任务. 力兴定时关机软件可以以隐藏方式在后台运行, 这样只有知道管理密码的人能通过组合键让操作界面显示出来. 力兴定时关机...
  • 执行任何AUTORUN.INF文件 禁止在C盘中新建任何SYS文件 禁止在...防止修改) 禁止私自在Program Files根目录下新建文件 禁止nwscript.exe运行 禁用自动下载连接管理器 禁止未经许可的控件...
  • 内核模式免杀功能可使上机者无法用任务管理器杀掉'定时关机器'进程,更完美的控制上机者的上机时间,避免像大多数同类软件一样可被任务管理器杀掉而无法完成任务. 如果与'意天Windows助手'软件结合还可拥有强大的进程...
  • “定时关机器”内核模式免杀功能可使上机者无法用任务管理器杀掉“定时关机器”进程,更完美的控制上机者的上机时间,避免像大多数同类软件一样可被任务管理器杀掉而无法完成任务。  如果与“意天Windows助手”...
  • 意天定时关机

    2011-12-23 15:13:11
    ' 定时关机器 '内核模式免杀功能可使上机者无法用任务管理器杀掉' 定时关机器 '进程,更完美的控制上机者的上机时间,避免像大多数同类软件一样可被任务管理器杀掉而无法完成任务. 如果与'意天Windows助手'软件结合还...
  • 内核模式免杀功能可使上机者无法用任务管理器杀掉'定时关机器'进程,更完美的控制上机者的上机时间,避免像大多数同类软件一样可被任务管理器杀掉而无法完成任务. 如果与'意天Windows助手'软件结合还可拥有强大的进程...
  • 内核模式免杀功能可使上机者无法用任务管理器杀掉'定时关机器'进程,更完美的控制上机者的上机时间,避免像大多数同类软件一样可被任务管理器杀掉而无法完成任务. 如果与'意天Windows助手'软件结合还可拥有强大的进程...
  • 内核模式免杀功能可使上机者无法用任务管理器杀掉'定时关机器'进程,更完美的控制上机者的上机时间,避免像大多数同类软件一样可被任务管理器杀掉而无法完成任务. 如果与'意天Windows助手'软件结合还可拥有强大的进程...
  • [禁用任务管理器] [禁用系统键] [移花接木] [程序自动启动和被动启动] [穿还原主引导扇区读写] [篡改主页] [系统服务操作] [终止线程(标准方法)] [终结进程] [自动鼠标点击模拟] [获取OS版本] [获取所有操作系统版本...
  • 4、可以禁止或允许使用一下程序:任务管理器、注册表、命令提示符、开始菜单“运行”、本地磁盘 5、对本工具所在目录的文件进行分类。分类方式是按文件类型分类,把相同文件类型整理到同一个文件夹 6、全盘清理...
  • 针对这种情况杀毒软件也无能为力,若两个都是非系统进程,我们可以通过"任务管理器/进程/结束进程树"的方式停掉该进程掉病毒;也可以用工具IceSword(冰刃)中"文件/设置/禁止进线程创建",来停掉其中一个进程,...
  • 单击“系统工具”,然后单击“设备管理器”;  c.展开“IDEATA/ATAPI控制器”节点;  d.双击您的“主要IDE控制器”;  2、CPU和风扇是否正常运转并足够制冷  当CPU风扇转速变慢时,CPU本身的温度就会升高,...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...
  • vc++ 应用源码包_3

    热门讨论 2012-09-15 14:33:15
    任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    任务管理器应该大家都很熟悉,论坛里也有好多的任务管理器的源码,解决CListCtr刷新时滚动条跳到开始处。 VC++实现网络连接查看器源码 非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++...
  • vc++ 开发实例源码包

    2014-12-16 11:25:17
    内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端服务器端。 redui_src_v0.9.130(DirectUI 3D) DirectUI 3D界面库。 sdk(界面库) RINGSDK包含界面库和图象库。 绘MFC基本控件 ) 如题。 ...
  • 迷你版SQL2000服务器

    2015-01-23 17:32:37
    +增加内存管理页,控制SQL Server内存占用,与企业管理器相同。 1.2.1 ^未开启服务时,关闭窗口会退出程序,开启服务时,关窗窗口则是隐藏; *附加数据库时,修正目标目录与源目录相同时无法附加的问题。 1.2.0 ...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    halt执行时,死应用进程,执行sync(将存于buffer中的资料强制写入硬盘中)系统调用,文件系统写操作完成后就会停止内核。若系统的运行级别为0或6,则关闭系统;否则以shutdown指令(加上-h参数)来取代。  ...
  • 计算机应用技术 实用手册 Xnllz 2011.7.29 ...有时候在系统的任务栏你见不到小喇叭有可能在这里被关闭了,即:[DISABLED],遇到这种情况可从新进入COMS把此项打开即可,即:[ENABLED]。 SATA...
  • 如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动上使用该命令。 Diskpart  创建和删除硬盘驱动上的分区。diskpart 命令仅在使用故障恢复控制台时才可用。  diskpart [ /add |/delete] [device_...
  • C#编程经验技巧宝典

    热门讨论 2008-06-01 08:59:33
    4 <br>0008 为程序设置版本和帮助信息 4 <br>0009 设置Windows应用程序启动窗体 5 <br>0010 设置Web应用程序起始页 5 <br>0011 如何设置程序的出错窗口 5 <br>0012 如何进行程序调试 6 ...

空空如也

空空如也

1 2
收藏数 31
精华内容 12
关键字:

windows防止任务管理器杀进程