如何获取已使用的DLL列表?

Edi*_*ičs 3 delphi dll dll-injection delphi-xe2

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

Dav*_*nan 10

您可以使用PSAPI.你需要的功能是EnumProcessModules.MSDN上有一些示例代码.

主要的替代方案是工具帮助库.它是这样的:

  • 打电话CreateToolhelp32Snapshot.
  • 用枚举开始枚举Module32First.
  • 反复打电话Module32Next.
  • 完成后调用CloseHandle以销毁快照.

就个人而言,我更喜欢Tool Help来完成这项任务.这是一个非常简单的例子:

{$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.
Run Code Online (Sandbox Code Playgroud)