class function,delphi靜態函數的對象基址分析static

最近設計測試用例,javascript

沒必要從新編譯,填入須要測試API調用,點按鈕call。java

本設計分層:數據結構

  1. stdcall實現,涉及到入棧出棧返回值問題需進行原子操做,採用彙編語言編寫。
  2. 參數隊列,實現一個數據結構提早將參數進行轉換,傳輸給下一層入棧。
  3. 類型判斷,根據文本中的參數自動識別類型並進行轉換。
  4. 入口指針獲取,根據不一樣的API名稱自動獲取相應的Dll(ntdll,kernel32...)export
  5. 最好還能支持簡單的腳本,方便API之間的傳參,初步定爲使用javascript語法。

在作第一項的時候跟蹤了delphi傳遞參數的內容,發現class function實際上第一個參數(eax,edx,ecx)eax傳遞的是類的基址。函數

而非靜態函數,則是對象基址。測試

生成對象以後,調用靜態函數,也是傳入對象基址。設計

相關文章
相關標籤/搜索