取得某一dll所有輸出函式名 (轉)
取得某一dll所有輸出名
在uses里加上ImageHlp
procedure ListDLLFunctions(DLLName: String; List: TStrings);
type
chararr = array [0..$FFFFFF] of Char;
var
H: THandle;
I,
fc: integer;
st: string;
arr: Pointer;
ImageDeInformation: PImageDebugInformation;
begin
List.Clear;
DLLName := ExpandFileName(DLLName);
if FileExists(DLLName) then
begin
H := CreateFile(PChar(DLLName), GENERIC_READ, FILE_SHARE_READ or
FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if H<>INVALID_HANDLE_VALUE then
try
ImageDebugInformation := MapDebugInformation(H, PChar(DLLName), nil, 0);
if ImageDebugInformation<>nil then
try
arr := ImageDebugInformation^.ExportedNames;
fc := 0;
for I := 0 to ImageDebugInformation^.ExportedNamesSize - 1 do
if chararr(arr^)[I]=#0 then
begin
st := PChar(@chararr(arr^)[fc]);
if Length(st)>0 then
List.Add(st);
if (I>0) and (chararr(arr^)[I-1]=#0) then
Break;
fc := I + 1
end
finally
UnmapDebugInformation(ImageDebugInformation)
end
finally
CloseHandle(H)
end
end
end;
procedure TForm1.Button1Click(Sender: T);
var
List: TStrings;
I: integer;
S: String;
begin
List := TStringList.Create;
ListDLLFunctions('c:systemAbcsda.dll', List);
showmessage(inttostr(list.count));
S := 'List of functions';
for I := 0 to List.Count - 1 do
S := S + #13#10 + List[I];
ShowMessage(S);
List.Free
end;
//rock
//轉載請保留此資訊
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-996473/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- feof (函式名)函式
- MySQL取得某一範圍隨機數MySql隨機
- 函式名/函式地址/函式指標函式指標
- 常用輸入輸出函式函式
- (JavaScript)函式名裡有什麼?JavaScript函式
- ncurses輸出函式:字元+字串的輸出函式字元字串
- 輸出輸入函式彙總函式
- perl根據函式名動態呼叫函式
- JavaScript 變數名和函式名相同JavaScript變數函式
- 核心分析PE獲取DLL匯出函式地址函式
- 輸出EXCEL檔案的通用函式,很實用 (轉)Excel函式
- 如何用PHP取得所有HTTP請求頭PHPHTTP
- dll 入口函式函式
- C++逐字輸出函式C++函式
- 函式名作為引數傳遞 與 回撥函式函式
- Linux shell中實現某一列交替輸出1和2Linux
- Java 輸出某路徑下的所有檔案Java
- Python透過函式名呼叫函式的幾種場景Python函式
- 在Oracle中取得某一天前後幾天的字串的方法Oracle字串
- Python 如何將一變數做為函式名?Python變數函式
- C++中的檔案輸入/輸出(3):掌握輸入/輸出流 (轉)C++
- Python怎麼輸出所有的水仙花數?Python
- Dll中匯出類--Delphi實戰之一 (轉)
- javascript變數名和函式名相同如何處理JavaScript變數函式
- Windows 10右鍵選單新增“管理員取得所有權”Windows
- 取得所有使用者表空間資訊的sqlSQL
- 有沒有辦法取得所有的資料來源
- 如何使用 loguru 接管程式的所有日誌輸出?
- C語言printf()函式:格式化輸出函式C語言函式
- 使用AWK計算某一列的所有數值和
- [JAVA]陣列旋轉輸出Java陣列
- 用程式取得CPU資訊 (轉)
- 取得網路卡序列號 (轉)
- 取得的Outlook目錄並在TTreeView裡顯示出來 (轉)View
- 轉:Linux輸入輸出錯誤重定向Linux
- 新手學python之Python的輸入輸出函式Python函式
- C中的基本輸入輸出函式(Android之JNI)函式Android
- 關於友元函式過載輸入輸出運算子函式