获取系统当前的进程及模块信息

获取其他进程加载模块的详细信息 用CreateToolhelp32Snapshot传TH32CS_SNAPMODULE也可枚举模块信息,得到MODULEENTRY32 结构,但是MODULEENTRY32 比较简单,只有基地址和大小等信息,EntryPoint、LoadCount等信息都没有,这些信息在另一个结构LDR_DATA_TABLE_ENTRY中,wrk中多次引用了这个结构,并且用这种方法调试时也能手动遍历模块列表。 阅读详情
1:BOOL EnumProcesses(
    DWORD * lpidProcess,
    DWORD   cb,
    DWORD * cbNeeded
    );
获取当前系统的进程ID列表。lpidProcess为保存进程ID的数组,cb为数组大小,cbNeeded为实际的系统进程数

2:HANDLE OpenProcess(
    DWORD dwDesiredAccess,
    BOOL bInheritHandle,
    DWORD dwProcessId
    );
获取某进程的句柄。dwDesiredAccess为访问标识,bInheritHandle为句柄继承标识,dwProcessId为进程ID

3:BOOL EnumProcessModules(
    HANDLE hProcess,
    HMODULE *lphModule,
    DWORD cb,
    LPDWORD lpcbNeeded
    );
获取某一进程的模块列表。hProcess为进程句柄,lphModule为保存模块句柄的数组,cb为数组大小,lpcbNeeded为进程实际的模块数

4:DWORD GetModuleBaseName(
    HANDLE hProcess,
    HMODULE hModule,
    LPTSTR lpBaseName,
    DWORD nSize
    );
获取模块名称。hProcess为进程句柄,hModule为模块句柄(为NULL时返回进程名称),lpBaseName为保存模块名称的缓冲地址,nSize为缓冲区容量

5:可能有用的API
BOOL GetWindowThreadProcessId(
    HWND hWnd,
    LPDWORD lpdwProcessId
); 获取某窗口所在的进程ID

HANDLE GetCurrentProcess(
); 获取当前进程句柄

HANDLE GetCurrentProcessId(
); 获取当前进程ID

DWORD GetModuleFileNameExA(
    HANDLE hProcess,
    HMODULE hModule,
    LPSTR lpFilename,
    DWORD nSize
); 获取模块对应的文件名

BOOL GetProcessMemoryInfo(
    HANDLE Process,
    PPROCESS_MEMORY_COUNTERS ppsmemCounters,
    DWORD cb
); 获取进程的内存使用情况

BOOL OpenProcessToken(
    HANDLE ProcessHandle,
    DWORD DesiredAccess,
    PHANDLE TokenHandle
); 获取进程的令牌句柄

BOOL AdjustTokenPrivileges(
    HANDLE TokenHandle,
    BOOL DisableAllPrivileges,
    PTOKEN_PRIVILEGES NewState,
    DWORD BufferLength,
    PTOKEN_PRIVILEGES PreviousState,
    PDWORD ReturnLength
); 修改进程的访问令牌

BOOL LookupPrivilegeValue(
    LPCTSTR lpSystemName,
    LPCTSTR lpName,
    PLUID lpLuid
); 获取某一权限对应的LUID

void SetProcessPrivilege( LPCTSTR szPrivilegeName, BOOL bOpen )
{
BOOL bResult;
DWORD dwCurProcId = GetCurrentProcessId();
HANDLE hCurProc;
hCurProc = OpenProcess( PROCESS_ALL_ACCESS, FALSE, dwCurProcId );
DWORD e = GetLastError();
HANDLE hToken;
bResult = OpenProcessToken( hCurProc, TOKEN_ADJUST_PRIVILEGES, &hToken );
bResult = CloseHandle(hCurProc);
LUID luid;
bResult = LookupPrivilegeValue( NULL, szPrivilegeName, &luid );
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
memcpy( &tp.Privileges[0].Luid, &luid, sizeof(LUID) );
tp.Privileges[0].Attributes = bOpen ? SE_PRIVILEGE_ENABLED : 0;
bResult = AdjustTokenPrivileges( hToken, FALSE, &tp, 0, NULL, NULL );
CloseHandle( hToken );
}
Windows-核心编程-04-进程-获取进程 线程 模块(DLL)信息 Windows中获取进程信息. 必须创建一个快照. 你就当是一个相机. 瞬间获取所有神秘的系统内部的事物吧.  这个创建快照的API, 可以用来获得进程使用的堆、模块(DLL)、线程的信息:  CreateToolhelp32Snapshot(DWORD dwFlags,  DWORD th32ProcessID); 这个API包含在TlHelp32.h头文件中. dwFlags是指定用来获 阅读详情

相关推荐

进程模块查看工具-PCHunter

可以查看进程模块,检测DLL注入,手动清除木马病毒神器。

获取进程列表和模块信息

