欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c語言獲得dll的函數(shù)名 c獲取uuid

如何查看DLL文件里的函數(shù)

1、準(zhǔn)備好要看函數(shù)的dell文件,打開Dll函數(shù)查看器3.5。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了河北免費建站歡迎大家使用!

2、單擊“選擇文件”按鈕,選擇你的文件。

3、點擊豎早枝“打開”按鈕。你會發(fā)睜旁現(xiàn)余敏,這個查看器列出了很多函數(shù)。

4、選擇你的函數(shù),如“SetMessageA”,然后點擊左邊的“+”,你就能看到這個函數(shù)的參數(shù)。

5、如果想在VB或易語言中聲明這個函數(shù),不需輸入,可以這樣:選擇函數(shù),右鍵單擊,你就會發(fā)現(xiàn)有兩個菜單,一個是“復(fù)制到VB聲明”,一個是“復(fù)制到易語言聲明”!

怎么枚舉一個DLL里面的所有導(dǎo)出函數(shù)名字

//建立一個vc6.0中建立一個win32console工程,打入如下代碼。我在我的電腦上測試通過了。

#include "手洞stdafx.h"

#include windows.h

#include winbase.h

#include stdio.h

#include tchar.h

#include imagehlp.h

typedef PVOID (CALLBACK* PFNEXPORTFUNC)(PIMAGE_NT_HEADERS,PVOID,ULONG,PIMAGE_SECTION_HEADER*);

void printAllFuncName(char* fileName);//打印所有函數(shù)名稱的函數(shù)聲明

int main(int argc, char* argv[])

{

printAllFuncName("F:\\gdi32.dll");//打印gdi32.dll中所有函數(shù)名稱,要打印別的dll中的函數(shù),只要改變這個字符串。

getchar();

return 0;

}

void printAllFuncName(char* fileName){

LPWIN32_FIND_DATA lpwfd_first=new WIN32_FIND_DATA;/畢磨枯/接受findfirstfile的結(jié)構(gòu)指針

HANDLE hFile,hFileMap;//文件句柄和內(nèi)存映射文件句柄

DWORD fileAttrib=0;//存儲文件屬性用,在createfile中用到。

void* mod_base;//內(nèi)存映射文件的起始地址,也是模塊的起始地址

//首先取得ImageRvaToVa函數(shù)本來只要#include Dbghelp.h就可以使用這個函數(shù),但是我的vc沒有這個頭文件

PFNEXPORTFUNC ImageRvaToVax=NULL;

HMODULE hModule=::LoadLibrary("DbgHelp.dll");

if(hModule!=NULL){

ImageRvaToVax=(PFNEXPORTFUNC)::GetProcAddress(hModule,"ImageRvaToVa");

if(ImageRvaToVax==NULL){

::FreeLibrary(hModule);

printf("取得函數(shù)失敗\n");

return ;

}

}else{

printf("加載模塊失敗\n");

return ;

}

if(FindFirstFile(fileName,lpwfd_first)==NULL){//返回值為NULL,則文件不存在,游野退出

printf("文件不存在: %s ",fileName);

return ;

}else{

DWORD fileAttrib=lpwfd_first-dwFileAttributes;

}

hFile=CreateFile(fileName,GENERIC_READ,0,0,OPEN_EXISTING,fileAttrib,0);

if(hFile==INVALID_HANDLE_VALUE){

printf("打開文件出錯!");

return ;

}

hFileMap=CreateFileMapping(hFile,0,PAGE_READONLY,0,0,0);

if(hFileMap==NULL){

CloseHandle(hFile);

printf("建立內(nèi)存映射文件出錯!");

return ;

}

mod_base=MapViewOfFile(hFileMap,FILE_MAP_READ,0,0,0);

if (mod_base==NULL)

{

printf("建立內(nèi)存映射文件出錯!");

CloseHandle(hFileMap);

CloseHandle(hFile);

return ;

}

IMAGE_DOS_HEADER* pDosHeader = (IMAGE_DOS_HEADER*)mod_base;

IMAGE_NT_HEADERS * pNtHeader =

(IMAGE_NT_HEADERS *)((BYTE*)mod_base+ pDosHeader-e_lfanew);//得到NT頭首址

//IMAGE_NT_HEADERS * pNtHeader =ImageNtHeader (mod_base);

IMAGE_OPTIONAL_HEADER * pOptHeader =

(IMAGE_OPTIONAL_HEADER *)((BYTE*)mod_base + pDosHeader-e_lfanew + 24);//optional頭首址

IMAGE_EXPORT_DIRECTORY* pExportDesc = (IMAGE_EXPORT_DIRECTORY*)ImageRvaToVax(pNtHeader,mod_base,pOptHeader-DataDirectory[0].VirtualAddress,0);

//導(dǎo)出表首址

PDWORD nameAddr=(PDWORD)ImageRvaToVax(pNtHeader,mod_base,pExportDesc-AddressOfNames,0);//函數(shù)名稱表首地址每個DWORD代表一個函數(shù)名字字符串的地址

PCHAR func_name = (PCHAR)ImageRvaToVax(pNtHeader,mod_base,(DWORD)nameAddr[0],0);

DWORD i=0;

DWORD unti=pExportDesc-NumberOfNames;

for(i=0;iunti;i++){

printf("%s\n",func_name);

func_name = (PCHAR)ImageRvaToVax(pNtHeader,mod_base,(DWORD)nameAddr[i],0);

}

::FreeLibrary(hModule);

CloseHandle(hFileMap);

CloseHandle(hFile);

}

C語言調(diào)用dll

這個相對路徑是滾宴閉你當(dāng)前代碼存放的位置.

實際應(yīng)用中相對大裂路徑比絕對路徑實用多了.

比如你可以再代碼路徑祥虧上再創(chuàng)建一個文件夾,命令dll,里面放所有的dll文件

那么你此時路徑".\\dll\\test.dll"

你可以發(fā)給我,我?guī)湍憧纯?/p>

分享名稱:c語言獲得dll的函數(shù)名 c獲取uuid
網(wǎng)站地址:http://chinadenli.net/article6/dsphiog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)網(wǎng)站導(dǎo)航網(wǎng)站策劃搜索引擎優(yōu)化移動網(wǎng)站建設(shè)網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)