社区
C++ Builder
帖子详情
能够查询本机所有的进程中,哪些进程中调用了特定的动态链接库
d2000j
2004-12-28 05:22:30
请高手简单讲讲 编这个程序:“能够查询本机所有的进程中,哪些进程中调用了特定的动态链接库”的思路和方法,多谢了,急!~
...全文
163
2
打赏
收藏
能够查询本机所有的进程中,哪些进程中调用了特定的动态链接库
请高手简单讲讲 编这个程序:“能够查询本机所有的进程中,哪些进程中调用了特定的动态链接库”的思路和方法,多谢了,急!~
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ccrun.com
2004-12-31
打赏
举报
回复
在Form上添加两个ListBox,一个Button,然后添加以下代码:
#include "tlhelp32.hpp"
//===========================================================================
// 获取当前所有进程
void __fastcall MyGetAllProcess(TStrings *pList)
{
String strExeFile;
char szBuf[256];
pList->Clear();
PROCESSENTRY32 pe32 = {sizeof(pe32)};
HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hSnapShot == NULL)
return;
bool bFlag = Process32First(hSnapShot, &pe32);
while(bFlag)
{
strExeFile = AnsiString(pe32.szExeFile);
if(strExeFile.Pos("\\") != 0)
strExeFile = ExtractFileName(pe32.szExeFile);
pList->AddObject(strExeFile, (TObject *)pe32.th32ProcessID);
bFlag = Process32Next(hSnapShot, &pe32);
}
CloseHandle(hSnapShot);
}
//===========================================================================
// 获取指定进程所调用模块的信息
bool __fastcall MyGetAllModule(DWORD dwProcessID, TStrings *pList)
{
pList->Clear();
MODULEENTRY32 me32 = {sizeof(MODULEENTRY32)};
HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessID);
if(hSnapShot == NULL)
return false;
bool bFlag = Module32First(hSnapShot, &me32);
if(!bFlag)
return false;
while(bFlag)
{
pList->AddObject(me32.szExePath, (TObject *)me32.th32ModuleID);
bFlag = Module32Next(hSnapShot, &me32);
}
CloseHandle(hSnapShot);
return true;
}
//---------------------------------------------------------------------------
// 点击Button以后将当前所有进程列在ListBox1中
void __fastcall TForm1::Button1Click(TObject *Sender)
{
MyGetAllProcess(ListBox1->Items);
}
//---------------------------------------------------------------------------
// 点击ListBox的一个进程,在ListBox2中列出该进程调用的所有模块
// 注:如果要获取系统级进程的调用模块,需要提升本进程的调试级别
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
int nIndex = ListBox1->ItemIndex;
if(nIndex < 0)
return;
MyGetAllModule((DWORD)ListBox1->Items->Objects[nIndex], ListBox2->Items);
}
//---------------------------------------------------------------------------
CityHost
2004-12-30
打赏
举报
回复
帮你顶
dll远程线程注入(支持64bit win7)
把dll注入到远程线程。使用的时候创建一个空的工程,然后把代码当做主文件放到工程
中
,自己写个mian函数
调用
injectDLL函数就能注入了。菜鸟级友情提醒:64位别忘了编译成x64的可执行文件
键盘监控范例程序
利用Hook技术实现键盘监控
动态
调用
动态库
1.动态库的使用主要有两种方式:
动态链接库
的静态
调用
需要.h .dll文件, 有时候甚至会用到.lib文件,在工程编译时就将库
中
的方法和类等引入 2.
动态链接库
的动态
调用
在已知库文件内容的前提下,只使用.dll文件,动态的将其
调用
,本文就在描述此方法的实现。(库文件可使用dumpin等工具打开dll已查看)。 动态链接提供了一种方法,使
进程
可以
调用
不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 文件
中
,该 DLL 包含一个或多个已被编译、链接并与使用它们的
进程
分开存储的函数。DLL
动态链接库
的创建和使用
动态链接库
的创建和使用 一. 创建
动态链接库
1. 创建
动态链接库
项目 1. 1
动态链接库
(DLL) 项目结构如下 为了节约大型项目的编译时间,系统自动为我们生成了和预编译头相关两个文件pch.cpp和pch.h,我们可以选择保留或者是删除他们。如果决定保留则需要在项目
中
每个源文件的最前面加入#include "pch.h",否则无法通过编译。如果删除了他们,同时还需要到项目属性
中
禁用预编译头,具体方法如下: dllmain.cpp定义了动态库的入口,当系统开始或终止一个
进程
或线程的时候,会
调用
每个
C++
动态链接库
的使用
本文详细介绍了C++
中
动态链接库
的使用
C++ Builder
13,871
社区成员
102,693
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章