VC++中Depends工具的使用和DLL函数的动态调用方式示例
VC++中Depends工具;Depends用來顯示與一個可執行文件(exe或者dll)相關的依賴項(動態鏈接庫dll),以及該exe或dll引用了這些dll中的哪些接口,同時也可以看到每個被依賴的dll中的所有導出的函數接口。
在VC6位于如下目錄;
加載一個系統dll查看一下;出現下圖錯誤提示;大致說...加載失敗...循環依賴...;因為此dll又調用了其它dll;
左上角是Dll信息窗口,顯示引用到的Dll模塊,
右邊第一個窗口是所選的Dll模塊所使用的函數,
右邊第二個窗口是所選Dll模塊的所有的導出函數,
下面窗口是所有需要的Dll模塊的屬性,
右邊兩個窗口出現四個標簽:序號,提示,函數,入口點;
如果導出是函數,那么出現函數名,如果導出的是序號,那么函數項就是N/A(無法顯示)出現紅色提示表示不正常,一般為沒有該導出函數;
看一下系統自帶的ICMP.dll;就是實現ping功能的那個;
在C++中有一種dll函數調用方式;就是通過LoadLibrary、 GetProcAddress,載入模塊之后,獲取函數地址,通過函數地址來調用函數;在安全類編程中會用到;
下面來看一下示例;獲取user32中的MessageBox函數地址;
?? 新建一個VC++ MFC工程;
CPP文件包含此句:#include <windows.h>
CPP文件頭部添加:typedef void (*MYPROC)(LPTSTR);
在某個消息處理函數中,單擊菜單或按鈕,或對話框初始化消息;添加如下代碼;顯示載入DLL以后的DLL模塊地址和MessageBoxA函數地址;
???
運行結果如下;環境是Win10,VC6;
也就是說載入uder32 DLL的基址在0x74ab0000;MessageBoxA函數地址在基址之后一些;
總結
以上是生活随笔為你收集整理的VC++中Depends工具的使用和DLL函数的动态调用方式示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hyper-V安装ReactOS未成功
- 下一篇: Windows下使用MinGw和gcc构