这种枚举的方法是通过ntdll.dll提供的API函数ZwQuery?SystemInformation()来实现,此方法比前面所提供的方法复杂一些,

下面提供实际的代码如下:

#include <windows.h>
#include <ntsecapi.h>
#include <stdio.h>
typedef DWORD (WINAPI *ZWQUERYSYSTEMINFORMATION) (DWORD,PVOID,DWORD,PDWORD);
typedef struct _SYSTEM_PROCESS_INFORMATION{DWORD NextEntryDelta;DWORD ThreadCount;DWORD Reserved[6];FILETIME ftCreateTime;FILETIME ftUserTime;UNICODE_STRING ProcessName;DWORD BasePriority;DWORD ProcessID;DWORD InheritedFromProcessID;DWORD HandleCount;DWORD Reserved2[2];DWORD VmCounters;DWORD dCommitCharge;PVOID ThreadInfos[1];
}SYSTEM_PROCESS_INFORMATION,* PSYSTEM_PROCESS_INFORMATION;
#define SystemProcessesAndThreadsInformation 5
void main()
{HMODULE hNtDLL=GetModuleHandle("ntdll.dll");if(!hNtDLL)return;ZWQUERYSYSTEMINFORMATION ZwQuerySystemInformation=(ZWQUERYSYSTEMINFORMATION)GetProcAddress(hNtDLL,"ZwQuerySystemInformation");ULONG cbBuffer=0x10000; // 设置缓冲区的大小,与系统有关LPVOID pBuffer=NULL;pBuffer=malloc(cbBuffer);if(pBuffer==NULL)return;ZwQuerySystemInformation(SystemProcessesAndThreadsInformation,pBuffer,cbBuffer,NULL);PSYSTEM_PROCESS_INFORMATION  pInfo=(PSYSTEM_PROCESS_INFORMATION)pBuffer;for(;;){printf("ProcessID: %d (%ls) \n",pInfo->ProcessID,pInfo->ProcessName.Buffer);if(pInfo->NextEntryDelta ==0)break;// 查找下一个进程结构地址pInfo=(PSYSTEM_PROCESS_INFORMATION)(((PUCHAR)pInfo)+pInfo->NextEntryDelta);}free(pBuffer);
}

但是运行的时候程序根本就起不来

通过ntdll.dll提供的API函数实现当前进程的枚举相关推荐

  1. 如何利用ffmpeg提供的API函数进行多媒体文件的解封装

    多媒体已经无处不在,程序员必须知道的一些多媒体封装知识 如何利用ffmpeg提供的API函数进行多媒体文件的解封装. 上一篇文章我们搭好了环境并编译出所需的ffmpeg库,本篇我们讨论如何利用ffmp ...

  2. windows黑客编程系列(九):使用ntdll.dll中并未公开的API进行压缩

    文章目录 压缩技术 利用WIN32自带API实现数据压缩 WIN API RtlGetCompressionWorkSpaceSize RtlCompressBuffer RtlDecompressB ...

  3. c语言中ntdll.dll,在Win32环境中从ntdll.dll调用Nt函数,C

    我想从ntdll.dll调用一些Nt函数,我就是这样做的. 对于调用:NtTestAlert(),您需要典型的ntcall内核例程,可通过int 2Eh访问. (从这里我得到Nt功能http://un ...

  4. ntdll.dll学习总结

    ntdll.dll ntdll.dll描述了windows本地NTAPI的接口.是重要的Windows NT内核级文件.当Windows启动时,ntdll.dll就 驻留在内存中特定的写保护区域,使别 ...

  5. 用Debug函数实现API函数的跟踪

    用Debug函数实现API函数的跟踪 如果我们能自己编写一个类似调试器的功能,这个调试器需要实现我们对于跟踪监视工具的要求,即自动记录输入输出参数,自动让目标进程继续运行.下面我们就来介绍在不知道函数 ...

  6. 动态链接库DLL创建及导出函数、调用DLL

    1.动态链接库(dll)概述 没接触dll之前觉得它很神秘,就像是一个黑盒子,既不能直接运行,也不能接收消息.它们是一些独立的文件,其中包含能被可执行程序或其他dll调用来完成某项工作的函数,只有在其 ...

  7. 【原创】vegas提示NTDLL.DLL出错的解决办法

    ntdll.dll是什么?ntdll.dll出错怎么办?ntdll.dll位置在哪?ntdll.dll下载之后放在哪里?请看本文详解.ntdll.dll下载地址:点击下载 ntdll.dll文件分析 ...

  8. C++文件操作API函数介绍

    转自 http://www.studentblog.net/m/tonycat/archives/2006/26364.html 文件的基本概念 所谓"文件"是指一组相关数据的有序 ...

  9. GPIO子系统下的API函数

    GPIO子系统下的API函数 1.GPIO子系统下的API函数 1.1.gpio_request 函数 1.2. gpio_free 函数 1.3. gpio_direction_input 函数 1 ...

最新文章

  1. 1.1.linux命令.概要学习
  2. 1.8 分割字符串(spilt())
  3. 【个人申明】主要发表平台迁至简书和公众号
  4. 微信竟然可以查出行轨迹了,预计又一波情侣要分手?
  5. Visual Studio Code 使用 ESLint 增强代码风格检查 - gyzhao - 博客园
  6. python实现链表的删除_Python垃圾回收机制
  7. mysql 扩展存储过程_MySQL4:存储过程和函数
  8. 如何写出更好的代码(文末有福利)
  9. 【成功不是等来的】生意不好问人不如问己!谈真实经验!
  10. MyBatis的懒加载(延迟加载)
  11. 理解 TCP(二):报文结构 1
  12. 拓端tecdat|Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化
  13. 软考高级系统分析师考试2022论文考了些啥?改为二选一
  14. 面试智力题:赛马问题求前几名
  15. 倪光南:解读中国ISV生存现状
  16. tensorflow 版本列表_tensorflow各个版本的CUDA以及Cudnn版本对应关系
  17. 【AI视野·今日CV 计算机视觉论文速览 第215期】Tue, 8 Jun 2021
  18. 7.24[C语言零基础 知识点总结]
  19. 01-查看Navicat加密的数据库密码
  20. 【双足机器人(3)】3D线性倒立摆Python仿真(附代码)

热门文章

  1. 拼多多api接口php算法,PHP 调用 拼多多 API 模板
  2. 利用计算机信息资源管理方式,第四章信息资源管理
  3. linux off_t类型的头文件,linux下32位机与64位机基本数据类型长度对比
  4. mysql 多物理机_MySQL 5.6同一物理主机配置多实例
  5. C++程序代码:利用【函数】——画正三角形、倒三角形
  6. Spring源码分析之ProxyFactoryBean方式实现Aop功能的分析
  7. 怎样分析 JAVA 的 Thread Dumps
  8. 【转】动态链接库(Dynamic Link Library)学习笔记
  9. day02-虚拟环境安装
  10. Ubuntu 16.04 orb-slam2配置