获取本地进程列表与进程模块信息

enjoy5512的博客 9195

如何获取系统指定进程模块信息编程小程序

如何获取系统指定进程模块信息编程小程序,C++.net源代码编写,VisualStudio.net

VC++如何获取目标程序的句柄hProcess

方法一:任务管理器找到程序的PID,通过PID获取hProcessHANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);方法二:使用spy++获取目标程序窗口对应的句柄通过窗口句柄获取PID,再使用方法一的函数获取hProcess HWND wnd = (HWND)0x0003069C;DWORD pid;GetWindowTh...

jiyanglin的博客 3543

Windows系统下LaTeX环境搭建与编辑器配置全攻略

本文详细介绍了在Windows系统下搭建LaTeX环境的完整流程,包括TeX Live的安装、TeXStudio编辑器的配置优化以及常见问题排查。特别针对中文用户推荐使用清华镜像源加速下载,并提供了XeLaTeX编译器配置、中文支持等实用技巧,帮助用户快速上手LaTeX文档编写。

weixin_42554408的博客 449

2 海康视觉平台VisionMaster 上手系列:大纲及准备

海康视觉平台VisionMaster 大纲,课前准备 快速入门 工业机器视觉 机器视觉

HuangGong2022的博客 1万+

【API】获取进程的所有模块名

HMODULE hModule[1024]; DWORD dwRes; HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,GetCurrentProcessId()); //获取的是当前进程ID EnumProcessModules(hProcess,...

weixin_34096182的博客 793

45 - Android系统源码-crosvm 实战:基于 KVM 的 Rust 安全虚拟机监控器核心技术

摘要:crosvm 是 Google 开发的基于 KVM 的轻量级虚拟机监控器(VMM),采用 Rust 语言编写,专为 ChromeOS 和 Android 设计。其核心特点包括: 安全架构:通过 Rust 的内存安全特性和多进程隔离(每个设备运行在独立沙箱进程)大幅降低攻击面 性能优化:基于 KVM 的硬件虚拟化支持,结合异步 I/O (io_uring/epoll) 实现高效设备模拟 模块化设计:清晰的 trait 抽象层(Hypervisor/Vm/Vcpu)支持跨平台扩展 Android 集成

保持专注,保持热爱 226

【操作系统】实验七 显示进程列表

1.在本实验中,我们通过编写一个模块,将它作为Linux内核空间的扩展来执行,并报告模块加载时内核的当前进程信息。为了管理进程,内核必须对每个进程所做的事情进行清楚的描述。编写一个模块,将它作为Linux内核空间的扩展来执行,并报告模块加载时内核的当前进程信息,进一步了解用户空间和内核空间的概念。设计模块遍历进程描述符链表,打印出系统的进程数目、当前进程,并尽量多地打印每个进程的信息。设计并实现一个模块,遍历进程描述符链表,打印出系统的进程数目、当前进程,并尽量多地打印每个进程的信息。查看系统已加载模块。

Robbi_的博客 2115

原理和代码解读:用Diffusion Models高清图像修复(Image Inpainting)

在最近的Diffusion Models应用中,Image Inpainting+ControlNet/Lora等工作在模特衣服生成、家居场景重建等场景中得到了广泛的应用。这篇博客主要介绍Diffusion Models如何在修复高清图像的。

沉迷单车的追风少年 2497

6、掌握 CorelDRAW:从基础操作到创意绘图

本文详细介绍了CorelDRAW的基础操作与创意绘图技巧,涵盖软件使用注意事项、常用快捷键、全局与局部设置的区别、Dockers面板的高效使用,并通过绘制带星星图案的球实例,逐步演示了对象创建、编辑、复制、分布优化、元素添加、颜色与特效调整等核心功能,最后讲解了作品的保存与输出方法,帮助用户从入门到进阶掌握CorelDRAW的设计流程。

snow3的博客 122

列举 Windows 所有进程(ToolHelp)

列举 Windows 所有进程(ToolHelp) 引子 由于这阵子必须得做几个小东西才行,估计着呢,是要做个 Windows 的任务管理器出来才行, 但是在功能上呢,又必须得比 Windows 任务管理器强大一点, 说实在的,在 Windows 7 里面的 Windows 任务管理器在功能上已经很强大了, 而我这里说的强大一点呢,并不是说要在功能上比 Windows 7

flyingleo1981的专栏 1139

错误代码:11300001 数据集 [xxx] 配置错误“=”附近有语法错误(原理分析)

错误代码:11300001 数据集 [1_Workshift] 配置错误“=”附近有语法错误。

码农研究僧的博客 916

php 获取进程 pid,Python获取系统所有进程PID及进程名称的方法示例

