diff --git a/1.json b/1.json index 6ecccd5..c470cff 100644 --- a/1.json +++ b/1.json @@ -1 +1 @@ -[{"id":"80265108-c9b5-4d99-a28b-74031104ffe3","executable":"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\TransPyV\\output\\TransPyV.exe","version":"0.0.3-dev.428","arch":"x86_64","source":"workspace","displayName":"Viper 0.0.3-dev.428"}] +[{"id":"80265108-c9b5-4d99-a28b-74031104ffe3","executable":"D:\\Users\\TermiNexus\\Desktop\\TransPyC\\ViperC\\output\\viperc.exe","version":"0.0.3-dev.428","arch":"x86_64","source":"workspace","displayName":"Viper 0.0.3-dev.428"}] diff --git a/README.md b/README.md index abdb2bd..445d5f1 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ 它有两种模式: -- **`ver `**:对给定的 Windows PE 可执行文件做三项静态/动态校验,确认该产物确实由 TransPyV 工具链生成、且自报版本正确。 +- **`ver `**:对给定的 Windows PE 可执行文件做三项静态/动态校验,确认该产物确实由 ViperC 工具链生成、且自报版本正确。 - **`scan --cache `**:**常驻扫盘发现器**——默认每 10 秒一轮(可用 `--sleep <毫秒>` 改),遍历"常用目录表",递归查找所有同时满足"可解析 PE 且含 `.PRVERSN` 段且 ` --version` 输出以 `Viper` 开头"的 exe,把结果以 JSON 数组写到 **stdout**,并把发现记录写入 JSON 缓存文件。目录表默认自动构建,也可用可重复的 `--path ` **强制替换**;扫盘过程日志(进度行、扫描根进出、逐条过滤诊断、目录表清单等,含被处理路径)默认**静默**,仅在 `--verbose` 时写到 **stderr**;可用 `--need-confirm <秒>` 开启**心跳确认**——由**独立的看门狗子进程**(`VET.exe confirm-watch …`,内部隐藏命令)每 x 秒要求 stdin 输入一行 `{"ok": 1}`,**期限(默认 5000 ms,可用 `--need-confirm-timeout <毫秒>` 改)到点仍未收到合法 `{"ok": 1}`、或收到形状合法但取值不是 `1` 的行**(如 `{"ok": 0}`)即输出 `{"exit":1, "msg": "timeout/ok!=1"}` 并终止 scan 进程;**形状可疑的行**(去掉前导空白后首字符不是 `{` / 整行不含 `}` / 行长超过 256 字节,**含空行**)被忽略并继续在剩余期限内等待,不判失败。 - **`--need-confirm` 开启时另有一条 `check` 请求通道**(依附心跳,见「check 请求通道」):往 stdin 写一行 `{"check": "", "id": <整数>}`,看门狗把它转发给 scan 进程,scan **优先**完成"读 `.PRVERSN` → 执行 `--version` 验证",并把结果以**单行 JSON** 回执写到 stdout。该行不参与心跳判定(期限继续走,仍需照常回 `{"ok": 1}`)。 - **`scan --search-paths`**:**查询开关**(无值)——建好"会搜索的目录表"后**逐行打印**(序号 + 路径 + 目录表来源,输出到 **stderr**)并**直接退出**:不扫盘、不拉起看门狗、不读写缓存,因此**未给 `--cache` 也可运行**(见下文「查询开关 `--search-paths`」)。 @@ -85,16 +85,16 @@ VET.exe scan --cache <缓存 JSON 路径> --need-confirm 3 --need-confirm-timeou # 确保 PATH 含 mingw 与 LLVM $env:PATH = "D:\msys64\mingw64\bin;D:\LLVM\bin;$env:PATH" -# 用 Viper 自举的前端 TransPyV(识别 project.vpj 的 build_dir) -D:\Users\TermiNexus\Desktop\TransPyC\exe\TransPyV.exe ` +# 用 Viper 自举的前端 ViperC(识别 project.vpj 的 build_dir) +D:\Users\TermiNexus\Desktop\TransPyC\exe\viperc.exe ` --project .\project.vpj ``` -产物位于 `VET\.tpv_build\output\VET.exe`(`build_dir` = `./.tpv_build`,`linker.output` = `VET.exe`)。 +产物位于 `VET\__vpcbuild__\output\VET.exe`(`build_dir` = `./__vpcbuild__`,`linker.output` = `VET.exe`)。 > 本次把单文件 `App/main.vp` 拆成 `App/main.vp` + `App/lib/*.vp`(新增 11 个源文件)。 -> 仓库内 `.tpv_build/temp` 可能残留旧单文件构建的中间产物;首次重建建议清缓存: -> `TransPyV.exe --project .\project.vpj --clear-cache`(或直接删除 `VET\.tpv_build`)。 +> 仓库内 `__vpcbuild__/temp` 可能残留旧单文件构建的中间产物;首次重建建议清缓存: +> `viperc.exe --project .\project.vpj --clear-cache`(或直接删除 `VET\__vpcbuild__`)。 > 多文件项目由 `source_dir`(`./App`)**递归**收集 `.vp/.py`,子目录 `lib/` 会自动纳入。 > 也可用 Python 前端:`python ..\TransPyC\Projectrans.py --project .\project.vpj`, @@ -105,29 +105,29 @@ D:\Users\TermiNexus\Desktop\TransPyC\exe\TransPyV.exe ` ```powershell # 单 exe 校验(日志在 stderr) -.\.tpv_build\output\VET.exe ver ..\exe\TransPyV.exe +.\__vpcbuild__\output\VET.exe ver ..\exe\viperc.exe # 扫盘:只跑一轮验证;stdout 重定向到文件即得到 JSON -.\.tpv_build\output\VET.exe scan --cache .\vet_cache.json --once > result.json +.\__vpcbuild__\output\VET.exe scan --cache .\vet_cache.json --once > result.json # 扫盘:仅扫两个指定目录(强制替换目录表;不做任何自动建表) -.\.tpv_build\output\VET.exe scan --cache .\vet_cache.json --once --path .\App --path D:\Viper > result.json +.\__vpcbuild__\output\VET.exe scan --cache .\vet_cache.json --once --path .\App --path D:\Viper > result.json # 查询将搜索的路径(建表后逐行打印到 stderr 即退出;不需要 --cache,也不扫盘) -.\.tpv_build\output\VET.exe scan --search-paths 2>&1 | Tee-Object .\search.log +.\__vpcbuild__\output\VET.exe scan --search-paths 2>&1 | Tee-Object .\search.log # 查询覆盖表:只看这两个目录(不存在的会告警并跳过) -.\.tpv_build\output\VET.exe scan --search-paths --path D:\X --path D:\Y +.\__vpcbuild__\output\VET.exe scan --search-paths --path D:\X --path D:\Y # 常驻扫盘(每 10 秒一轮,Ctrl+C 退出) -.\.tpv_build\output\VET.exe scan --cache .\vet_cache.json +.\__vpcbuild__\output\VET.exe scan --cache .\vet_cache.json # 扫盘:轮间隔改为 1 秒(--sleep 1000) -.\.tpv_build\output\VET.exe scan --cache .\vet_cache.json --sleep 1000 +.\__vpcbuild__\output\VET.exe scan --cache .\vet_cache.json --sleep 1000 # 心跳确认:看门狗子进程每 3 秒要求 stdin 输入一行 {"ok": 1},确认超时 2000 ms。 # 注意:确认由独立子进程按固定节拍驱动,与扫盘是否进行无关(scan 必须活得比 interval 长才看得到效果) -.\.tpv_build\output\VET.exe scan --cache .\vet_cache.json --need-confirm 3 --need-confirm-timeout 2000 2>&1 | Tee-Object .\confirm.log +.\__vpcbuild__\output\VET.exe scan --cache .\vet_cache.json --need-confirm 3 --need-confirm-timeout 2000 2>&1 | Tee-Object .\confirm.log ``` `ver` 模式输出形如(**全部在 stderr**;安静模式不含被校验目标路径与目录表清单): @@ -154,7 +154,7 @@ VET - Viper Environment Tool 0.2.0 ``` VET - Viper Environment Tool 0.2.0 -目标: ..\exe\TransPyV.exe +目标: ..\exe\viperc.exe [0/3] 常用目录表 目录表来源: 自动表 (N 条) @@ -212,13 +212,13 @@ VET - Viper Environment Tool 0.2.0 - `ver` 子命令不支持 `--path`,始终使用自动表(保持原行为)。 -`.PRVERSN` 段由 TransPyV 源码中形如下面的声明生成: +`.PRVERSN` 段由 ViperC 源码中形如下面的声明生成: ```python -V_TPV_VERSION: t.CArray[char] | t.attr.section(".PRVERSN") = "0.0.3-dev.428" +V_VPC_VERSION: t.CArray[char] | t.attr.section(".PRVERSN") = "0.0.3-dev.428" ``` -(见 `TransPyV/App/main.vp:45`,`t.attr.section` 即 `__attribute__((section(...)))`,定义于 `TransPyC/lib/includes/t.py:832`。) +(见 `ViperC/App/main.vp:45`,`t.attr.section` 即 `__attribute__((section(...)))`,定义于 `TransPyC/lib/includes/t.py:832`。) --- @@ -528,7 +528,7 @@ VET.exe confirm-watch --interval --timeout --parent-pid