手机
当前位置:查字典教程网 >编程开发 >C语言 >显示任何进程加载的DLL文件的代码
显示任何进程加载的DLL文件的代码
摘要:复制代码代码如下:#include#include#include#includeintmain(intargc,char*argv[]){...

复制代码 代码如下:

#include <windows.h>

#include <iostream.h>

#include <tlhelp32.h>

#include <stdio.h>

int main(int argc, char* argv[])

{

char exename[500];

printf("[ENTER EXE FILE NAME]t");

scanf("%s",exename);

printf("n[YOU ENTER]t%sn",exename);

Sleep(3000);

//提升当前进程的权限使其有权限对其他进程进行操作

HANDLE hToken;

LUID sedebugnameValue;

TOKEN_PRIVILEGES tkp;

if ( ! OpenProcessToken( GetCurrentProcess(),

TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) ){

//WriteToLog("openprocesstoken error");

return 1;

}

if ( ! LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &sedebugnameValue ) ){

CloseHandle( hToken );

//WriteToLog("lookuprivilegevalue error");

return 1;

}

tkp.PrivilegeCount = 1;

tkp.Privileges[0].Luid = sedebugnameValue;

tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

if ( ! AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) ){

CloseHandle( hToken );

return 1;

}

//取得目标进程的PID

DWORD pid;

HANDLE snapshot;

snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

struct tagPROCESSENTRY32 processsnap;

processsnap.dwSize=sizeof(tagPROCESSENTRY32);

for(Process32First(snapshot,&processsnap);Process32Next(snapshot,&processsnap);){

if(!stricmp(processsnap.szExeFile,exename))

{

pid=processsnap.th32ProcessID;

break;

}

}

CloseHandle(snapshot);

////////////////////////////////////////

MODULEENTRY32 pe32;

// 在使用这个结构之前,先设置它的大小

pe32.dwSize = sizeof(pe32);

// 给进程内所有模块拍一个快照

//276为某进程的ID

HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pid);

if(hProcessSnap == INVALID_HANDLE_VALUE)

{

//建立快照失败

return -1;

printf("[createtoolhelp32snapshot error]n");

}

// 遍历进程快照,轮流显示每个进程的信息

BOOL bMore = Module32First(hProcessSnap, &pe32);

while(bMore)

{

printf("n[DLL NAME]t%sn",pe32.szModule);

printf("[DLL PATH]t%sn",pe32.szExePath);

bMore = Module32Next(hProcessSnap, &pe32);

}

// 不要忘记清除掉snapshot对象

CloseHandle(hProcessSnap);

return 0;

}

【显示任何进程加载的DLL文件的代码】相关文章:

VC解析XML文件-CMarkup的使用详解

C语言 解压华为固件的实例代码

C++ 构造双向链表的实现代码

用c 获取文件MD5值的实现方法

基于C中一个行压缩图的简单实现代码

ShellExecute函数用法的实例代码

.h和.cpp文件的区别(zt)详细介绍

复数乘法中的结构体赋值实现代码

线程池的原理与实现详解

C语言实现修改文本文件中特定行的实现代码

精品推荐
分类导航