這可能很簡單,但由於某種原因,我無法工作。它應該是一個簡單的函數,它將雙字的最後一個字節更改爲「AA」(10101010),但是當我調用該函數時沒有任何反應。它只是返回我的原始雙字。嵌入在C++中的x86彙編中的調用/ Ret
__declspec(naked) long
function(unsigned long inputDWord, unsigned long *outputDWord)
{
_asm{
mov ebx, dword ptr[esp+4]
push ebx
call SET_AA
pop ebx
mov eax, dword ptr[esp+8]
mov dword ptr[eax], ebx
}
}
__declspec(naked) unsigned long
SET_AA(unsigned long inputDWord)
{
__asm{
mov eax, [esp+4]
mov al, 0xAA //10101010 didn't work either
ret
}
}
我的錯誤。我嘗試了10101010,感到沮喪,然後把0xAA(我以爲我之前看到過?)。 (不,不,你不需要) – SP658 2010-05-16 06:36:56
(不,不,你沒關係,我把'AA'看作一個字符串文字,而不是讀取你之後放置的二進制文件。)然而(自從16位處理器開始以來,我試過閱讀程序集),它看起來像是在返回eax中的值而不是使用它(也就是說,你用一個指向[esp + 8]的指針覆蓋它),而且你似乎沒有這樣做即使你推動並彈出它,任何帶有ebx的東西。儘管我可能完全錯誤(就像我說的,這已經有一段時間了)。 – 2010-05-16 06:44:07