zoukankan      html  css  js  c++  java
  • 枚举进程——暴力搜索内存(Ring0)

    上面说过了隐藏进程,这篇博客我们就简单描述一下暴力搜索进程。

    一个进程要运行,必然会加载到内存中,断链隐藏进程只是把EPROCESS从链表上摘除了,但它还是驻留在内存中的。这样我们就有了找到它的方法。

    在内核中,传入进程ID,通过ZwOpenProcess得到句柄,再传入句柄,通过ObReferenceObjectByHandle,可以获得EPROCESS,既然获得了EPROCESS,问题就迎刃而解了。

    既可以选择用加偏移的方法得到进程名,也可以用PsGetProcessFileName来获取进程名。这样就得到了进程的信息。

    所以,我们从0枚举到一个很大的数,比如100000(我们所见过的进程ID没有大过100000的),作为进程ID,为了提高效率,可以只把4的倍数作为进程ID(进程ID都是4的倍数),在Ring3层通过OpenProcess打开,如果得到的句柄不为空,在将其ID传入Ring0层,通过上面的方法,就可以搜索出内存中的所有进程。

    下面是关键部分源码:

      
    BOOLEAN
    GetProcessImageNameByProcessID(/*IN*/ULONG ulProcessID,/*OUT*/char* szProcessImageName,/*OUT*/ULONG* ulProcessNameLen)
    {
        CLIENT_ID Cid;    
        HANDLE    hProcess;
        NTSTATUS  Status;
        OBJECT_ATTRIBUTES  oa;
        PEPROCESS  EProcess = NULL;
        
    
    
        Cid.UniqueProcess = (HANDLE)ulProcessID;
        Cid.UniqueThread = 0;
        
        InitializeObjectAttributes(&oa,0,0,0,0);
    
        Status = ZwOpenProcess(&hProcess,PROCESS_ALL_ACCESS,&oa,&Cid);   
    
        if (!NT_SUCCESS(Status))
        {
            return FALSE;
        }
    
        Status = ObReferenceObjectByHandle(hProcess,FILE_READ_DATA,0,
            KernelMode,&EProcess, 0);
    
        if (!NT_SUCCESS(Status))
        {
    
            ZwClose(hProcess);
            return FALSE;
        }
    
    
        ObDereferenceObject(EProcess);       //上面用过ObReferenceObjectByHandle,所以这里要解一次引用计数
        
    
        *ulProcessNameLen = strlen((const char*)PsGetProcessImageFileName(EProcess));
    
        memcpy(szProcessImageName,(const char*)PsGetProcessImageFileName(EProcess),*ulProcessNameLen);     
            DbgPrint("%s
    ",szProcessImageName);
    
        ZwClose(hProcess);
    }
     
  • 相关阅读:
    5分钟造出好记又难猜的密码!
    拯救你的文档 – 【DevOps敏捷开发动手实验】开源文档发布
    VSALM 动手实验
    #VSTS日志# TFS 2015 Update 2 RC2新功能
    用户故事驱动的敏捷开发 – 1. 规划篇
    精益软件开发与精益管理:从一家关闭的汽车厂重焕青春说起
    创建用户故事地图(User Story Mapping)的8个步骤
    用户故事地图(User Story Mapping)之初体验
    (视频) 基于HTML5的服务器远程访问工具
    比较php字符串连接的效率
  • 原文地址:https://www.cnblogs.com/Gotogoo/p/5257646.html
Copyright © 2011-2022 走看看