MatiasZapf/win-mediakey-lolbin

GitHub: MatiasZapf/win-mediakey-lolbin

一个超轻量级的 LOLBin 示例,利用 csc.exe 编译实现无需安装、4KB 体积的 Windows 媒体键控制。

Stars: 15 | Forks: 1

# win-mediakey-lolbin [![GitHub license](https://img.shields.io/badge/license-Public%20Domain-blue.svg)](https://unlicense.org/) [![Executable size](https://img.shields.io/badge/size-~4KB-brightgreen)]() [![.NET Framework](https://img.shields.io/badge/.NET-4.x-orange)]() 一个超轻量级的 Windows 原生实用程序(~4KB),用于通过命令行控制媒体播放(播放/暂停、下一曲、上一曲)。 ## 上下文:LOLBin 与 MITRE ATT&CK 该项目也是一个关于 **LOLBins**(Living Off the Land Binaries)的教育性证明概念。 它在 MITRE ATT&CK 中被记录为 [T1027.004 "交付后编译"](https://attack.mitre.org/techniques/T1027/004/),这是一种通过将代码以明文形式传递并在原位使用 `csc.exe`(Windows 自带的 .NET Framework 编译器)进行编译的规避技术。 在此案例中,该用法是完全合法的:一个用于控制音乐播放器的 4KB 实用程序。 ## 存在的原因 - 无需安装 - 可执行文件极小(~4KB) - 无后台进程或托盘图标 - 非常适合绑定到鼠标手势、流控台或快捷键 - 纯 Windows 原生(无第三方依赖) ## 功能 编译生成单个可执行文件:`MediaKey.exe` 支持以下命令: - `MediaKey.exe playpause` → 播放/暂停 - `MediaKey.exe next` → 下一曲 - `MediaKey.exe prev` → 上一曲 适用于尊重媒体键的播放器(Spotify、浏览器中的 YouTube、VLC 等)。 ## 系统要求 - Windows 10/11 - .NET Framework 4.x(以确保 `csc.exe` 可用) - 典型路径(x64): - `C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe` - 典型路径(x86): - `C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe` ## 编译 1. 克隆/下载该仓库。 2. 运行: ``` .\scripts\compile.bat ``` 该脚本会: * 检测 `csc.exe`(Framework64 → Framework → PATH), * 创建 `.\bin\` 目录, * 以 **winexe** 模式编译(无控制台窗口), * 显示生成文件的大小与用法。 示例输出: ``` Compiling bin\MediaKey.exe... OK: Compilation successful. Generated: ".\bin\MediaKey.exe" (4096 bytes) Usage: MediaKey.exe playpause MediaKey.exe next MediaKey.exe prev ``` ## 用法 ``` .\bin\MediaKey.exe playpause .\bin\MediaKey.exe next .\bin\MediaKey.exe prev ``` Logitech Options+/G Hub(环动操作)的示例配置: * 动作 1:`MediaKey.exe playpause` * 动作 2:`MediaKey.exe next` * 动作 3:`MediaKey.exe prev` ## 工作原理 程序使用 P/Invoke 调用 `user32.dll` 中的 `keybd_event`,通过以下虚拟键码模拟媒体按键: | 命令 | 虚拟键码 | 常量 | |----------|----------|--------------------------| | `playpause` | `0xB3` | VK_MEDIA_PLAY_PAUSE | | `next` | `0xB0` | VK_MEDIA_NEXT_TRACK | | `prev` | `0xB1` | VK_MEDIA_PREV_TRACK | 简短的 `Sleep()` 调用确保 Windows 在进程退出前处理完按键事件。 ## 许可证 该项目已奉献至公共领域 - [CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/)。 无任何权利保留。
标签:4KB, Cloudflare, csc.exe, LangChain, Living Off the Land, LOLBin, MITRE ATT&CK, .NET Framework, Next Track, PlayPause, Previous Track, T1027.004, Windows 10, Windows 11, Windows媒体控制, winexe, 免安装, 原生编译, 可执行文件, 媒体按键, 快捷键, 教育演示, 无依赖, 流Deck, 编译后交付, 脚本编译, 轻量级, 鼠标手势