K4ryuu/sigscan-ts

GitHub: K4ryuu/sigscan-ts

一款零依赖的高性能 TypeScript 二进制特征码扫描器,支持多种格式解析与批量校验,主要服务于游戏服务器模组开发场景。

Stars: 0 | Forks: 0

![NPM Version](https://img.shields.io/npm/v/sigscan-ts?style=for-the-badge&label=NPM) ![NPM Downloads](https://img.shields.io/npm/dm/sigscan-ts?style=for-the-badge&label=Downloads) ![GitHub License](https://img.shields.io/github/license/K4ryuu/sigscan-ts?style=for-the-badge) ![GitHub Issues](https://img.shields.io/github/issues/K4ryuu/sigscan-ts?style=for-the-badge) ![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white) ![Bundle Size](https://img.shields.io/bundlephobia/minzip/sigscan-ts?style=for-the-badge&label=Bundle%20Size)

sigscan-ts

高性能二进制特征码扫描器与 gamedata 验证工具
零运行时依赖 • 混合 Buffer.indexOf 前缀优化 • 完全类型安全 • 自动支持可重定位特征码

开始使用 » · 查看示例

## 关于本项目 嘿!我开发这个工具是因为我在制作一些游戏服务器模组工具时,厌倦了反复复制粘贴原始的 C++ 特征码扫描算法,或者依赖缓慢、过时的 JavaScript 库。 这是一个现代、高性能的二进制特征码扫描器。它在 Node.js 和 Bun 上运行,没有任何运行时依赖。 ## 为什么这个包如此特别 - **零运行时依赖** - 所有依赖项都严格仅用于开发和编译。你可以亲自查看 `package.json`。 - **混合搜索引擎** - 与其逐字节扫描,它不如解析你的特征码以找到最长的连续前缀,执行原生的 C++ `indexOf` 搜索,然后验证候选位置周围的通配符。请参阅下方的基准测试表。 - **极其宽容的解析器** - 可直接从 Cheat Engine、IDA Pro、x64dbg 或 C 语言风格的数组(`{ 0x48, 0x8b, 0xc4, ?? }`)复制特征码。它开箱即用地处理空格、点、逗号、原始十六进制字符串和转义序列。 - **内置 CLI 与 gamedata 验证器** - 在几秒钟内扫描单个特征码,或针对服务器二进制文件批量验证整个 `gamedata.json` 文件(同时支持 CounterStrikeSharp 和 SwiftlyS2 格式)。 ## 性能表现 在一个 100 MB 的随机 buffer 中对 3 个植入的特征码进行基准测试(Apple M2 Pro, Bun 1.3)。 | 特征码类型 | 示例 | 耗时 | 对比原生循环 | |---|---|---|---| | 无通配符 | `DE AD BE EF CA FE BA BE` | ~8.5 ms | **快约 15 倍** | | 通配符 (前缀优化) | `DE AD ?? EF CA ?? BA BE` | ~9.4 ms | **快约 13 倍** | | 碎片化通配符 | `?? AD ?? EF ?? FE ?? BE` | ~12.7 ms | **快约 10 倍** | | 开启 `fast: true` 的 `scan()` | 任意 | ~4.3 ms | **快约 30 倍** | | 原生 JS 循环 (基线) | — | ~128 ms | 1x | 自行运行测试:`bun run bench`

(返回顶部)

## 安装 ``` npm install sigscan-ts pnpm add sigscan-ts bun add sigscan-ts ```

(返回顶部)

## 快速示例 以下是一次性特征码扫描的快速示例: ``` import { readFileSync } from "fs"; import { scan, PatternScanner } from "sigscan-ts"; const buffer = readFileSync("libserver.so"); // 1. One-off quick scan const result = scan(buffer, "48 8B C4 ? 53 ?? 90"); if (result.found) { console.log(`Found pattern at ${result.offsets.length} locations.`); console.log(`Primary offset: 0x${result.offsets[0].toString(16)}`); console.log(`Is the signature unique/reliable? ${result.reliable}`); } // 2. Reusable scanner (efficient for scanning multiple signatures) const scanner = new PatternScanner(buffer); const offsets = scanner.findPattern("55 48 89 E5"); console.log("Offsets found:", offsets); ``` ## 多特征码扫描 在一次调用中扫描多个命名的特征码 —— 适用于 gamedata.json 验证或任何批量扫描: ``` import { readFileSync } from "fs"; import { PatternScanner } from "sigscan-ts"; const buffer = readFileSync("server.so"); const scanner = new PatternScanner(buffer); // returns Record const offsets = scanner.findPatterns({ UTIL_ClientPrintAll: "55 48 89 E5 41 57 4D 89 CF", GiveNamedItem: "55 48 89 E5 41 57 41 56 41 55", CCSPlayer_Respawn: "48 8B 05 ?? ?? ?? ?? 48 85", }); // returns Record const results = scanner.scanPatterns({ UTIL_ClientPrintAll: "55 48 89 E5 41 57 4D 89 CF", GiveNamedItem: "55 48 89 E5 41 57 41 56 41 55", }); if (results["GiveNamedItem"].reliable) { console.log("unique match at", results["GiveNamedItem"].offsets[0].toString(16)); } ``` 还提供独立的辅助函数:`findPatterns(buffer, patterns)` 和 `scanPatterns(buffer, patterns)`。

(返回顶部)

## 命令行接口 (CLI) 如果你全局安装了该包或通过 npx 运行它,你可以使用内置的 CLI: ``` # 扫描 binary 以查找特定 signature sigscan-ts -b libserver.so -p "48 8B C4 ?? 53" # 快速 pattern 扫描,在证明存在第二个匹配后停止 sigscan-ts -b libserver.so -p "48 8B C4 ?? 53" --fast # 根据 binaries 验证整个 gamedata.json 文件 # (支持文件夹路径或通过多个 -b flags 传递多个文件。 # Platform types 和 libraries 会被自动检测!) sigscan-ts -b /path/to/binaries_dir -g latest-gamedata.json sigscan-ts -b libserver.so -b server.dll -g latest-gamedata.json ``` 以下是在 Windows 和 Linux 二进制文件上同时运行批量验证模式的预览: ![sigscan-ts CLI 批量验证输出](https://static.pigsec.cn/wp-content/uploads/repos/cas/f2/f2332acc4f2d48efdd449904d1c42dee764bf4cfcb03006e99b3c9fb6d854cc4.png)

(返回顶部)

## 支持的特征码格式 解析器会自动检测并处理几乎任何复制粘贴的特征码风格: - **IDA Pro**: `"48 8B C4 ?? 53 ? 90"` - **x64dbg**: `"48.8B.C4.??.53"` (点分隔) - **Cheat Engine**: `"48 8b c4 ?? 53"` - **C 语言风格数组**: `"{ 0x48, 0x8b, 0xc4, ??, 0x53 }"` - **转义十六进制**: `"\x48 \x8B \xC4 ?? \x53"` - **原始十六进制字符串**: `"488bc4??53"`

(返回顶部)

## 面向开发者

(返回顶部)

## 许可证 MIT - 随你怎么用 ## 鸣谢 由 [K4ryuu](https://github.com/K4ryuu) 构建
标签:GNU通用公共许可证, MITM代理, Node.js, SOC Prime, TypeScript, 二进制分析, 云安全运维, 内存扫描, 安全插件, 开发工具, 暗色界面, 游戏Mod开发, 自动化攻击