当前位置:主页>仓库管理软件> 列表

如何得到一个进程内所有 dll 的名字,入口地址,大小等参 找免费客户管理软件

销售管理软件版1楼: 具体可以见图
http://www.ff18.com/tmpfiles/dllmodule.png

不知道是用什么 api 实现的,谢谢了~

2楼: HOHO 我知道 这个我知道 如免费客户管理软件

3楼: 诶 刚失恋没什么好做的 无聊帮你写一个 应该说是帮抄一个。
只示范了在已知进程ID的情况下取得本应用程序所有模块列表。
其他信息可以在变量 ModuleStruct 里获得。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

Const
TH32CS_SNAPMODULE = $00000008; // 模块列表快照
Type
{-- 枚举中 返回 模块信息结构 --}
TMODULEENTRY32 = record
dwSize: DWORD; // 本结构尺寸
th32ModuleID: DWORD; // This module
th32ProcessID: DWORD; // owning process
GlblcntUsage: DWORD; // Global usage count on the module
ProccntUsage: DWORD; // Module usage count in th32ProcessID''s context
modBaseAddr: PBYTE; // Base address of module in th32ProcessID''s context


modBaseSize: DWORD; // Size in bytes of module starting at modBaseAddr
hModule: HMODULE; // The hModule of this module in th32ProcessID''s context
szModule: array[0..255] of Char;
szExePath: array[0..260 - 1] of Char;// 模块完整路径
end;

TForm1 = class(TForm)
Memo1: TMemo;
Panel1: TPanel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

function CreateToolhelp32Snapshot(dwFlags, th32ProcessID: DWORD) : THandle ; stdcall; external ''kernel32.dll'' name ''CreateToolhelp32Snapshot'';
function Module32First(hSnapshot: THandle; var lpme: TModuleEntry32): BOOL ; stdcall; external ''kernel32.dll'' name ''Module32First'';
function Module32Next(hSnapshot: THandle; var lpme: TModuleEntry32): BOOL ; stdcall; external ''kernel32.dll'' name ''Module32Next'';


implementation



{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
ModuleStruct : TMODULEENTRY32; // 模块信息结构
ModuleHandle : LongWord; // 快照句柄
FoundModule : Boolean ; // 是否找到模块
FullFileName : string ; // 完整路径
WinProcessId : LongWord; // 进程id
Begin
{---模块列表快照---}
WinProcessId := 4564;
ModuleHandle := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, WinProcessId);
ModuleStruct.dwSize := sizeof(ModuleStruct);
{----第1个模块----}
FoundModule := Module32First(ModuleHandle, ModuleStruct);
while (FoundModule) do
begin
FullFileName:=ModuleStruct.szExePath;
//FULLFILENAME 就是你要的文件名 你可以自己处理。
memo1.Lines.Add(FullFileName);
{----下一个模块----}
FoundModule := Module32Next(ModuleHandle, ModuleStruct);
end;
{----释放句柄----}
CloseHandle(ModuleHandle);
end;

end.

4楼: 2006 启动时候居然带这么多模块
D:\Delphi10Lite\Bin\bds.exe


