Delphi2010 Dll 函数列表查看
//==============================================================================
// 注释 Delphi2010 Dll 函数列表查看
//==============================================================================
unit UntGetDLLFileExports;
interface
uses
Windows, Classes, ImageHlp;
function GetDLLFileExports(szFileName: PChar; mStrings: TStrings): Boolean;
implementation
function GetDLLFileExports(szFileName: PChar; mStrings: TStrings): Boolean;
var
hFile: THANDLE;
hFileMapping: THANDLE;
lpFileBase: Pointer;
pImg_DOS_Header: PImageDosHeader;
pImg_NT_Header: PImageNtHeaders;
pImg_Export_Dir: PImageExportDirectory;
ppdwNames: ^PDWORD;
szFunc: PAnsiChar;
i: Integer;
begin
Result := False;
if not Assigned(mStrings) then
Exit;
hFile := CreateFile(szFileName, GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if (hFile = INVALID_HANDLE_VALUE) then
Exit;
hFileMapping := CreateFileMapping(hFile, nil, PAGE_READONLY, 0, 0, nil);
if hFileMapping = 0 then
begin
CloseHandle(hFile);
Exit;
end;
lpFileBase := MapViewOfFile(hFileMapping, FILE_MAP_READ, 0, 0, 0);
if lpFileBase = nil then
begin
CloseHandle(hFileMapping);
CloseHandle(hFile);
Exit;
end;
pImg_DOS_Header := PImageDosHeader(lpFileBase);
pImg_NT_Header := PImageNtHeaders(Integer(pImg_DOS_Header) + Integer(pImg_DOS_Header._lfanew));
if IsBadReadPtr(pImg_NT_Header, SizeOf(IMAGE_NT_HEADERS)) or (pImg_NT_Header.Signature <> IMAGE_NT_SIGNATURE) then
begin
UnmapViewOfFile(lpFileBase);
CloseHandle(hFileMapping);
CloseHandle(hFile);
Exit;
end;
pImg_Export_Dir := PImageExportDirectory(pImg_NT_Header.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress);
if not Assigned(pImg_Export_Dir) then
begin
UnmapViewOfFile(lpFileBase);
CloseHandle(hFileMapping);
CloseHandle(hFile);
Exit;
end;
// 63 63 72 75 6E 2E 63 6F 6D
pImg_Export_Dir := PImageExportDirectory(ImageRvaToVa(pImg_NT_Header, pImg_DOS_Header, DWORD(pImg_Export_Dir), PImageSectionHeader(Pointer(nil)^)));
ppdwNames := Pointer(pImg_Export_Dir.AddressOfNames);
ppdwNames := Pointer(ImageRvaToVa(pImg_NT_Header, pImg_DOS_Header, DWORD(ppdwNames), PImageSectionHeader(Pointer(nil)^)));
if not Assigned(ppdwNames) then
begin
UnmapViewOfFile(lpFileBase);
CloseHandle(hFileMapping);
CloseHandle(hFile);
Exit;
end;
for i := 0 to pImg_Export_Dir.NumberOfNames - 1 do
begin
szFunc := PAnsiChar(AnsiString(ImageRvaToVa(pImg_NT_Header, pImg_DOS_Header, DWORD(ppdwNames^), PImageSectionHeader(Pointer(nil)^))));
mStrings.Add(string(szFunc));
Inc(ppdwNames);
end;
UnmapViewOfFile(lpFileBase);
CloseHandle(hFileMapping);
CloseHandle(hFile);
Result := True;
end;
end.
Delphi2010 Dll 函数列表查看相关推荐
- CoreDll.dll函数列表
找了好久这方面的东西,今天在网上找到了,我也来和大家共享一下, 这是CoreDll函数列表,没有函数的具体使用说明需要的话自己到msdn上查 ----------------------------- ...
- dumpbin发现没有入口函数_Dumpbin查看的dll/lib导出函数,不能重定向到文件问题
Dumpbin.exe 是vs官方自动的查看dll.lib导出函数的利器. 找到dumpbin.exe 下面是我电脑中的位置: 不同平台下的dumpbin 需要同目录下 link.exe文件才能运行. ...
- KERNEL32.DLL中可供调用的API函数列表
KERNEL32.DLL中可供调用的API函数列表,如下: ActivateActCtx AddAtomA AddAtomW AddConsoleAliasA AddConsoleAliasW A ...
- vscode查看变量及函数列表
法1:Ctrl + Shift + O 法2:大纲 中间会展示所有的变量,包括函数内的变量,类内的元素 如果在侧边栏没有发现大纲可以通过如下方式进行大纲的打开 Shift+Ctrl+P 然后输入 Vi ...
- 使用dumpbin工具查看动态库中函数列表
一.Windows环境下如何安装dumpbin工具? Dumpbin是Visual Studio自带的一个命令行工具,用于查看可执行文件.静态库和动态库的导入表.导出表.符号表等信息.在Windows ...
- 在 C++Builder 工程里调用 DLL 函数
调用 Visual C++ DLL 给 C++Builder 程序员提出了一些独特的挑战.在我们试图解决 Visual C++ 生成的 DLL 之前,回顾一下如何调用一个 C++Builder 创建的 ...
- python调用c函数传字符串参数_Python使用ctypes模块调用DLL函数之传递数值、指针与字符串参数...
在Python语言中,可以使用ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数,在提高软件运行效率的同时,也可以充分利用目前市面上各种第三方的DLL库函数,以扩充Python软件 ...
- oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包
认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块.但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以命 ...
- python函数参数列表_python函数列表
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python函数函数是python里组织代码的最小单元,python函数包含以下 ...
- 转: 中/英文资料 PKCS #11 函数列表
https://www.cryptsoft.com/pkcs11doc/v220/ PKCS #11 函数列表 PKCS #11 加密令牌接口函数列表中文版 , 取自 Oracle Solaris 1 ...
最新文章
- 【写方案攻略】一些实用性方案思维拓展结构图
- android studio .so混淆配置,Android Studio 下混淆 文件配置 有关问题 初探(一)
- gis 联合 融合_GIS技术进化 | 我们为何需要跨平台GIS技术体系?
- Python 操作 Kafka --- kafka-python
- redis 设置密码 和 redis.config文件
- Qt显示调用C++的dll
- React:Redux简介
- 使SWT/JFace支持跨平台
- nginx配置文件被删怎么找回_恢复误删除的Nginx日志
- Android新浪微博实训报告,完成一份新浪微博目标用户分析报告
- 用 Python 给自己的头像加一个小国旗或者小月饼
- oracle数据透明加密,oracle数据透明加密-TDE
- 【期末不挂】离散数学 · 常考题型你都会了叭~
- 【人生如逆旅,我亦是行人】-半年总结
- Vanilla JS——最轻快的JavaScript框架
- Cesium 修改默认地球贴图的两种方式
- OSPF之链路状态数据库LSDB
- 网页版2048html制作,基于HTML+CSS+JS的网页版2048的实现
- 杨百万建议:炒股操作
- Vue全家桶系列之Vuex(三)
热门文章
- 黑色精美大气DJ音乐歌曲网站源码+带WAP手机端
- 【软件工程】对于Why Software Development Methodologies Suck(为什么软件开发方法论让你觉得糟糕)问题的探讨
- 免费正版杀毒软件,正版杀毒软件
- 统计思维:程序员数学之概率统计(第2版)PDF
- 自动登录SAP系统(流星程序集之十八)
- 菜鸟的mybatis实战教程
- Fiddler 4 模拟 服务端返回 json
- python可视化拖拽编程平台_PythonEditor可视化拼插编辑器:编程不用写代码,拖拖拽拽就可以!...
- 【CC2530入门教程-01】CC2530微控制器开发入门基础
- oozie mysql5.6_oozie服务安装及使用