# windows-syscall-test **Repository Path**: 58291/windows-syscall-test ## Basic Information - **Project Name**: windows-syscall-test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-22 - **Last Updated**: 2025-04-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Windows 直接系统调用 Hello World 示例 这个项目演示了如何在 Windows 10 x64 系统上使用汇编语言通过直接系统调用(syscall)输出"Hello World!"文本,而不依赖标准 Windows API 函数。 ## 项目说明 本示例程序展示了如何: - 使用 NASM 编写 x64 汇编代码 - 通过 syscall 指令直接调用 Windows 底层系统功能 - 不依赖 Windows API 函数实现基本的控制台输出 ## 环境要求 - Windows 10 x64(在企业版 22H2 上测试通过) - NASM(Netwide Assembler) - LD 链接器 - 支持 Make 的环境(如 MinGW、MSYS2 或 WSL) ## 系统调用说明 本程序使用了以下系统调用: - `NtWriteFile` (syscall号: 0x8):用于写入文件/控制台 - `NtTerminateProcess` (syscall号: 0x2C):用于结束程序 **注意**:系统调用号可能会随着 Windows 版本的不同而变化,当前代码适用于 Windows 10 x64 企业版 22H2。 ## 代码工作原理 1. 通过 GS 寄存器定位 TEB(线程环境块) 2. 从 TEB 中找到 PEB(进程环境块) 3. 从 PEB 中读取标准输出句柄 4. 使用 syscall 指令直接调用 NtWriteFile 输出文本 5. 使用 syscall 指令直接调用 NtTerminateProcess 结束程序 ## 编译和运行 使用提供的 Makefile 可以轻松构建和运行程序: ```bash # 编译程序 make # 运行程序 make run # 清理生成的文件 make clean ``` ## 注意事项 - 此代码仅用于学习和研究目的 - 直接系统调用是底层操作,不具备可移植性 - 系统调用号和结构可能随 Windows 版本变化而改变 - 不建议在生产环境中使用此类直接系统调用方式