本文实例讲述了Python获取系统所有进程PID及进程名称的方法。分享给大家供大家参考,具体如下:psutil模块中提供了进程管理方法,引用其中的几个方法就能够获得进程的相关信息。简单写个小脚本测试一下,顺便看看本机Windows7系统中到底运行着多少个进程,进程都是什么。代码:运行结果:pid-0,pname-System Idle Processpid-4,pname-Systempid-28...

weixin_31766003的博客 521

通信算法之320:DJI无人机云哨--信息包类型

大疆DJI无人机的云哨信息包主要分为四种类型:1)含经纬度位置、型号及序列号的完整数据包;2)仅含序列号的简化数据包;3)完全加密的数据包;4)加密密钥包。这些信息包格式不同,解析方式和应用场景也各异。如需更详细的技术资料,可联系作者获取。

leegang12的专栏 761

反卷积通俗详细解析与nn.ConvTranspose2d重要参数解释

反卷积的作用 卷积中padding的几个概念 No Padding Half(Same) Padding Full Padding 反卷积 反卷积中的Padding参数 反卷积的stride参数 反卷积总结 参考资料

iioSnail的博客 2万+

LInux编写内核系统调用(Ubuntu18.04)

*LInux编写内核系统调用 不要再入坑了!!! 其实所谓的LInux编写内核系统调用就是在他的内核相关的文件里写入相应函数(按内核函数规范),之后重新编译一个内核就可(注意其实就是重新编译了一个内核!!!),只要在这个过程中没有出现什么问题,自然就可以在用户态调用那个自己编写的系统调用!!! 笔者就贴出自己的实验报告,大伙一看就明白了(当然注意其中*.1都是编写内核函数模块的内容,可以说是用来测试的,沿革说不属于主题内容,大家注意下就可) 系统调用用户态获取当前进程相关信息 实验内容: 1.1编写内核可运

weixin_43860330的博客 785

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

c语言查看进程模块,C/C++ 实现windows进程/线程/模块 遍历

#include #include#include#includeBOOL SetProcessPrivilege(char *lpName, BOOL opt);int main(int argc, char *argv[]){PROCESSENTRY32 pe32;MODULEENTRY32 me32;HANDLE hProcess, hSnapshot_proc, hSnapshot_mod...

weixin_39843698的博客 373

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【psutil模块02】Python运维模块之系统进程管理方法

psutil.pids()获取所有PID,使用psutil.Process()接收单个进程的PID,获取进程名、路径、状态、系统资源等。获取当前系统的进程信息,包括进程的启动时间、查看或设置CPU亲和度、内存使用率、IO信息、socket连接、线程数等。psutil提供了popen类的作用是获取用户启动的应用程序进程信息,以便跟踪进程的运行状态。获取进程信息的常见方法。

运维&陈同学的博客 358

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

内核模块遍历进程和任务队列保存到proc文件中

实现一个模块用它遍历当前进程的父进程和任务队列,并将遍历的结果输出到一个proc 文件中(遍历可以从 current 当前进程开始,父进程遍历到初始化进程,遍历任务队列可以利用 for_each_process 宏)。下面是我的内核模块的实现部分:/************************************************************ * 使用内核模块从当前进程

hongbochen1223的专栏 1988

Linux操作系统实验报告单(13) 显示进程列表

本实验通过编写Linux内核模块实现进程管理功能,主要完成三个任务:1)编写"hello world"测试模块;2)设计模块遍历进程描述符链表并打印进程信息(PID、状态等);3)实现系统调用并编写用户测试程序。实验过程中解决了Makefile缩进格式错误、内核日志刷新等问题,通过dmesg调试技巧查看模块输出。实验加深了对内核空间/用户空间差异的理解,验证了内核模块开发的灵活性,无需重新编译内核即可测试代码。实验结果为后续更深入的进程信息采集和内核开发奠定了基础。

小李独爱秋的博客 2202

学习node.js 二 path模块,os模块,process

和之前的os.arch一样。

tian_liang_jia的博客 1287

基于visual c++之windows核心编程代码分析(19)枚举进程以及进程加载模块信息

我们进行Windows安全编程的时候,经常需要检测进程,我们来实践一下枚举进程与进程加载模块。请见代码实现与注释分析。     [cpp] view plain copy /* 头文件 */   #include    #include    #include    #include    /* 预处理声明 */   #pragm

flyingleo1981的专栏 1347

nodejs 获取系统环境变量_Nodejs入门:process模块

模块概览process是node的全局模块,作用比较直观。可以通过它来获得node进程相关的信息,比如运行node程序时的命令行参数。或者设置进程相关信息,比如设置环境变量。环境变量:process.env使用频率很高,node服务运行时,时常会判断当前服务运行的环境,如下所示if(process.env.NODE_ENV === 'production'){ console.log('生...

weixin_39609670的博客 1775
上一篇: IO重定向
下一篇: PE文件格式详解(1)
Matrix_Designer
博客等级 码龄16年 58粉丝 296原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值