[WinApi]内存基本操作Review

简介:

Pnig0s1992:

列出当前系统信息,当前系统内存状况。

枚举进程,列出每个进程所有内存块的页面类型,页面属性,保护属性等信息

 

 
  1. //Code by Pnig0s1992 
  2. //Date:2012,3,15 
  3. #include <stdio.h> 
  4. #include <Windows.h> 
  5. #include <TlHelp32.h> 
  6.  
  7. VOID getMemoryInfo(SYSTEM_INFO si,HANDLE hProcess); 
  8.  
  9. int main(void
  10.     SYSTEM_INFO si; 
  11.     MEMORYSTATUS ms; 
  12.     ms.dwLength = sizeof(ms); 
  13.     GetSystemInfo(&si); 
  14.     printf("\n当前内存页大小%uKB",si.dwPageSize/1024); 
  15.     printf("\n小于0x%x为系统保留区.",si.lpMinimumApplicationAddress); 
  16.     printf("\n大于0x%x为系统内核区.",si.lpMaximumApplicationAddress); 
  17.     printf("\nCPU数量:%u",si.dwNumberOfProcessors); 
  18.     GlobalMemoryStatus(&ms); 
  19.     printf("\n当前系统内存使用率:%u%%:",ms.dwMemoryLoad); 
  20.     printf("\n当前系统总物理内存:%uM",ms.dwTotalPhys/1024/1024); 
  21.     printf("\n当前系统可用物理内存:%uM",ms.dwAvailPhys/1024/1024); 
  22.     printf("\n当前系统总虚拟内存:%uM",ms.dwTotalVirtual/1024/1024); 
  23.     printf("\n当前系统可用虚拟内存:%uM",ms.dwAvailVirtual/1024/1024); 
  24.     printf("\n当前系统总页文件:%uM",ms.dwTotalPageFile/1024/1024); 
  25.     printf("\n当前系统可用页文件:%uM",ms.dwAvailPageFile/1024/1024); 
  26.     PROCESSENTRY32 pe32; 
  27.     pe32.dwSize = sizeof(pe32); 
  28.     HANDLE hProcessSnap; 
  29.     hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); 
  30.     if(hProcessSnap == INVALID_HANDLE_VALUE) 
  31.     { 
  32.         printf("\n获取进程快照失败"); 
  33.         return -1; 
  34.     }else 
  35.     { 
  36.         Process32First(hProcessSnap,&pe32); 
  37.         do  
  38.         { 
  39.             printf("\n当前进程名:%S PID:%u",pe32.szExeFile,pe32.th32ProcessID); 
  40.             if(pe32.th32ProcessID != GetCurrentProcessId()) 
  41.             { 
  42.                 HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,pe32.th32ProcessID); 
  43.                 getMemoryInfo(si,hProcess); 
  44.             } 
  45.         } while (Process32Next(hProcessSnap,&pe32)); 
  46.     } 
  47.     system("pause"); 
  48.     return 0; 
  49.  
  50. VOID getMemoryInfo(SYSTEM_INFO si,HANDLE hProcess) 
  51.     printf("\n内存地址 保护属性 页面类型"); 
  52.     DWORD dwCurPos = (DWORD)si.lpMinimumApplicationAddress;//第一次查询位置为可访问的最小内存地址 
  53.     while(dwCurPos <(DWORD)si.lpMaximumApplicationAddress) //结束条件为最大内存地址 
  54.     { 
  55.         MEMORY_BASIC_INFORMATION mbi; 
  56.         DWORD dwRc = VirtualQueryEx(hProcess,(LPVOID)dwCurPos,&mbi,sizeof(mbi)); 
  57.         printf("\n0x%x %u %u",mbi.BaseAddress,mbi.AllocationProtect,mbi.Type); 
  58.         dwCurPos = (DWORD)mbi.BaseAddress+mbi.RegionSize;//当前块儿基址加块儿大小 
  59.     } 

 

 











本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/807029,如需转载请自行联系原作者

