急問高手:
已知一個OCX庫呼叫了一個動態庫,怎樣才能獲取到這個ocx庫呼叫了動態庫的哪些介面呢?(沒有ocx的代碼)
uj5u.com熱心網友回復:
分析PE格式,查PE的匯入表羅云彬的那本win32匯編教程里有講
uj5u.com熱心網友回復:
能再詳細說一下嗎?uj5u.com熱心網友回復:
PE(“portable executable”,可移植的可執行檔案)檔案格式,是微軟WindwosNT,Windows95和Win32子集中的可執行的二進制檔案的格式;在WindowsNT中,驅動程式也是這種格式。它還能被應用于各種目標檔案和庫檔案中。這種檔案格式是由微軟設計的,并于1993年被TIS(tool interface standard,工具介面標準)委員會(由Microsoft,Intel,Borland,Watcom,IBM,等等組成)所批準,它明顯的基于COFF檔案格式的許多知識。COFF(“common object file fromat”,通用目標檔案格式)是應用于好幾種UNIX系統③和VMS④系統中的目標檔案和可執行檔案的格式。
好吧,以上是復制的http://bbs.pediy.com/showthread.php?threadid=21932
PE格式里有匯入表匯出表,還有很多其它東西,匯入表是從其它庫鏈接進來的函式(PE的IMAGE_DIRECTORY_ENTRY_EXPORT部分),匯出表是提供給其它程式使用的函式,delphi里DLL的exports部分就在匯出表里(PE的IMAGE_DIRECTORY_ENTRY_IMPORT部分),看上面那個鏈接吧。或者百度PE檔案格式
uj5u.com熱心網友回復:
如果是靜態加載的DLL,則可以通過PE檔案格式中的輸入表中得知呼叫了哪些介面。如果是動態加載的DLL,則需要通過除錯器去除錯才可以知道呼叫了哪些介面。
uj5u.com熱心網友回復:
動態的可以hook Loadlibrary,這個在windows核心編程里有
還可以寫一個dll,匯出函式和ocx呼叫的一樣動態庫一樣,不需要實作函式,ocx呼叫動態庫時先呼叫你寫的DLL,然后你的dll呼叫實際那個動態庫,全部功能運行一次,你就知道呼叫哪些了,這個最簡單,但前提是你需要知道動態庫的匯入函式什么樣子的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/114619.html
標籤:VCL組件開發及應用
下一篇:關于性能方面的問題,大家幫幫忙。
