久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

調(diào)用未公開的API函數(shù)的方法

 firefox_zyw 2015-02-04
Windows SDK開發(fā)包中并未提供所有的API函數(shù),,在本文中我將討論如何調(diào)用這種未公開的API函數(shù)。 事實(shí)上所有未公開的API函數(shù)都和其它的API函數(shù)一樣包含在系統(tǒng)的動(dòng)態(tài)鏈接庫(kù)中,,調(diào)用這些函數(shù)的方法是取得它們的指針,,然后通過指針來(lái)進(jìn)行操作。而取得函數(shù)地址,,是通過GetP
Windows SDK開發(fā)包中并未提供所有的API函數(shù),,在本文中我將討論如何調(diào)用這種未公開的API函數(shù)。

事實(shí)上所有未公開的API函數(shù)都和其它的API函數(shù)一樣包含在系統(tǒng)的動(dòng)態(tài)鏈接庫(kù)中,,調(diào)用這些函數(shù)的方法是取得它們的指針,,然后通過指針來(lái)進(jìn)行操作。而取得函數(shù)地址,,是通過GetProcAddress這個(gè)API函數(shù)實(shí)現(xiàn)的:

FARPROC WINAPI GetProcAddress(
HMODULE hModule, // DLL模塊句柄
LPCSTR lpProcName // 函數(shù)名稱
);


當(dāng)然,,在取得地址之前,需要用LoadLibrary獲得模塊的句柄,。還有,,為了書寫方便,最好用typedef將函數(shù)指針定義為一種類型,。

下面我將通過兩個(gè)例子來(lái)演示如何調(diào)用這些未公開的API函數(shù),。

一、有名稱的函數(shù)

這種函數(shù)在DLL中擁有自己的函數(shù)名稱,,但是在SDK包中并沒有提供聲明,,其中最有代表性的是RegisterServiceProcess函數(shù):

DWORD WINAPI RegisterServiceProcess(
DWORD dwProcessId, // 進(jìn)程ID
DWORD dwType // 注冊(cè)種類,,1表示注冊(cè)
);


這個(gè)函數(shù)的功能是在Win98下將進(jìn)程注冊(cè)為系統(tǒng)服務(wù)進(jìn)程,很多木馬程序的隱藏就是用這個(gè)函數(shù)實(shí)現(xiàn)的,。調(diào)用它的示例代碼如下:

typedef DWORD (WINAPI * REGISTER)( DWORD, DWORD );
HMODULE hModule;
REGISTER RegisterServiceProcess;
hModule = LoadLibrary( "kernel32.dll" );
if ( hModule != NULL )
{
RegisterServiceProcess = (REGISTER)GetProcAddress( hModule, "RegisterServiceProcess" );
RegisterServiceProcess( GetCurrentProcessId(), 1 );
FreeLibrary( hModule );
}


二,、無(wú)名稱的函數(shù)

有的函數(shù)在DLL中并沒有函數(shù)名稱,這又如何調(diào)用呢,?事實(shí)上所有的API函數(shù)無(wú)論有無(wú)名稱,,都會(huì)有一個(gè)ID,來(lái)在DLL中標(biāo)識(shí)自己,。比如函數(shù)RunFileDlg,它的ID是61,,功能是顯示系統(tǒng)“運(yùn)行”對(duì)話框,。下圖所列的是我開發(fā)的進(jìn)程管理軟件July中所調(diào)用的“運(yùn)行”對(duì)話框:

 

事實(shí)上調(diào)用這種函數(shù)的方法和前一種非常相似,唯一不同的只是把GetProcAddress的lpProcName參數(shù)使用MAKEINTRESOURCE宏將函數(shù)的ID轉(zhuǎn)換一下即可,。示例代碼如下:

typedef void (WINAPI* RUN)( HWND, HICON, LPCSTR, LPCSTR, LPCSTR, UINT );
HMODULE hShell32;
RUN RunFileDlg;
hShell32 = LoadLibrary( "shell32.dll" );
RunFileDlg = (RUN)GetProcAddress( hShell32, MAKEINTRESOURCE( 61 ) );
RunFileDlg( hParent, hIcon, NULL, NULL, NULL, 0 );
FreeLibrary( hShell32 );


未公開的API函數(shù)的調(diào)用方法就介紹到這里了,。事實(shí)上還有很多這樣的函數(shù),關(guān)于這些函數(shù)的介紹及使用方法,,請(qǐng)下載我的“未公開的Windows API函數(shù)”文檔,。
附件:/do/uploads/soft/api.rar

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多