我在网上遇到了这个键盘记录器,想知道下面的代码实际上是做什么的。连续有 2 个 lodsd 命令让我感到困惑。还有那里的 or 命令的目的是什么?完整代码见: http ://www.rohitab.com/discuss/topic/21205-asm-keylogger-in-4k-d/
这是代码摘录(从第 295 行开始):
get_name_of_key: ; no need for large table of pointers to get asciiz
mov esi, [lParam]
lodsd ; skip virtual key code
lodsd ; eax = scancode
shl eax, 16
xchg eax, ecx
lodsd ; extended key info
shl eax, 24
or ecx, eax
push 32
lea edi, [lpCharBuf]
push edi
push ecx
call GetKeyNameTextA ; get the key text