Что не так с моим простым вызовом функции intel x64 machine code?

Вот мой код вызова функции:

(Instructions start at 0x00403000)
6A 28                      (Stack Push 0x28)
EB 0A                      (Jump 10)
40 80 04 25 03 10 40 00 05 (Add 5 to address 0x00401003)
C3                         (Near return)
FF 14 25 04 30 40 00       (Call 0x00403004)

Это вызывает взрыв моей программы вместо вызова MessageBoxA позже в коде. Вот функциональный код, который работает, но без вызова функции:

(Instructions start at 0x00403000)
6A 28                       (Stack Push 0x28)
EB 0A                       (Jump 10)
40 80 04 25 03 10 40 00 05  (Add 5 to address 0x00401003)
C3                          (Near return)
40 80 04 25 03 10 40 00 05  (Add 5 to address 0x00401003)

Вот код после этих фрагментов:

48 B9 00 00 00 00 00 00 00 00   (Copy 0 to 64-register 1) 
48 BA 00 10 40 00 00 00 00 00   (Copy 0x00401000 to 64-register 2)
49 B8 06 10 40 00 00 00 00 00   (Copy 0x00401006 to 64-register 3)
49 B9 00 00 00 00 00 00 00 00   (Copy 0 to 64-register 4) 
FF 14 25 78 20 40 00            (Call MessageBoxA)
48 B9 00 00 00 00 00 00 00 00   (Copy 0 to 64-register 1)
FF 14 25 88 20 40 00            (Call End Process)

0 ответов

Другие вопросы по тегам