【发布时间】:2010-05-16 06:16:41
【问题描述】:
这可能是微不足道的,但由于某种原因我无法正常工作。它应该是一个简单的函数,将 dword 的最后一个字节更改为“AA”(10101010),但是当我调用该函数时没有任何反应。它只是返回我原来的 dword。
__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(我以为我以前见过?)。不幸的是,两者都没有工作..
-
(不,不,你很好。我将 'AA' 视为字符串文字,而不是读取您放在后面的二进制文件。)但是(从 16 位时代开始处理器,因为我试图读取程序集),看起来你在返回时抨击 eax 中的值而不是使用它(即你用指向 [esp+8] 的指针覆盖它)而且你似乎没有用 ebx 做任何事情,即使你按下并弹出它。不过,我可能完全错了(就像我说的,已经有一段时间了)。