首页 > 其他分享 >Memlookup 1.0

Memlookup 1.0

时间:2023-06-17 22:46:24浏览次数:36  
标签:Memlookup slp tkp pe hToken 1.0 include hSnapshot

MemLookup v1.0

用于查看程序运行内存

写的很糟糕,而且似乎单位不准,结果仅供参考。

  • 编译选项 -lpsapi
  • 版本低的貌似需要改一下Psapi.h?(加一个#include<windows.h>,不然会有编译错误)
#include<bits/stdc++.h>
#include<Psapi.h>
#include<tlhelp32.h>
#pragma comment(lib,"Psapi.lib")
using namespace std;
int slp=0;
void GetSystem() {
	HANDLE hToken;
	LUID sedebugnameValue;
	TOKEN_PRIVILEGES tkp;
	OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
	LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue);
	tkp.PrivilegeCount = 1;
	tkp.Privileges[0].Luid = sedebugnameValue;
	tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
	AdjustTokenPrivileges(hToken, false, &tkp, sizeof tkp, NULL, NULL);
	CloseHandle(hToken);
}
DWORD GetProcessidFromName(char *name) {
	PROCESSENTRY32 pe;
	DWORD id=0;
	HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
	pe.dwSize=sizeof(PROCESSENTRY32);
	if(!Process32First(hSnapshot,&pe))
		return 0;
	while(1) {
		pe.dwSize=sizeof(PROCESSENTRY32);
		if(Process32Next(hSnapshot,&pe)==FALSE)
			break;
		if(strcmp(pe.szExeFile,name)==0) {
			id=pe.th32ProcessID;

			break;
		}


	}
	CloseHandle(hSnapshot);
	return id;
}
void killman(char *ProcessName) {
//  cout<<ProcessName<<endl;
	HANDLE hProcess=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
	HANDLE hModule;
	PROCESSENTRY32 pinfo;
	MODULEENTRY32 minfo;
	char shortpath[256];
	pinfo.dwSize = sizeof( PROCESSENTRY32 );
	BOOL report =Process32First(hProcess,&pinfo);
	while(report) {
		hModule=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pinfo.th32ProcessID);
		Module32First(hModule, &minfo);
		GetShortPathName(minfo.szExePath,shortpath,256);
		if(!(strcmp(pinfo.szExeFile,ProcessName))) {
			size_t maxuse=0,last=0,last2=0;
			hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pinfo.th32ProcessID );
			while(GetProcessidFromName(ProcessName)) {
				
				
				PROCESS_MEMORY_COUNTERS pmc;
				GetProcessMemoryInfo(hProcess, &pmc, sizeof(pmc));
				if(last!=pmc.PeakWorkingSetSize||last2!=pmc.WorkingSetSize){
				system("cls");
				printf("监视中...\n");	
				printf("目标[%s] PID[%lld] HANDLE[",ProcessName,pinfo.th32ProcessID);
				cout<<hex<<hProcess<<"]\n";
				printf("当前顶峰运行内存%lldB[%lldMB][%lldKB]\n",pmc.PeakWorkingSetSize,pmc.PeakWorkingSetSize/1024/1024,pmc.PeakWorkingSetSize/1024);
				maxuse=max(maxuse,pmc.PeakWorkingSetSize);
				printf("当前运行内存%lldB[%lldMB][%lldKB]\n",pmc.WorkingSetSize,pmc.WorkingSetSize/1024/1024,pmc.WorkingSetSize/1024);
				maxuse=max(maxuse,pmc.WorkingSetSize);
				last=pmc.PeakWorkingSetSize;last2=pmc.WorkingSetSize;
				}
				Sleep(slp);
			}
			printf("\n结果:\n运行已结束,运行过程中最高使用内存%lldB[%lldMB][%lldKB]\n",maxuse,maxuse/1024/1024,maxuse/1024);
			break;
		}
		// AfxMessageBox(pinfo.szExeFile);
		report =Process32Next(hProcess, &pinfo);
	}
}
int main() {
	system("title MemLookup 运行内存监视器");
	system("mode con cols=60 lines=5");
	SetWindowPos(GetConsoleWindow(),HWND_TOPMOST,699,496,0,0,SWP_NOSIZE|SWP_SHOWWINDOW);
	GetSystem();
	printf("进程映像名:");
	char a[10000];
	cin>>a;
	string l,t=a;
	l="title MemLookup 运行内存监视器 -\"";
	l+=t;
	l+="\"";
	system(l.c_str());
	printf("等待毫秒数:");
	cin>>slp;
	slp=abs(slp);
	killman(a);
	system("pause");
	return 0;
}

