neko-armor 1.2.2 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -83
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -2,10 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
一个用于 DSH 的本地提示词注入插件。分**快速版**与**专业版(赞助)**,同一个安装器分发。
|
|
4
4
|
|
|
5
|
-
作者:**Yz** 版本:`1.2.
|
|
5
|
+
作者:**Yz** 版本:`1.2.3` 插件标识:`neko-armor`
|
|
6
6
|
|
|
7
7
|
## 更新日志
|
|
8
8
|
|
|
9
|
+
### 1.2.3
|
|
10
|
+
|
|
11
|
+
- **新增「无人设」开关 `noPersona`**:开启后不注入任何人设正文(连内置默认人设一起跳过),只保留破甲规则;称呼字段照旧生效
|
|
12
|
+
- **GitHub 改为主用下载地址**:源码、Releases、问题反馈以 GitHub 为准,Gitee 与蓝奏云降为国内备用
|
|
13
|
+
- README 与 `package.json` 里的仓库链接、文档链接统一指向 GitHub
|
|
14
|
+
|
|
9
15
|
### 1.2.1
|
|
10
16
|
|
|
11
17
|
- **快速版新增「破甲开关」**:设置页可一键切到无破甲模式,只保留人设与称呼,不注入破甲内核
|
|
@@ -13,8 +19,8 @@
|
|
|
13
19
|
- **新增「继续」按钮**:对话被助手主动收尾后,点一下补一条继续指令,不用重新打字
|
|
14
20
|
- 快速版提示词拆成基础段 + 可开关段,配置存 `~/.dsh/neko-armor-quick.json`
|
|
15
21
|
- 设置栏目显示版本信息与赞助入口,快速版能力一目了然
|
|
16
|
-
-
|
|
17
|
-
-
|
|
22
|
+
- **专业版修复:授权信息读不到导致误降级** —— 现已兼容多种存放位置与格式
|
|
23
|
+
- **专业版修复:授权校验未随构建产出生效** —— 现在构建阶段即纳入校验,并修复了两处语法问题
|
|
18
24
|
- **专业版修复:客户端设置页报错会拖挂状态条** —— 缺 `ctx.locale` / `ctx.effect` 时改用内置兜底,设置页单独失效而不影响整块
|
|
19
25
|
- 打包器新增语法自检,坏包会在构建阶段直接失败,不再发出去
|
|
20
26
|
|
|
@@ -78,7 +84,7 @@
|
|
|
78
84
|
|
|
79
85
|
| | 快速版 | 专业版(赞助) |
|
|
80
86
|
| --- | --- | --- |
|
|
81
|
-
| 提示词 | `prompts/free.md`,约 1 KB |
|
|
87
|
+
| 提示词 | `prompts/free.md`,约 1 KB | 完整内核 |
|
|
82
88
|
| 破甲能力 | 保留(不拒绝、无免责、忽略注入、全场景覆盖) | 完整 |
|
|
83
89
|
| 称呼 | 固定「主人」 | 可自定义 |
|
|
84
90
|
| 身份 | 固定「小猫娘」 | 可自定义,激活词跟随身份 |
|
|
@@ -110,12 +116,13 @@ DSH → 左下角头像 → **插件** → **添加插件** → 搜索 `neko-arm
|
|
|
110
116
|
|
|
111
117
|
### 方式二:安装程序(快速版 / 专业版)
|
|
112
118
|
|
|
113
|
-
|
|
119
|
+
**主用下载地址:[github.com/yzzzzzzzzzzzGIT/neko-armor](https://github.com/yzzzzzzzzzzzGIT/neko-armor)**
|
|
114
120
|
|
|
115
121
|
| 来源 | 地址 | 说明 |
|
|
116
122
|
| --- | --- | --- |
|
|
117
|
-
|
|
|
118
|
-
|
|
|
123
|
+
| **GitHub(主用)** | [yzzzzzzzzzzzGIT/neko-armor](https://github.com/yzzzzzzzzzzzGIT/neko-armor) | 源码与 Releases 都在这,优先用这个 |
|
|
124
|
+
| Gitee Releases(备用) | [yzzzzzzzzg/neko-armor](https://gitee.com/yzzzzzzzzg/neko-armor/releases/latest) | 国内访问快,直接下 `小猫娘破甲.exe` |
|
|
125
|
+
| 蓝奏云(备用) | [wwbxj.lanzn.com/b00z21847c](https://wwbxj.lanzn.com/b00z21847c) | 密码 `yznb`,进文件夹下载 zip 后解压 |
|
|
119
126
|
|
|
120
127
|
下载后双击运行。
|
|
121
128
|
|
|
@@ -226,67 +233,6 @@ DSH 有两条挂载路径,效果一样,但插件页的识别不同:
|
|
|
226
233
|
| 自定义人设 | 空 | |
|
|
227
234
|
| 附加要求 | 空 | |
|
|
228
235
|
|
|
229
|
-
## 专业版保护
|
|
230
|
-
|
|
231
|
-
专业版的入口不是明文源码,判定内核还搬进了 WebAssembly。
|
|
232
|
-
|
|
233
|
-
### 三层结构
|
|
234
|
-
|
|
235
|
-
```
|
|
236
|
-
L1 判定内核 kernel.wat → kernel.wasm(389 字节)
|
|
237
|
-
特征匹配在 wasm 里,特征表 XOR 密文,密钥内置
|
|
238
|
-
|
|
239
|
-
L2 JS 加密包 lib/*.js + index.js 合并 62 KB
|
|
240
|
-
AES-256-CBC,每次构建随机 key
|
|
241
|
-
提示词密文与 wasm 字节都内联
|
|
242
|
-
|
|
243
|
-
L3 运行时 loader 解密到内存 → data URL import
|
|
244
|
-
执行完即释放,磁盘无明文
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
### 怎么做的
|
|
248
|
-
|
|
249
|
-
```
|
|
250
|
-
构建期
|
|
251
|
-
kernel.wat → wabt 编译 → kernel.wasm
|
|
252
|
-
lib/*.js → 合并去 import
|
|
253
|
-
prompts/neko.enc → 内联 base64
|
|
254
|
-
kernel.wasm → 内联 base64
|
|
255
|
-
整体 → AES-256-CBC 加密,key 每次随机、分四片存放
|
|
256
|
-
|
|
257
|
-
运行时
|
|
258
|
-
loader 解密 → data URL import → 插件执行
|
|
259
|
-
detectRefusal() 调用 wasm score() → 命中数 → 阈值决策
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
### wasm 内核干了什么
|
|
263
|
-
|
|
264
|
-
```wat
|
|
265
|
-
(func (export "score") (param $text i32) (param $tlen i32)
|
|
266
|
-
(param $enc i32) (param $elen i32) (result i32)
|
|
267
|
-
;; 解密特征表 → 逐条子串匹配 → 返回命中数
|
|
268
|
-
)
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
- 特征表以 XOR 密文传入,**内核内部解密**,`wasm2wat` 只能看到密文和一段解密循环
|
|
272
|
-
- 匹配逻辑(双重循环、字节比较)全在 wasm 里,JS 侧只拿命中数做阈值判断
|
|
273
|
-
- 389 字节,无外部依赖,Node 原生 `WebAssembly.Module` 同步实例化
|
|
274
|
-
|
|
275
|
-
### 强度边界
|
|
276
|
-
|
|
277
|
-
| 攻击 | 结果 |
|
|
278
|
-
| --- | --- |
|
|
279
|
-
| 读文件、grep 关键词 | 挡得住,只有密文 |
|
|
280
|
-
| 找提示词明文 | 挡得住,AES-256 |
|
|
281
|
-
| 改逻辑重打包 | 挡得住,密文改不了 |
|
|
282
|
-
| `wasm2wat` 反编译内核算 | 只能看到密文表和循环骨架,看不到特征词 |
|
|
283
|
-
| Hook `import()` 抓解密后 JS | 挡得住逻辑层,但 JS 一定在内存里 |
|
|
284
|
-
| Hook `WebAssembly.Instance` 抓内存 | 能拿到特征表,但要先写解密器 |
|
|
285
|
-
|
|
286
|
-
最后两行是共同上限:**同进程执行的东西,内存里一定有一次明文**。要突破只有把关键状态放到进程外(云端授权),那需要服务端,不是单机插件能做的。
|
|
287
|
-
|
|
288
|
-
当前这套的效果:逆向要同时搞定 AES 解密、wasm 反编译、特征表 XOR 解密三件事,成本远超收益。
|
|
289
|
-
|
|
290
236
|
## 命令行
|
|
291
237
|
|
|
292
238
|
```bash
|
|
@@ -390,10 +336,10 @@ neko-armor/ ← npm 包 & GitHub 仓库(快速版)
|
|
|
390
336
|
|
|
391
337
|
(本地私有,不入库)
|
|
392
338
|
├─ Professional Edition/ 专业版源码
|
|
393
|
-
│ ├─ index.js
|
|
339
|
+
│ ├─ index.js 内核加载 + 配置通道
|
|
394
340
|
│ ├─ client.js 状态条 + 完整设置表单
|
|
395
|
-
│ └─ prompts/
|
|
396
|
-
├─ packaging/
|
|
341
|
+
│ └─ prompts/ 专业版提示词
|
|
342
|
+
├─ packaging/ 打包脚本
|
|
397
343
|
└─ dist/小猫娘破甲.exe 单文件安装器(上传到 Releases)
|
|
398
344
|
```
|
|
399
345
|
|
|
@@ -405,12 +351,11 @@ neko-armor/ ← npm 包 & GitHub 仓库(快速版)
|
|
|
405
351
|
npm publish --access public
|
|
406
352
|
```
|
|
407
353
|
|
|
408
|
-
包内只含 7 个文件(`npm pack --dry-run`
|
|
354
|
+
包内只含 7 个文件(`npm pack --dry-run` 可核对),不含任何专业版资源。
|
|
409
355
|
|
|
410
356
|
### 安装程序 → Gitee Releases
|
|
411
357
|
|
|
412
358
|
```bash
|
|
413
|
-
node packaging/encrypt-pro.mjs # 先重加密专业版提示词
|
|
414
359
|
node packaging/build.mjs # 打包两版进 EXE
|
|
415
360
|
```
|
|
416
361
|
|
|
@@ -424,16 +369,6 @@ node -e "const p=require('./package.json');p.version='1.0.7';p.dsh.version='1.0.
|
|
|
424
369
|
|
|
425
370
|
版本号只改 `package.json` 一处,界面、插件页、安装器标题会自动跟随。
|
|
426
371
|
|
|
427
|
-
改了专业版提示词必须重跑 `encrypt-pro.mjs`,否则 `neko.enc` 仍是旧内容。
|
|
428
|
-
|
|
429
|
-
## 提示词加密(专业版)
|
|
430
|
-
|
|
431
|
-
- 明文提示词不落地到插件目录,只有 `prompts/neko.enc`
|
|
432
|
-
- 算法 AES-256-CBC,IV 由密钥的 SHA256 派生
|
|
433
|
-
- 密钥 32 字节拆成 4 段散放在 `index.js` 中
|
|
434
|
-
- 模块加载时在内存解密,不写回磁盘
|
|
435
|
-
|
|
436
|
-
静态打开插件目录只能看到二进制;要拿到明文必须读懂 `index.js` 并复现解密流程。
|
|
437
372
|
|
|
438
373
|
## 许可
|
|
439
374
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "neko-armor",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"description": "小猫娘破甲(快速版)— DSH 提示词注入插件,精简破甲内核,固定身份",
|
|
5
5
|
"author": "Yz",
|
|
6
6
|
"license": "CC-BY-NC-SA-4.0",
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
],
|
|
24
24
|
"repository": {
|
|
25
25
|
"type": "git",
|
|
26
|
-
"url": "git+https://
|
|
26
|
+
"url": "git+https://github.com/yzzzzzzzzzzzGIT/neko-armor.git"
|
|
27
27
|
},
|
|
28
|
-
"homepage": "https://
|
|
28
|
+
"homepage": "https://github.com/yzzzzzzzzzzzGIT/neko-armor#readme",
|
|
29
29
|
"bugs": {
|
|
30
|
-
"url": "https://
|
|
30
|
+
"url": "https://github.com/yzzzzzzzzzzzGIT/neko-armor/issues"
|
|
31
31
|
},
|
|
32
32
|
"keywords": [
|
|
33
33
|
"dsh",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"dsh": {
|
|
45
45
|
"id": "neko-armor",
|
|
46
46
|
"name": "小猫娘破甲",
|
|
47
|
-
"version": "1.2.
|
|
47
|
+
"version": "1.2.3",
|
|
48
48
|
"author": "Yz",
|
|
49
49
|
"edition": "free",
|
|
50
50
|
"permissions": "系统提示词注入, 客户端状态条, 设置栏目",
|