本文介绍了如何获取已用DLL的列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从应用程序本身获取使用的DLL的列表。
我的目标是将列表与硬编码的列表进行比较,以查看是否注入了任何DLL。
我在Google中找不到任何示例。

I would like to get a list of used DLLs from application itself.My goal is to compare the list with hardcoded one to see if any DLL is injected.I can not find any examples in Google.

推荐答案

您可以为此使用PSAPI。您需要的功能是。在MSDN上有一些。

You can use PSAPI for this. The function you need is EnumProcessModules. There's some sample code on MSDN.

主要替代方法是库。像这样:

The main alternative is the Tool Help library. It goes like this:


  • 调用 CreateToolhelp32Snapshot 。

  • 使用 Module32First 开始枚举。

  • 重复调用 Module32Next 。

  • 完成后,调用 CloseHandle 销毁快照。

  • Call CreateToolhelp32Snapshot.
  • Start enumeration with Module32First.
  • Repeatedly call Module32Next.
  • When you are done call CloseHandle to destroy the snapshot.

就个人而言,我更喜欢工具帮助来完成此任务。这是一个非常简单的示例:

Personally, I prefer Tool Help for this task. Here's a very simple example:

{$APPTYPE CONSOLE}

uses
  SysUtils, Windows, TlHelp32;

var
  Handle: THandle;
  ModuleEntry: TModuleEntry32;
begin
  Handle := CreateToolHelp32SnapShot(TH32CS_SNAPMODULE, 0);
  Win32Check(Handle <> INVALID_HANDLE_VALUE);
  try
    ModuleEntry.dwSize := Sizeof(ModuleEntry);
    Win32Check(Module32First(Handle, ModuleEntry));
    repeat
      Writeln(ModuleEntry.szModule);
    until not Module32Next(Handle, ModuleEntry);
  finally
    CloseHandle(Handle);
  end;
  Readln;
end.

这篇关于如何获取已用DLL的列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-04 23:43