回答
使用工具從共享庫中轉儲導出表(例如,一個.dll如KERNEL32.DLL)。您會看到指定的入口點和/或有序入口點。通常對於窗口來說,命名的入口點是未加密的(extern「C」)。您很可能需要對彙編代碼進行一些窺視,並從堆棧框架(如果存在的話)和註冊使用情況中派生參數(類型,數量,順序,調用約定等)。如果沒有堆棧框架,它會有點困難,但仍然可行。請參閱以下鏈接爲引用:
- http://www.sf.org.cn/symbian/Tools/symbian_18245.html
- http://msdn.microsoft.com/en-us/library/31d242h4.aspx
退房工具,如dumpbin調查出口部分。
也有網站和書籍,在那裏,儘量保持無證的Windows API的更新列表:
- The Undocumented Functions
- A Primer of the Windows Architecture
- How To Find Undocumented Constants Used by Windows API Functions
- Undocumented Windows
- Windows API
編輯: 這些相同的原理適用於多種操作系統,但是,您需要替換您用於轉儲導出表的工具。例如,在Linux上,您可以使用nm轉儲一個目標文件並列出其導出部分(以及其他內容)。您也可以使用gdb來設置斷點並逐步通過入口點的彙編代碼來確定參數應該是什麼。
看看系統DLL以及它們輸出的功能。每個API函數,無論是否有文檔,都會導出其中的一個(用戶,內核,...)。
對於用戶模式API,您可以打開Kernel32.dll User32.dll Gdi32.dll,特別是dependancy walker中的ntdll.dll,並查找所有導出的API。但是你不會有文件的偏差。
剛剛發現一個很好的文章Native APIS由Mark Russinovich編寫
IDA Pro在這裏是您最好的選擇,但請請加倍請實際上並沒有將它們用於任何事情。
他們是內部的,因爲他們改變;他們甚至可能因修補程序而發生更改,因此您甚至不能保證您的未公開API將適用於您爲其編寫的特定操作系統版本和服務包級別。如果你運送這樣的產品,你就靠借來的時間生活。
到目前爲止,每個人都缺少一些實質性功能,其中包括Windows操作系統RPC的大量未記錄部分。通過LPC端口或其他接口,RPC(認爲rpcrt4.dll,lsass.exe,csrss.exe等)操作非常頻繁地發生在所有子系統中,它們的功能被埋藏在各種類型/子類型的神祕主義咒語中/ struct-typedef的等等......由於異步性質或者它們註定要處理的事實,如果要通過單步調試或者你有什麼調試,實際上它們更難以調試,你會發現整個系統由於阻止鍵盤或其他I/O被傳遞而導致鎖定;)
ReactOS可能是調查未公開API的最便捷方式。他們有一個相當成熟的內核,並建立了其他高管。 IDA相當耗時,並且不太可能會發現ReactOS人員還沒有發現任何東西。
下面是鏈接頁面的簡介;
ReactOS®是一個免費的,現代操作系統 基於W indows XP/2003的設計系統。從 完全寫出,其目的是遵循 Windows®體系結構設計,由 微軟從硬件級別 直到應用程序 級別。這不是基於Linux的 系統,並且不共享unix 體系結構。
ReactOS項目的主要目標是提供與Windows兼容的二進制 操作系統 。這將使 允許您的Windows應用程序和 驅動程序像在您的Windows系統上運行一樣運行。另外,使用系統的外觀 和Windows操作系統 ,使得熟悉Windows®的熟悉的用戶界面的人可以直接使用 ReactOS。 ReactOS的終極目標 旨在允許您刪除Windows®並安裝ReactOS ,而最終用戶不會注意到 更改。
當我調查一些罕見的Windows構造時,ReactOS通常是唯一可信的參考。
- 1. 如何查找未記錄的iPhone API調用?
- 2. 從大的記錄中查找記錄
- 3. 如何查找未加入的記錄?
- 4. 未找到記錄
- 5. 查找記錄
- 6. 查找記錄
- 7. 查找記錄
- 8. 如何在windows phone'mango'中查找通話記錄(歷史記錄)信息?
- 9. 用Mongoid在Rails 3中查找未關聯的記錄?
- 10. Desire2Learn Valence API PUT在記錄存在時表示未找到
- 11. 查找記錄在SQL
- 12. 未記錄Yahoo!天氣API?
- 13. 在rails中查詢多條記錄API
- 14. 查找DAO記錄
- 15. 查找'break'記錄
- 16. 查找雙記錄
- 17. 如何在DataSet中查找記錄?
- 18. 在HTML表中查找重複記錄
- 19. 在BODI中查找重複記錄
- 20. FC當在SQLite中查找記錄時
- 21. Rails:在activerecord集合中查找記錄
- 22. 在Oracle中查找分組記錄
- 23. 在SQL中查找重複記錄
- 24. 在1000萬行中查找記錄
- 25. 在交易中查找記錄
- 26. 在續集種子中查找記錄
- 27. count在Yii中查找所有記錄
- 28. 在fortran中查找重複記錄
- 29. 在MySQL中查找行記錄數
- 30. 未找到Rails 4.0記錄
-1糟糕的問題:這是*從來不是一個好主意,使用未公開的API;他們由於某種原因沒有記錄,風險不在你身上,而在於你的操作系統供應商(如果他們關心app compat的話)。 – 2009-05-28 17:29:10
+1不是一個壞問題。在操作系統的內部或其他任何東西上撥動都沒有錯。好奇心是一件好事。只是不要依賴無證行爲。 – 2011-02-04 13:05:23