相关文章
|
机器学习/深度学习 人工智能 边缘计算
AI技术在医学影像诊断中的应用
传统的医学影像诊断需要耗费大量时间和人力,而随着人工智能技术的发展,AI在医学影像诊断中的应用也日益广泛。本文将探讨AI技术在医学影像诊断中的应用现状和未来发展,以及其对医疗行业的深远影响。
700 28
|
机器学习/深度学习 人工智能 算法
UCLA、MIT数学家推翻39年经典数学猜想!AI证明卡在99.99%,人类最终证伪
近日,加州大学洛杉矶分校和麻省理工学院的数学家团队成功推翻了存在39年的“上下铺猜想”(Bunkbed Conjecture),该猜想由1985年提出,涉及图论中顶点路径问题。尽管AI在研究中发挥了重要作用,但最终未能完成证明。人类数学家通过深入分析与创新思维,找到了推翻猜想的关键证据,展示了人类智慧在数学证明中的不可替代性。成果发表于arXiv,引发了关于AI在数学领域作用的广泛讨论。
389 89
|
供应链 搜索推荐 数据挖掘
跨境电商圣诞节选品大揭秘:看板如何帮助提升选品效率?
本文探讨了跨境电商在圣诞期间的选品策略,涵盖利用大数据平台、社交媒体监测、竞争对手分析及行业趋势研究等方法。同时介绍了选品流程优化及板栗看板在选品工作中的应用,帮助卖家精准选品,提升销售业绩。
跨境电商圣诞节选品大揭秘:看板如何帮助提升选品效率?
|
安全 测试技术 Android开发
移动应用开发
移动应用开发
336 9
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习:从基础到前沿
本文将带你走进深度学习的世界,从基础概念到前沿应用,让你对深度学习有更深入的理解。我们将通过简单易懂的语言和生动的比喻,让你轻松掌握深度学习的核心知识。同时,我们还会分享一些实用的技巧和方法,帮助你更好地运用深度学习解决实际问题。无论你是初学者还是有一定基础的学习者,这篇文章都将为你提供有价值的参考和启示。让我们一起探索深度学习的奥秘吧!
432 1
|
存储 机器学习/深度学习 大数据
量子计算与大数据:处理海量信息的新方法
量子计算作为革命性的计算范式,凭借量子比特和量子门的独特优势,展现出在大数据处理中的巨大潜力。本文探讨了量子计算的基本原理、在大数据处理中的应用及面临的挑战与前景,展望了其在金融、医疗和物流等领域的广泛应用。
|
存储 供应链 算法
深入探讨区块链技术在供应链管理中的应用与挑战#### 一、
本文旨在探索区块链技术如何革新传统供应链管理,提升透明度、效率与安全性。通过分析区块链的去中心化特性、共识机制及智能合约等核心技术,结合具体案例,阐述其在减少欺诈风险、优化库存管理、加速交易速度等方面的显著优势。同时,文章也客观分析了当前技术实施面临的成本高昂、标准化缺失等挑战,并提出相应的解决策略,为未来供应链管理的数字化转型提供参考方向。 #### 二、
|
数据采集 人工智能 文字识别
如何绕过Captcha并使用OCR技术抓取数据
在现代网页数据抓取中,Captcha作为一种防止爬虫和恶意访问的措施,广泛应用于各种网站。本文介绍如何使用OCR技术绕过文字Captcha,并通过代理IP技术提高爬虫的隐蔽性。具体实现包括下载Captcha图片、使用Tesseract OCR识别文字、通过代理IP抓取目标数据。示例代码展示了如何抓取大众点评的商家信息。
537 0
如何绕过Captcha并使用OCR技术抓取数据
|
Shell Linux C语言
【Shell 命令集合 系统设置 】Linux 配置鼠标设备的相关设置 mouseconfig命令 使用指南
【Shell 命令集合 系统设置 】Linux 配置鼠标设备的相关设置 mouseconfig命令 使用指南
517 0
|
Java Maven
Maven打包报错:“请使用 -source 7 或更高版本以启用 diamond 运算符”
Maven打包报错:“请使用 -source 7 或更高版本以启用 diamond 运算符”
441 0