一旦Windows將可執行文件加載到內存中並將執行轉移到入口點,那麼寄存器和堆棧中的值是否有意義?如果是這樣,我可以在哪裏找到關於它的更多信息?Windows初始執行上下文
3
A
回答
6
正式地,PE文件入口點的寄存器沒有定義的值。您應該使用API,例如來檢索您需要的信息。但是,由於最終將控制權轉移到入口點的內核功能並沒有太大改變,所以一些PE包裝商和惡意軟件開始依賴其特性。兩個或多或少可靠寄存器是:
EAX指向應用程序的入口點(因爲內核函數使用
call eax
跳轉到它)EBX指向進程環境塊( PEB)。
1
Windows Internals第5版第5章詳細介紹了Windows創建過程的機制。這將爲您提供更多有關Windows在內存中加載可執行文件並將執行轉移到入口點的信息。
我發現了這個最新的參考資料,它涵蓋了各種操作系統和各種編譯器在各種調用約定中如何使用寄存器。這是非常詳細的,似乎全面: Agner Fog's Calling Conventions document
+1
鏈接已損壞。我認爲這是它:http://www.agner.org/optimize/calling_conventions.pdf – aalku 2015-06-25 12:55:04
相關問題
- 1. Spring上下文初始化
- 2. 可執行初始化
- 3. 在tomcat上運行上下文初始化失敗
- 4. 嚴重:上下文初始化失敗
- 5. 異常發送上下文初始化
- 6. LDAP,JNDI和初始上下文關係
- 7. SEVERE:上下文初始化失敗org.springframework.beans.factory.BeanDefinitionStoreException:
- 8. 無法初始化上下文
- 9. FreeRTOS初始上下文切換
- 10. 如何初始化上下文?
- 11. Tapestry - Spring - 無法初始化上下文
- 12. 緩慢的上下文初始化
- 13. ContextLoader:上下文初始化失敗
- 14. Tomcat 8上下文初始化兩次
- 15. 無法初始化上下文
- 16. 上下文初始化失敗:org.springframework.beans.factory.BeanDefinitionStoreException
- 17. 上下文初始化失敗 - BeanCreationNotAllowedException
- 18. 執行上下文混亂
- 19. 使用spring進行多線程上下文初始化?
- 20. 在Windows服務中執行冗長的初始化
- 21. 無法使用GitHub Windows應用程序執行初始提交
- 22. 如何在不首先執行初始結帳的情況下執行COMMIT?
- 23. FirebaseCrash在哪個上下文下執行
- 24. 未初始化緩衝區時內核執行時間下降
- 25. 是什麼Scala的執行上下文和遊戲的執行上下文
- 26. 當上下文初始化時,JSF初始化應用程序bean
- 27. 初始化ELF可執行文件的C文件?
- 28. 如何在spark中執行初始化?
- 29. 在EJB3.1中執行初始化代碼
- 30. 使用ES6模塊執行初始化
良好的信息,但你知道任何關於x64? – ST3 2016-12-19 09:40:18
@ ST3不,但您可以檢查調試器。 – 2016-12-19 09:56:25
好的,但有一個問題,你確定'EAX'指向'EP'嗎?我在我的機器上看到了'CALL EDX'。 – ST3 2016-12-19 10:45:56