标签:Memlookup,slp,tkp,pe,hToken,1.0,include,hSnapshot
From: https://www.cnblogs.com/haozexu/p/17488421.html

相关文章

  • dremio 24.1.0 发布
    dremio就在昨天dremio发布了24.1.0版本(间隔时间还是比较长的),包含了不少特性,上午的时候简单看了下,但是因为目前文档页面打不开了我只简单说以下我看到的几个不错的一些新特性内置支持zstd压缩了Nessie数据源支持,可以更好的使用Nessie作为catalog服务进行iceberg处理了......
  • OpenFunction v1.1.0 发布:新增 v1beta2 API,支持 Dapr 状态管理
    OpenFunction是一个开源的云原生FaaS(FunctionasaService,函数即服务)平台,旨在帮助开发者专注于业务逻辑的研发。在过去的几个月里,OpenFunction社区一直在努力工作,为OpenFunction1.1.0版本的发布做准备。今天,我们非常高兴地宣布OpenFunction1.1.0已经发布了!感谢社区各位......
  • GOTC峰会Sermant发布1.1.0-beta版本,带来哪些提升?
    5月27-28日,GOTC全球开源技术峰会在上海如约举办,Sermant也在GOTC中进行亮相,并参与了活动展台、快闪演讲等活动,吸引众多开发者深入了解Sermant的无代理微服务框架的非侵入、高性能、插件化的核心优势,并对探索实践和落地表现出极大兴趣。本次GOTC峰会也邀请了Linux基金会执行董事、LF......
  • MONAI 叒叒叒更新了(1.0版本),这次在分割,联邦学习,病理图像,MRI重建上有动作
    MONAI此次更新大部分基于MONAIBundle。在分割模块,新增了一个Auto3DSegapp,将数据处理,模型选择,训练和评估等集合在一起。此外还提供了联邦学习,为数字病理图像新增了MetaTensor,提供更多元数据属性。在MRI数据重建模块,也新增了一些功能。接下来,具体了解一下,有没有你感兴趣的内容~......
  • jfreechart 1.0.19如何设置两个数据标签,一个在折线下方,一个在折线上方
    在JFreeChart1.0.19中,您可以使用CategoryPlot类的setItemLabelVisible(intseries,booleanvisible)方法来设置特定系列的数据标签是否可见。要设置两个数据标签,一个在折线下方,一个在折线上方,您可以按照以下步骤进行操作:1.获取CategoryPlot对象。2.使用CategoryPlo......
  • 版本升级| v1.0.11上线,你的需求被翻牌了吗?
    叮咚~综合我们接到的各种用户反馈,OpenSCA项目组在1.0.10的基础上迭代了1.0.11版本升级功能优化Java解析逻辑支持打印结果概览及常见报错信息到终端界面支持输出Cyclonedx及SWID标准格式SBOM清单进一步提升检测速度更新说明01Java解析逻辑优化进一步优化Java解析逻辑,将更多特殊情况......
  • KubeSphere 社区双周报 | OpenFunction 发布 v1.1.0 | 2023.5.26-6.8
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2023.05.26-2023.06.08。贡献者名单新晋KubeSphereCon......
  • phonegap3.1.0自学笔记01_命令行界面(CLI)简单使用
    要使用phonegap的CLI必须首先安装好phonegap,phonegap的安装还请参看我的另外一篇文章:windows7搭建phonegap3Android开发环境。本篇文章介绍CLI的简单使用,由于本人水平有限,还请大侠不要拍砖。 phonegap3.1.0使用命令行去创建应用程序的框架,然后我们可以基于命令行创建的程序再去进......
  • VulnHub-Bob: 1.0.1
    靶机地址:https://www.vulnhub.com/entry/bob-101,226/目标:YourGoalistogettheflagin/提示:Remembertolookforhiddeninfo/files一、信息收集1、主机及服务发现1.1主机扫描使用arp-scan确定目标靶机(192.168.0.10)arp-scan-l┌──(root㉿kali)-[~]└─#......
  • 无法加載文件或程序集Microsoft.SqlServer.management.sdk.sfc版本11.0.0.0
    网上找了很多都是链接失效的,找了很多次就找到了我分享出来链接:https://pan.baidu.com/s/1jax1tfHWFKIkSISu0jBZ7w提取码:mawy   然后欢迎观临我的淘宝小店:可接   ......