好的,所以我需要掛鉤程序,但要做到這一點,我要複製指令E8 <Pointer to Byte Array that contains other code>
。問題是,當我組裝Call 0x100
時,我得到了E8 FD
,我們知道E8是調用指令,所以FD必須是目標,那麼彙編器如何將目標從0x100帶入FD?謝謝,布拉德利 - 我的機器碼跳轉目標計算
回答
http://wwwcsif.cs.ucdavis.edu/~davis/50/8086 Opcodes.htm
E8是一個16位的相對調用。因此,例如E8 00 10
表示在PC + 0x1000處調用地址。
有太多的跳/調用操作碼,其中一些是相對的。我會說你其實不是E8 FD
,而是E8 FD FF
。 E8
似乎是「呼叫16位相對」,而0x100
是默認放置指令的地方。
所以你把call 0x100
放在地址0x100,生成的代碼是「做跳轉指令,從實際指令指針跳-3」。 -3
是因爲在指令被讀取之後從位置計算移位,在E8 FD FF
的情況下是0x103。這就是爲什麼如果FD FF
轉移的話,big-endian爲0xfffd
,這是16位-3
。
我敢打賭,實際的操作碼不是'E8 FD FF',因爲那樣你會有一個無限循環。 – 2012-01-01 19:15:57
是的,它可能是'E8 FD 00',在什麼情況下該指令被放在0x00地址。這在我看來有點不尋常,因爲我的記憶微弱地告訴我0x100應該是舊DOS代碼的開始,但在這種情況下可能是0x00。 '呼叫0x100'的原始地址沒有被指定,所以我只能猜測。 – 2012-01-01 19:18:54
- 1. MIPS計算跳轉指令的機器編碼
- 2. 目標計算機
- 3. 間接跳轉目的地計算
- 4. 跳過goalseek計算當目標= 0
- 5. 如何計算跳轉目標地址和分支目標地址?
- 6. 從目標機器禁用多跳SSH?
- 7. 目標計算機未加入DOMAN
- 8. 跳過有錯誤的計算機
- 9. Java:將Eclipse項目從一臺計算機轉移到另一臺計算機?
- 10. 跳過一些代碼,如果計算機很慢
- 11. 大會跳轉指令地址計算
- 12. Uniqely標識計算機?
- 13. Android GPS距離計算器 - 實時跳轉/漂移過濾
- 14. 機器語言代碼在目標c
- 15. 計算目標值LIBSVM Matlab
- 16. Visual Studio 2012 - 調試器隨機跳轉
- 17. 碼頭機器,碼頭構成和谷歌雲計算
- 18. 機器人和計算機視覺
- 19. 我應該從iOS項目轉移到新計算機上?
- 20. 計算器項目問題
- 21. Vba計數器用於計算玩家目標數量
- 22. 字計數器代碼跳過
- 23. CSS3:目標並防止瀏覽器跳轉行爲
- 24. 64計算向前跳躍
- 25. 彈跳球計算度
- 26. .NET性能計數器監視計算機的計算能力
- 27. .NET Windows 7跳轉列表 - 複選框/收音機跳轉列表項目
- 28. C代碼計算器#
- 29. Python計算器代碼
- 30. 尺碼計算器公式
什麼是目標機器碼?沒有辦法'E8FD'意味着'調用0x100' – 2012-01-01 18:37:15
我在EMU8086中打開它,是的,這意味着CALL 0x100。但是,我可能不知道我在說什麼。 – iDomo 2012-01-01 18:53:43
你也在使用什麼彙編語言? – 2012-01-01 18:58:38