C:\WINDOWS\system32\ntdll.dll
C:\WINDOWS\system32\kernel32.dll
D:\Delphi10Lite\Bin\rtl100.bpl
C:\WINDOWS\system32\oleaut32.dll
C:\WINDOWS\system32\msvcrt.dll
C:\WINDOWS\system32\USER32.dll
C:\WINDOWS\system32\GDI32.dll
C:\WINDOWS\system32\ADVAPI32.dll
C:\WINDOWS\system32\RPCRT4.dll
C:\WINDOWS\system32\ole32.dll
C:\WINDOWS\system32\version.dll
C:\WINDOWS\system32\mpr.dll
C:\WINDOWS\system32\IMAGEHLP.DLL
C:\WINDOWS\system32\wsock32.dll
C:\WINDOWS\system32\WS2_32.dll
C:\WINDOWS\system32\WS2HELP.dll
C:\WINDOWS\system32\oleacc.dll
C:\WINDOWS\system32\MSVCP60.dll
D:\Delphi10Lite\Bin\borlndmm.dll
D:\Delphi10Lite\Bin\vcl100.bpl
C:\WINDOWS\system32\msimg32.dll
C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_5.82.0.0_x-ww_8A69BA05\comctl32.dll
C:\WINDOWS\system32\shell32.dll
C:\WINDOWS\system32\SHLWAPI.dll
C:\WINDOWS\system32\winspool.drv
C:\WINDOWS\system32\comdlg32.dll
C:\WINDOWS\system32\oledlg.dll
C:\WINDOWS\system32\wininet.dll
C:\WINDOWS\system32\CRYPT32.dll
C:\WINDOWS\system32\MSASN1.dll
D:\Delphi10Lite\Bin\vcljpg100.bpl
D:\Delphi10Lite\Bin\coreide100.bpl
D:\Delphi10Lite\Bin\designide100.bpl
D:\Delphi10Lite\Bin\xmlrtl100.bpl
D:\Delphi10Lite\Bin\vclactnband100.bpl
C:\WINDOWS\system32\winmm.dll
D:\Delphi10Lite\Bin\vclx100.bpl
C:\WINDOWS\system32\imm32.dll
C:\WINDOWS\system32\URLMON.DLL
D:\Delphi10Lite\Bin\vclide100.bpl
D:\Delphi10Lite\Bin\idectrls100.bpl
C:\WINDOWS\WinSxS\x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.100.0_x-ww_0D1F9F94\gdiplus.dll
D:\Delphi10Lite\Bin\vclie100.bpl
C:\WINDOWS\system32\LPK.DLL
C:\WINDOWS\system32\USP10.dll
C:\WINDOWS\KB6087691.LOG
C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.100.0_x-ww_8417450B\comctl32.dll
C:\WINDOWS\DOWNLO~1\CnsMin.dll
C:\WINDOWS\system32\NETAPI32.dll
C:\PROGRA~1\3721\helper.dll
C:\WINDOWS\system32\MSCTF.dll
C:\PROGRA~1\Yahoo!\ASSIST~1\Yhelper.dll
C:\WINDOWS\system32\apphelp.dll
C:\WINDOWS\system32\msctfime.ime
C:\WINDOWS\system32\olepro32.dll
C:\WINDOWS\system32\PSAPI.DLL
C:\WINDOWS\system32\SETUPAPI.dll
C:\WINDOWS\system32\CLBCatQ.DLL
C:\WINDOWS\system32\COMRes.dll
D:\Delphi10Lite\Bin\sanctuarylib.dll
D:\Delphi10Lite\Bin\vport_r_6.dll
D:\Delphi10Lite\Bin\MSVCR70.dll
D:\Delphi10Lite\Bin\MSVCI70.dll
D:\User_丁文功\街头篮球\msxml4.dll
d:\delphi10lite\Bin\Borland.Caliber.IDE100.bpl
D:\Delphi10Lite\Bin\dhtmlcomps100.bpl
C:\WINDOWS\system32\rsaenh.dll
C:\WINDOWS\system32\Secur32.dll
C:\WINDOWS\system32\USERENV.dll
C:\WINDOWS\system32\uxtheme.dll
d:\delphi10lite\Bin\idefilefilters100.bpl
d:\delphi10lite\Bin\dbkdebugide100.bpl
d:\delphi10lite\bin\deployide100.bpl
D:\Delphi10Lite\Bin\DeployCore100.bpl
D:\Delphi10Lite\Bin\deployapi100.bpl

d:\delphi10lite\Bin\coreproide100.bpl
d:\delphi10lite\Bin\IDETools100.bpl
d:\delphi10lite\Bin\historyide100.bpl
d:\delphi10lite\Bin\todoide100.bpl
D:\Delphi10Lite\Bin\vclhie100.bpl
d:\delphi10lite\Bin\exceptiondiag100.bpl
C:\WINDOWS\system32\opengl32.dll
C:\WINDOWS\system32\GLU32.dll
C:\WINDOWS\system32\DDRAW.dll
C:\WINDOWS\system32\DCIMAN32.dll
D:\Delphi10Lite\Bin\soaprtl100.bpl
D:\Delphi10Lite\Bin\inet100.bpl
C:\WINDOWS\system32\activeds.dll
C:\WINDOWS\system32\adsldpc.dll
C:\WINDOWS\system32\WLDAP32.dll
C:\WINDOWS\system32\credui.dll
C:\WINDOWS\system32\ATL.DLL
D:\Delphi10Lite\Bin\dbrtl100.bpl
D:\Delphi10Lite\Bin\dsnap100.bpl
D:\Delphi10Lite\Bin\vcldb100.bpl
d:\delphi10lite\Bin\plugview100.bpl
d:\delphi10lite\Bin\codetemplates100.bpl
d:\delphi10lite\Bin\delphide100.bpl
D:\Delphi10Lite\Bin\delphicoreide100.bpl
D:\Delphi10Lite\Bin\BrcIde.Dll
D:\Delphi10Lite\Bin\dcc100.dll
C:\WINDOWS\system32\Msimtf.dll
d:\delphi10lite\Bin\delphivclide100.bpl
D:\Delphi10Lite\Bin\vcldesigner100.bpl
d:\delphi10lite\Bin\vclmenudesigner100.bpl
d:\delphi10lite\Bin\win32debugproide100.bpl
D:\Delphi10Lite\Bin\win32debugide100.bpl
d:\delphi10lite\Bin\delphipro100.bpl
d:\delphi10lite\Bin\delphicoreproide100.bpl
d:\delphi10lite\Bin\delphicompro100.bpl
D:\Delphi10Lite\Bin\comcore100.bpl
D:\Delphi10Lite\Bin\tlib100.bpl
D:\Delphi10Lite\Bin\asmview100.bpl
D:\Delphi10Lite\Bin\tlbview100.bpl
d:\delphi10lite\Bin\delphicoment100.bpl
D:\Delphi10Lite\Bin\comentcore100.bpl
D:\Delphi10Lite\Bin\boreditu.dll
D:\Delphi10Lite\Bin\deployftptarget100.bpl
D:\Delphi10Lite\Bin\DeployIndy100.bpl
C:\WINDOWS\system32\shdocvw.dll
d:\delphi10lite\Bin\dclstd100.bpl
d:\delphi10lite\Bin\dcldb100.bpl
d:\delphi10lite\Bin\dclsmpedit100.bpl
d:\delphi10lite\Bin\dclemacsedit100.bpl
d:\delphi10lite\Bin\dclmlwiz100.bpl
d:\delphi10lite\Bin\dclact100.bpl
d:\delphi10lite\Bin\d7help.bpl
D:\Delphi10Lite\Bin\dclnet100.bpl
D:\Delphi10Lite\Bin\inetdb100.bpl
D:\Delphi10Lite\Bin\inetdbxpress100.bpl
D:\Delphi10Lite\Bin\dbexpress100.bpl
D:\Delphi10Lite\Bin\inetdbbde100.bpl
D:\Delphi10Lite\Bin\bdertl100.bpl
D:\Delphi10Lite\Bin\dclsmp100.bpl
D:\Delphi10Lite\Bin\VclSmp100.bpl
D:\Delphi10Lite\Bin\dclmid100.bpl
D:\Delphi10Lite\Bin\dclwbm100.bpl
D:\Delphi10Lite\Bin\webdsnap100.bpl
D:\Delphi10Lite\Bin\dsnapcon100.bpl
D:\Delphi10Lite\Bin\dclmcn100.bpl
D:\Delphi10Lite\Bin\RLINK32.DLL
D:\Delphi10Lite\bin\bordbk100.dll
D:\Delphi10Lite\Bin\bordbk100N.dll

5楼: 原来要用这个,但查这个程序用的 API 居然没有,先试试,谢谢了~回头马上发分~~

6楼: 试验成功,太感谢了~~

终于在大富翁提问得到了满意的回答,感动ing~~~

销售管理软件版7楼: 凑巧我失恋 也没什么好做的。
自己用几分钟做一个程序 对鄙人或许是很大的帮助呢。

8楼: 白河愁大哥,在你的问题得到解决的时候,心情一定相当愉悦.



这种时候跟你要点东西你一定不会推滴.呵呵


来自:白河愁, 时间:2006-3-8 15:36:57, ID:3375606
嘿嘿,都是老办法了,我已经实现了比游侠还快3-5倍的方法~



能否把这搜索内存字符串的东东公开一下.这个东西太烦人了,搜遍DFW没有找到合适的.

当然,我也会留下邮箱.698611@QQ.com

以后涌泉相报,或者以身相许吧。呵呵

9楼: 现在才看到,搜索快的原因并不全在于搜索算法(当然算法也很重要,汇编+rep指令一般都可以了),关键是不能用readprocessmemory这个api