deepspider 0.2.11 → 0.3.0

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.
Files changed (146) hide show
  1. package/README.md +71 -24
  2. package/bin/cli.js +45 -0
  3. package/package.json +10 -4
  4. package/src/agent/core/PanelBridge.js +133 -0
  5. package/src/agent/core/RetryManager.js +51 -0
  6. package/src/agent/core/StreamHandler.js +263 -0
  7. package/src/agent/core/index.js +7 -0
  8. package/src/agent/errors/ErrorClassifier.js +43 -0
  9. package/src/agent/errors/SpiderError.js +68 -0
  10. package/src/agent/errors/index.js +19 -0
  11. package/src/agent/run.js +67 -460
  12. package/src/agent/setup.js +14 -14
  13. package/src/agent/subagents/factory.js +60 -0
  14. package/src/agent/subagents/index.js +3 -0
  15. package/src/agent/tools/report.js +36 -4
  16. package/src/browser/client.js +47 -10
  17. package/src/cli/commands/config.js +94 -0
  18. package/src/cli/commands/help.js +34 -0
  19. package/src/cli/commands/update.js +78 -0
  20. package/src/cli/commands/version.js +9 -0
  21. package/src/cli/config.js +15 -0
  22. package/src/config/settings.js +102 -0
  23. package/.claude/agents/check.md +0 -122
  24. package/.claude/agents/debug.md +0 -106
  25. package/.claude/agents/dispatch.md +0 -214
  26. package/.claude/agents/implement.md +0 -96
  27. package/.claude/agents/plan.md +0 -396
  28. package/.claude/agents/research.md +0 -120
  29. package/.claude/commands/evolve/merge.md +0 -80
  30. package/.claude/commands/trellis/before-backend-dev.md +0 -13
  31. package/.claude/commands/trellis/before-frontend-dev.md +0 -13
  32. package/.claude/commands/trellis/break-loop.md +0 -107
  33. package/.claude/commands/trellis/check-backend.md +0 -13
  34. package/.claude/commands/trellis/check-cross-layer.md +0 -153
  35. package/.claude/commands/trellis/check-frontend.md +0 -13
  36. package/.claude/commands/trellis/create-command.md +0 -154
  37. package/.claude/commands/trellis/finish-work.md +0 -129
  38. package/.claude/commands/trellis/integrate-skill.md +0 -219
  39. package/.claude/commands/trellis/onboard.md +0 -358
  40. package/.claude/commands/trellis/parallel.md +0 -193
  41. package/.claude/commands/trellis/record-session.md +0 -62
  42. package/.claude/commands/trellis/start.md +0 -280
  43. package/.claude/commands/trellis/update-spec.md +0 -213
  44. package/.claude/hooks/inject-subagent-context.py +0 -758
  45. package/.claude/hooks/ralph-loop.py +0 -374
  46. package/.claude/hooks/session-start.py +0 -126
  47. package/.claude/settings.json +0 -41
  48. package/.claude/skills/deepagents-guide/SKILL.md +0 -428
  49. package/.cursor/commands/trellis-before-backend-dev.md +0 -13
  50. package/.cursor/commands/trellis-before-frontend-dev.md +0 -13
  51. package/.cursor/commands/trellis-break-loop.md +0 -107
  52. package/.cursor/commands/trellis-check-backend.md +0 -13
  53. package/.cursor/commands/trellis-check-cross-layer.md +0 -153
  54. package/.cursor/commands/trellis-check-frontend.md +0 -13
  55. package/.cursor/commands/trellis-create-command.md +0 -154
  56. package/.cursor/commands/trellis-finish-work.md +0 -129
  57. package/.cursor/commands/trellis-integrate-skill.md +0 -219
  58. package/.cursor/commands/trellis-onboard.md +0 -358
  59. package/.cursor/commands/trellis-record-session.md +0 -62
  60. package/.cursor/commands/trellis-start.md +0 -156
  61. package/.cursor/commands/trellis-update-spec.md +0 -213
  62. package/.github/workflows/publish.yml +0 -63
  63. package/.husky/pre-commit +0 -1
  64. package/.mcp.json +0 -8
  65. package/.trellis/.template-hashes.json +0 -65
  66. package/.trellis/.version +0 -1
  67. package/.trellis/scripts/add-session.sh +0 -384
  68. package/.trellis/scripts/common/developer.sh +0 -129
  69. package/.trellis/scripts/common/git-context.sh +0 -263
  70. package/.trellis/scripts/common/paths.sh +0 -208
  71. package/.trellis/scripts/common/phase.sh +0 -150
  72. package/.trellis/scripts/common/registry.sh +0 -247
  73. package/.trellis/scripts/common/task-queue.sh +0 -142
  74. package/.trellis/scripts/common/task-utils.sh +0 -151
  75. package/.trellis/scripts/common/worktree.sh +0 -128
  76. package/.trellis/scripts/create-bootstrap.sh +0 -299
  77. package/.trellis/scripts/get-context.sh +0 -7
  78. package/.trellis/scripts/get-developer.sh +0 -15
  79. package/.trellis/scripts/init-developer.sh +0 -34
  80. package/.trellis/scripts/multi-agent/cleanup.sh +0 -396
  81. package/.trellis/scripts/multi-agent/create-pr.sh +0 -241
  82. package/.trellis/scripts/multi-agent/plan.sh +0 -207
  83. package/.trellis/scripts/multi-agent/start.sh +0 -310
  84. package/.trellis/scripts/multi-agent/status.sh +0 -828
  85. package/.trellis/scripts/task.sh +0 -1118
  86. package/.trellis/spec/backend/ci-cd-guidelines.md +0 -73
  87. package/.trellis/spec/backend/deepagents-guide.md +0 -380
  88. package/.trellis/spec/backend/directory-structure.md +0 -126
  89. package/.trellis/spec/backend/examples/skills/deepagents-guide/README.md +0 -11
  90. package/.trellis/spec/backend/examples/skills/deepagents-guide/agent.js.template +0 -20
  91. package/.trellis/spec/backend/examples/skills/deepagents-guide/skills-config.js.template +0 -13
  92. package/.trellis/spec/backend/examples/skills/deepagents-guide/subagent.js.template +0 -19
  93. package/.trellis/spec/backend/hook-guidelines.md +0 -218
  94. package/.trellis/spec/backend/index.md +0 -37
  95. package/.trellis/spec/backend/quality-guidelines.md +0 -302
  96. package/.trellis/spec/backend/state-management.md +0 -76
  97. package/.trellis/spec/backend/tool-guidelines.md +0 -144
  98. package/.trellis/spec/backend/type-safety.md +0 -71
  99. package/.trellis/spec/guides/code-reuse-thinking-guide.md +0 -92
  100. package/.trellis/spec/guides/cross-layer-thinking-guide.md +0 -94
  101. package/.trellis/spec/guides/index.md +0 -79
  102. package/.trellis/tasks/archive/02-02-evolving-skills/prd.md +0 -61
  103. package/.trellis/tasks/archive/02-02-evolving-skills/task.json +0 -29
  104. package/.trellis/tasks/archive/2026-02/00-bootstrap-guidelines/prd.md +0 -86
  105. package/.trellis/tasks/archive/2026-02/00-bootstrap-guidelines/task.json +0 -27
  106. package/.trellis/tasks/archive/2026-02/02-02-skills-system/check.jsonl +0 -3
  107. package/.trellis/tasks/archive/2026-02/02-02-skills-system/debug.jsonl +0 -2
  108. package/.trellis/tasks/archive/2026-02/02-02-skills-system/implement.jsonl +0 -5
  109. package/.trellis/tasks/archive/2026-02/02-02-skills-system/prd.md +0 -33
  110. package/.trellis/tasks/archive/2026-02/02-02-skills-system/task.json +0 -41
  111. package/.trellis/workflow.md +0 -407
  112. package/.trellis/workspace/index.md +0 -123
  113. package/.trellis/workspace/pony/index.md +0 -42
  114. package/.trellis/workspace/pony/journal-1.md +0 -125
  115. package/.trellis/worktree.yaml +0 -47
  116. package/AGENTS.md +0 -18
  117. package/CLAUDE.md +0 -315
  118. package/agents/deepspider.md +0 -142
  119. package/docs/DEBUG.md +0 -42
  120. package/docs/GUIDE.md +0 -334
  121. package/docs/PROMPT.md +0 -60
  122. package/docs/USAGE.md +0 -226
  123. package/eslint.config.js +0 -51
  124. package/test/analyze.test.js +0 -90
  125. package/test/envdump.test.js +0 -74
  126. package/test/flow.test.js +0 -90
  127. package/test/hooks.test.js +0 -138
  128. package/test/plugin.test.js +0 -35
  129. package/test/refactor-full.test.js +0 -30
  130. package/test/refactor.test.js +0 -21
  131. package/test/samples/obfuscated.js +0 -61
  132. package/test/samples/original.js +0 -66
  133. package/test/samples/v10_eval_chain.js +0 -52
  134. package/test/samples/v11_bytecode_vm.js +0 -81
  135. package/test/samples/v12_polymorphic.js +0 -69
  136. package/test/samples/v1_ob_basic.js +0 -98
  137. package/test/samples/v2_ob_advanced.js +0 -99
  138. package/test/samples/v3_jjencode.js +0 -77
  139. package/test/samples/v4_aaencode.js +0 -73
  140. package/test/samples/v5_control_flow.js +0 -86
  141. package/test/samples/v6_string_encryption.js +0 -71
  142. package/test/samples/v7_jsvmp.js +0 -83
  143. package/test/samples/v8_anti_debug.js +0 -79
  144. package/test/samples/v9_proxy_trap.js +0 -49
  145. package/test/samples.test.js +0 -96
  146. package/test/webcrack.test.js +0 -55
@@ -1,81 +0,0 @@
1
- /**
2
- * v11: 自定义字节码解释器
3
- * 技术: 将JS编译为自定义字节码,运行时解释执行
4
- * 特点: 完全隐藏原始逻辑,需逆向VM才能理解
5
- */
6
-
7
- (function() {
8
- // 字节码指令集
9
- var OP = {
10
- NOP: 0x00, PUSH: 0x01, POP: 0x02,
11
- ADD: 0x10, SUB: 0x11, MUL: 0x12,
12
- SHL: 0x13, AND: 0x14, XOR: 0x15,
13
- CALL: 0x20, RET: 0x21,
14
- LOAD: 0x30, STORE: 0x31,
15
- HALT: 0xFF
16
- };
17
-
18
- // VM状态
19
- var stack = [];
20
- var mem = {};
21
- var pc = 0;
22
-
23
- // 内置函数
24
- var funcs = {
25
- 0: function() { return Date.now(); },
26
- 1: function() { return Math.random(); },
27
- 2: function(s) { return btoa(s); }
28
- };
29
-
30
- // 执行器
31
- var exec = function(code) {
32
- pc = 0;
33
- while (pc < code.length) {
34
- var op = code[pc++];
35
- switch (op) {
36
- case OP.PUSH: stack.push(code[pc++]); break;
37
- case OP.POP: mem[code[pc++]] = stack.pop(); break;
38
- case OP.ADD: stack.push(stack.pop() + stack.pop()); break;
39
- case OP.SHL: var a = stack.pop(), b = stack.pop(); stack.push(b << a); break;
40
- case OP.AND: stack.push(stack.pop() & stack.pop()); break;
41
- case OP.CALL: stack.push(funcs[code[pc++]](stack.pop())); break;
42
- case OP.HALT: return stack.pop();
43
- }
44
- }
45
- };
46
-
47
- // 常量
48
- var SECRET = 'deepspider_test_2024';
49
- var APPID = 'app_12345';
50
-
51
- // 哈希函数
52
- var hash = function(s) {
53
- var h = 0;
54
- for (var i = 0; i < s.length; i++) {
55
- h = ((h << 5) - h) + s.charCodeAt(i);
56
- h = h & h;
57
- }
58
- return Math.abs(h).toString(16);
59
- };
60
-
61
- // 主逻辑
62
- var ts = Math.floor(Date.now() / 1000);
63
- var c = 'abcdef0123456789', nonce = '';
64
- for (var i = 0; i < 8; i++) {
65
- nonce += c.charAt(Math.floor(Math.random() * c.length));
66
- }
67
-
68
- var signStr = APPID + ts + nonce + SECRET;
69
- var data = { user: 'test', action: 'login' };
70
-
71
- var result = Object.assign({}, data, {
72
- sign: hash(signStr),
73
- timestamp: ts,
74
- nonce: nonce,
75
- app_id: APPID,
76
- encrypted: btoa(JSON.stringify(data))
77
- });
78
-
79
- console.log('Result:', result);
80
- return result;
81
- })();
@@ -1,69 +0,0 @@
1
- /**
2
- * v12: 多态混淆
3
- * 技术: 每次执行生成不同的代码结构
4
- * 特点: 动态生成代码,难以静态分析
5
- */
6
-
7
- (function() {
8
- // 随机选择实现方式
9
- var _r = Math.random();
10
-
11
- // 多态哈希实现
12
- var hash;
13
- if (_r < 0.33) {
14
- hash = function(s) {
15
- var h = 0;
16
- for (var i = 0; i < s.length; i++) {
17
- h = ((h << 5) - h) + s.charCodeAt(i);
18
- h = h & h;
19
- }
20
- return Math.abs(h).toString(16);
21
- };
22
- } else if (_r < 0.66) {
23
- hash = function(s) {
24
- var h = 5381;
25
- for (var i = 0; i < s.length; i++) {
26
- h = ((h << 5) + h) ^ s.charCodeAt(i);
27
- }
28
- return Math.abs(h).toString(16);
29
- };
30
- } else {
31
- hash = function(s) {
32
- var h = 0, g;
33
- for (var i = 0; i < s.length; i++) {
34
- h = (h << 4) + s.charCodeAt(i);
35
- g = h & 0xF0000000;
36
- if (g) h ^= g >> 24;
37
- h &= ~g;
38
- }
39
- return Math.abs(h).toString(16);
40
- };
41
- }
42
-
43
- // 常量
44
- var SECRET = 'deepspider_test_2024';
45
- var APPID = 'app_12345';
46
-
47
- // 时间戳
48
- var ts = Math.floor(Date.now() / 1000);
49
-
50
- // 随机字符串
51
- var c = 'abcdef0123456789', nonce = '';
52
- for (var i = 0; i < 8; i++) {
53
- nonce += c.charAt(Math.floor(Math.random() * c.length));
54
- }
55
-
56
- var signStr = APPID + ts + nonce + SECRET;
57
- var data = { user: 'test', action: 'login' };
58
-
59
- var result = Object.assign({}, data, {
60
- sign: hash(signStr),
61
- timestamp: ts,
62
- nonce: nonce,
63
- app_id: APPID,
64
- encrypted: btoa(JSON.stringify(data))
65
- });
66
-
67
- console.log('Result:', result);
68
- return result;
69
- })();
@@ -1,98 +0,0 @@
1
- /**
2
- * v1: JavaScript Obfuscator 基础混淆
3
- * 技术: 变量重命名、字符串数组、十六进制编码
4
- * 参考: https://obfuscator.io
5
- */
6
-
7
- var _0x4a2c = [
8
- '\x6a\x73\x66\x6f\x72\x67\x65\x5f\x74\x65\x73\x74\x5f\x32\x30\x32\x34',
9
- '\x61\x70\x70\x5f\x31\x32\x33\x34\x35',
10
- '\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74',
11
- '\x74\x6f\x53\x74\x72\x69\x6e\x67',
12
- '\x66\x6c\x6f\x6f\x72',
13
- '\x6e\x6f\x77',
14
- '\x61\x62\x63\x64\x65\x66\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39',
15
- '\x63\x68\x61\x72\x41\x74',
16
- '\x72\x61\x6e\x64\x6f\x6d',
17
- '\x6c\x65\x6e\x67\x74\x68',
18
- '\x73\x69\x67\x6e',
19
- '\x74\x69\x6d\x65\x73\x74\x61\x6d\x70',
20
- '\x6e\x6f\x6e\x63\x65',
21
- '\x61\x70\x70\x5f\x69\x64',
22
- '\x65\x6e\x63\x72\x79\x70\x74\x65\x64',
23
- '\x73\x74\x72\x69\x6e\x67\x69\x66\x79',
24
- '\x75\x73\x65\x72',
25
- '\x74\x65\x73\x74',
26
- '\x61\x63\x74\x69\x6f\x6e',
27
- '\x6c\x6f\x67\x69\x6e',
28
- '\x6c\x6f\x67',
29
- '\x52\x65\x73\x75\x6c\x74\x3a'
30
- ];
31
-
32
- (function(_0x2d8f05, _0x4a2c9a) {
33
- var _0x4b5b24 = function(_0x2d5f0a) {
34
- while (--_0x2d5f0a) {
35
- _0x2d8f05['push'](_0x2d8f05['shift']());
36
- }
37
- };
38
- _0x4b5b24(++_0x4a2c9a);
39
- }(_0x4a2c, 0x1b8));
40
-
41
- var _0x4b5b = function(_0x2d8f05, _0x4a2c9a) {
42
- _0x2d8f05 = _0x2d8f05 - 0x0;
43
- var _0x4b5b24 = _0x4a2c[_0x2d8f05];
44
- return _0x4b5b24;
45
- };
46
-
47
- var _0x2d5f0a = _0x4b5b('0x0');
48
- var _0x3c7e1b = _0x4b5b('0x1');
49
-
50
- function _0x1a2b3c(_0x5d6e7f) {
51
- var _0x8a9b0c = 0x0;
52
- for (var _0xd1e2f3 = 0x0; _0xd1e2f3 < _0x5d6e7f[_0x4b5b('0x9')]; _0xd1e2f3++) {
53
- var _0x4g5h6i = _0x5d6e7f[_0x4b5b('0x2')](_0xd1e2f3);
54
- _0x8a9b0c = ((_0x8a9b0c << 0x5) - _0x8a9b0c) + _0x4g5h6i;
55
- _0x8a9b0c = _0x8a9b0c & _0x8a9b0c;
56
- }
57
- return Math['abs'](_0x8a9b0c)[_0x4b5b('0x3')](0x10);
58
- }
59
-
60
- function _0x7j8k9l() {
61
- return Math[_0x4b5b('0x4')](Date[_0x4b5b('0x5')]() / 0x3e8);
62
- }
63
-
64
- function _0xm1n2o3(_0xp4q5r6) {
65
- var _0xs7t8u9 = _0x4b5b('0x6');
66
- var _0xv0w1x2 = '';
67
- for (var _0xy3z4a5 = 0x0; _0xy3z4a5 < _0xp4q5r6; _0xy3z4a5++) {
68
- _0xv0w1x2 += _0xs7t8u9[_0x4b5b('0x7')](Math[_0x4b5b('0x4')](Math[_0x4b5b('0x8')]() * _0xs7t8u9[_0x4b5b('0x9')]));
69
- }
70
- return _0xv0w1x2;
71
- }
72
-
73
- function _0xb6c7d8(_0xe9f0g1) {
74
- var _0xh2i3j4 = _0x7j8k9l();
75
- var _0xk5l6m7 = _0xm1n2o3(0x8);
76
- var _0xn8o9p0 = _0x3c7e1b + _0xh2i3j4 + _0xk5l6m7 + _0x2d5f0a;
77
- var _0xq1r2s3 = _0x1a2b3c(_0xn8o9p0);
78
- var _0xt4u5v6 = {};
79
- _0xt4u5v6[_0x4b5b('0xa')] = _0xq1r2s3;
80
- _0xt4u5v6[_0x4b5b('0xb')] = _0xh2i3j4;
81
- _0xt4u5v6[_0x4b5b('0xc')] = _0xk5l6m7;
82
- _0xt4u5v6[_0x4b5b('0xd')] = _0x3c7e1b;
83
- return _0xt4u5v6;
84
- }
85
-
86
- function _0xw7x8y9(_0xz0a1b2) {
87
- var _0xc3d4e5 = _0xb6c7d8(_0xz0a1b2);
88
- return Object['assign']({}, _0xz0a1b2, _0xc3d4e5, {
89
- [_0x4b5b('0xe')]: btoa(JSON[_0x4b5b('0xf')](_0xz0a1b2))
90
- });
91
- }
92
-
93
- var _0xf6g7h8 = {};
94
- _0xf6g7h8[_0x4b5b('0x10')] = _0x4b5b('0x11');
95
- _0xf6g7h8[_0x4b5b('0x12')] = _0x4b5b('0x13');
96
- var _0xi9j0k1 = _0xw7x8y9(_0xf6g7h8);
97
- console[_0x4b5b('0x14')](_0x4b5b('0x15'), _0xi9j0k1);
98
- _0xi9j0k1;
@@ -1,99 +0,0 @@
1
- /**
2
- * v2: JavaScript Obfuscator 高级混淆
3
- * 技术: RC4字符串加密 + 控制流平坦化 + 死代码注入 + 自我防御
4
- * 参考: https://obfuscator.io
5
- */
6
-
7
- // RC4 解密函数
8
- function _0xrc4(_0xkey, _0xstr) {
9
- var _0xs = [], _0xj = 0, _0xx, _0xres = '';
10
- for (var _0xi = 0; _0xi < 256; _0xi++) { _0xs[_0xi] = _0xi; }
11
- for (_0xi = 0; _0xi < 256; _0xi++) {
12
- _0xj = (_0xj + _0xs[_0xi] + _0xkey.charCodeAt(_0xi % _0xkey.length)) % 256;
13
- _0xx = _0xs[_0xi]; _0xs[_0xi] = _0xs[_0xj]; _0xs[_0xj] = _0xx;
14
- }
15
- _0xi = 0; _0xj = 0;
16
- for (var _0xy = 0; _0xy < _0xstr.length; _0xy++) {
17
- _0xi = (_0xi + 1) % 256;
18
- _0xj = (_0xj + _0xs[_0xi]) % 256;
19
- _0xx = _0xs[_0xi]; _0xs[_0xi] = _0xs[_0xj]; _0xs[_0xj] = _0xx;
20
- _0xres += String.fromCharCode(_0xstr.charCodeAt(_0xy) ^ _0xs[(_0xs[_0xi] + _0xs[_0xj]) % 256]);
21
- }
22
- return _0xres;
23
- }
24
-
25
- // 加密的字符串数组
26
- var _0x4f3a = [
27
- '\x57\x46\x4a\x76\x63\x6d\x64\x6c', '\x58\x33\x52\x6c\x63\x33\x52\x66',
28
- '\x4d\x6a\x41\x79\x4e\x41\x3d\x3d', '\x59\x58\x42\x77\x58\x7a\x45\x79'
29
- ];
30
-
31
- // 控制流平坦化的主函数
32
- (function() {
33
- var _0xstate = '0';
34
- var _0xSECRET = '', _0xAPPID = '';
35
- var _0xresult = null;
36
-
37
- while (true) {
38
- switch (_0xstate) {
39
- case '0':
40
- _0xSECRET = atob('anNmb3JnZV90ZXN0XzIwMjQ=');
41
- _0xstate = '1';
42
- break;
43
- case '1':
44
- _0xAPPID = atob('YXBwXzEyMzQ1');
45
- _0xstate = '2';
46
- break;
47
- case '2':
48
- var _0xhash = function(_0xstr) {
49
- var _0xh = 0;
50
- for (var _0xi = 0; _0xi < _0xstr.length; _0xi++) {
51
- _0xh = ((_0xh << 5) - _0xh) + _0xstr.charCodeAt(_0xi);
52
- _0xh = _0xh & _0xh;
53
- }
54
- return Math.abs(_0xh).toString(16);
55
- };
56
- _0xstate = '3';
57
- break;
58
- case '3':
59
- var _0xts = function() { return Math.floor(Date.now() / 1000); };
60
- _0xstate = '4';
61
- break;
62
- case '4':
63
- var _0xrand = function(_0xlen) {
64
- var _0xc = 'abcdef0123456789', _0xr = '';
65
- for (var _0xi = 0; _0xi < _0xlen; _0xi++) {
66
- _0xr += _0xc.charAt(Math.floor(Math.random() * _0xc.length));
67
- }
68
- return _0xr;
69
- };
70
- _0xstate = '5';
71
- break;
72
- case '5':
73
- var _0xgenSign = function(_0xp) {
74
- var _0xt = _0xts(), _0xn = _0xrand(8);
75
- var _0xsStr = _0xAPPID + _0xt + _0xn + _0xSECRET;
76
- return { sign: _0xhash(_0xsStr), timestamp: _0xt, nonce: _0xn, app_id: _0xAPPID };
77
- };
78
- _0xstate = '6';
79
- break;
80
- case '6':
81
- var _0xencrypt = function(_0xd) {
82
- var _0xs = _0xgenSign(_0xd);
83
- return Object.assign({}, _0xd, _0xs, { encrypted: btoa(JSON.stringify(_0xd)) });
84
- };
85
- _0xstate = '7';
86
- break;
87
- case '7':
88
- _0xresult = _0xencrypt({ user: 'test', action: 'login' });
89
- _0xstate = '8';
90
- break;
91
- case '8':
92
- console.log('Result:', _0xresult);
93
- _0xstate = '9';
94
- break;
95
- case '9':
96
- return _0xresult;
97
- }
98
- }
99
- })();
@@ -1,77 +0,0 @@
1
- /**
2
- * v3: JJEncode 颜文字混淆
3
- * 技术: 使用日式颜文字字符进行编码,利用JS类型转换特性
4
- * 特点: 代码看起来像颜文字表情,但实际可执行
5
- */
6
-
7
- // JJEncode 核心解码器
8
- var $ = ~[];
9
- $ = {
10
- ___: ++$,
11
- $$$$: (![]+"")[$],
12
- __$: ++$,
13
- $_$_: (![]+"")[$],
14
- _$_: ++$,
15
- $_$$: ({}+"")[$],
16
- $$_$: ($[$]+"")[$],
17
- _$$: ++$,
18
- $$$_: (!""+"" )[$],
19
- $__: ++$,
20
- $_$: ++$,
21
- $$__: ({}+"")[$],
22
- $$_: ++$,
23
- $$$: ++$,
24
- $___: ++$,
25
- $__$: ++$
26
- };
27
-
28
- $.$_ = ($.$_ = $ + "")[$.$_$] +
29
- ($._$ = $.$_[$.__$]) +
30
- ($.$$ = ($.$ + "")[$.__$]) +
31
- ((!$) + "")[$._$$] +
32
- ($.__ = $.$_[$.$$_]) +
33
- ($.$ = (!"" + "")[$.__$]) +
34
- ($._ = (!"" + "")[$._$_]) +
35
- $.$_[$.$_$] + $.__ + $._$ + $.$;
36
-
37
- $.$$ = $.$ + (!"" + "")[$._$$] + $.__ + $._ + $.$ + $.$$;
38
- $.$ = ($.___)[$.$_][$.$_];
39
-
40
- // 编码后的核心逻辑 - 通过字符拼接构建代码
41
- var _$$ = "constructor";
42
- var __$ = ([][[]] + "")[5] + ([][[]] + "")[1]; // "un" + "d"
43
- var ___ = Function;
44
-
45
- // 构建执行字符串
46
- var encoded = [];
47
- encoded[0] = 118; encoded[1] = 97; encoded[2] = 114; // "var"
48
- encoded[3] = 32; // space
49
- encoded[4] = 83; encoded[5] = 69; encoded[6] = 67; // "SEC"
50
-
51
- // 解码执行
52
- var decode = function(arr) {
53
- return arr.map(function(c) { return String.fromCharCode(c); }).join('');
54
- };
55
-
56
- // 核心代码(编码形式)
57
- var coreCode = [
58
- 99,111,110,115,116,32,83,69,67,82,69,84,95,75,69,89,32,61,32,
59
- 39,106,115,102,111,114,103,101,95,116,101,115,116,95,50,48,50,52,39,59
60
- ];
61
-
62
- var coreCode2 = [
63
- 99,111,110,115,116,32,65,80,80,95,73,68,32,61,32,39,97,112,112,
64
- 95,49,50,51,52,53,39,59
65
- ];
66
-
67
- // 函数体编码
68
- var funcBody = [
69
- 102,117,110,99,116,105,111,110,32,115,105,109,112,108,101,72,97,115,104,40,115,116,114,41,123,
70
- 108,101,116,32,104,61,48,59,102,111,114,40,108,101,116,32,105,61,48,59,105,60,115,116,114,46,
71
- 108,101,110,103,116,104,59,105,43,43,41,123,104,61,40,40,104,60,60,53,41,45,104,41,43,115,116,
72
- 114,46,99,104,97,114,67,111,100,101,65,116,40,105,41,59,104,61,104,38,104,125,114,101,116,117,
73
- 114,110,32,77,97,116,104,46,97,98,115,40,104,41,46,116,111,83,116,114,105,110,103,40,49,54,41,125
74
- ];
75
-
76
- // 执行解码后的代码
77
- ___(decode(coreCode) + decode(coreCode2) + decode(funcBody))();
@@ -1,73 +0,0 @@
1
- /**
2
- * v4: AAEncode 颜文字混淆
3
- * 技术: 使用日式颜文字(゚ω゚)ノ进行编码
4
- * 特点: 全部由颜文字组成,极具迷惑性
5
- */
6
-
7
- ゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_'];
8
- o=(゚ー゚) =_=3;
9
- c=(゚Θ゚) =(゚ー゚)-(゚ー゚);
10
- (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);
11
- (゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] };
12
- (゚Д゚) .゚ー゚ノ=((゚Д゚)+'_') [o^_^o -(゚Θ゚)];
13
- (゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];
14
- (゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];
15
- (o゚ー゚o)=(゚Д゚) ['c']+(゚Д゚) ['o'];
16
- (゚Д゚) ['゚Θ゚']= (゚Д゚) ['c']+(゚Д゚) ['o']+(゚Д゚) ['c'];
17
- (゚Д゚) ['゚ω゚ノ']= (゚Д゚) ['c']+(゚Д゚) ['o']+(゚Д゚) ['c'];
18
- (゚Д゚) [゚Θ゚]= (゚ω゚ノ) [゚Θ゚];
19
- (゚Д゚) ['c']=((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)+(゚Θ゚)];
20
- (゚Д゚) ['o']=((゚Д゚)+'_') [(゚ー゚)];
21
- (゚ー゚)=(゚ー゚)+(゚Θ゚);
22
- (゚Д゚)[゚ー゚]='\\';
23
-
24
- // 简化版AAEncode - 实际可执行的混淆代码
25
- (function() {
26
- var ω = 'constructor';
27
- var Д = []['filter'][ω](ω);
28
- var ゚ = {
29
- ー: 'a]b[c'.split(']')[0],
30
- Θ: (![]+[])[+!![]]
31
- };
32
-
33
- // 核心逻辑的编码表示
34
- var _ωω_ = function(゚ω゚) {
35
- var ゚Д゚ = 0;
36
- for (var ゚Θ゚ = 0; ゚Θ゚ < ゚ω゚.length; ゚Θ゚++) {
37
- var o゚ー゚o = ゚ω゚.charCodeAt(゚Θ゚);
38
- ゚Д゚ = ((゚Д゚ << 5) - ゚Д゚) + o゚ー゚o;
39
- ゚Д゚ = ゚Д゚ & ゚Д゚;
40
- }
41
- return Math.abs(゚Д゚).toString(16);
42
- };
43
-
44
- var _゚ω゚_ = function() {
45
- return Math.floor(Date.now() / 1000);
46
- };
47
-
48
- var _゚Д゚_ = function(゚ー゚) {
49
- var c = 'abcdef0123456789', r = '';
50
- for (var i = 0; i < ゚ー゚; i++) {
51
- r += c.charAt(Math.floor(Math.random() * c.length));
52
- }
53
- return r;
54
- };
55
-
56
- var ゚Θ゚ノ = 'deepspider_test_2024';
57
- var ゚ω゚ノノ = 'app_12345';
58
-
59
- var _genSign_ = function(p) {
60
- var t = _゚ω゚_(), n = _゚Д゚_(8);
61
- var s = ゚ω゚ノノ + t + n + ゚Θ゚ノ;
62
- return { sign: _ωω_(s), timestamp: t, nonce: n, app_id: ゚ω゚ノノ };
63
- };
64
-
65
- var _encrypt_ = function(d) {
66
- var s = _genSign_(d);
67
- return Object.assign({}, d, s, { encrypted: btoa(JSON.stringify(d)) });
68
- };
69
-
70
- var result = _encrypt_({ user: 'test', action: 'login' });
71
- console.log('Result:', result);
72
- return result;
73
- })();
@@ -1,86 +0,0 @@
1
- /**
2
- * v5: 手写控制流平坦化
3
- * 技术: 将线性代码转换为状态机,打乱执行顺序
4
- * 特点: 增加静态分析难度,隐藏真实执行流程
5
- */
6
-
7
- (function() {
8
- var _0x = { s: 'deepspider_test_2024', a: 'app_12345' };
9
- var _state = 0x7a3f;
10
- var _vars = {};
11
- var _result = null;
12
-
13
- while (true) {
14
- switch (_state) {
15
- case 0x7a3f:
16
- _vars.hashFn = function(str) {
17
- var h = 0;
18
- for (var i = 0; i < str.length; i++) {
19
- h = ((h << 5) - h) + str.charCodeAt(i);
20
- h = h & h;
21
- }
22
- return Math.abs(h).toString(16);
23
- };
24
- _state = 0x2b1c;
25
- break;
26
-
27
- case 0x2b1c:
28
- _vars.tsFn = function() {
29
- return Math.floor(Date.now() / 1000);
30
- };
31
- _state = 0x9d4e;
32
- break;
33
-
34
- case 0x9d4e:
35
- _vars.randFn = function(len) {
36
- var c = 'abcdef0123456789', r = '';
37
- for (var i = 0; i < len; i++) {
38
- r += c.charAt(Math.floor(Math.random() * c.length));
39
- }
40
- return r;
41
- };
42
- _state = 0x1f8a;
43
- break;
44
-
45
- case 0x1f8a:
46
- _vars.ts = _vars.tsFn();
47
- _state = 0x5c2d;
48
- break;
49
-
50
- case 0x5c2d:
51
- _vars.nonce = _vars.randFn(8);
52
- _state = 0x8e6b;
53
- break;
54
-
55
- case 0x8e6b:
56
- _vars.signStr = _0x.a + _vars.ts + _vars.nonce + _0x.s;
57
- _state = 0x3a9f;
58
- break;
59
-
60
- case 0x3a9f:
61
- _vars.sign = _vars.hashFn(_vars.signStr);
62
- _state = 0x6d1c;
63
- break;
64
-
65
- case 0x6d1c:
66
- _vars.data = { user: 'test', action: 'login' };
67
- _state = 0x4b8e;
68
- break;
69
-
70
- case 0x4b8e:
71
- _result = Object.assign({}, _vars.data, {
72
- sign: _vars.sign,
73
- timestamp: _vars.ts,
74
- nonce: _vars.nonce,
75
- app_id: _0x.a,
76
- encrypted: btoa(JSON.stringify(_vars.data))
77
- });
78
- _state = 0xf2a3;
79
- break;
80
-
81
- case 0xf2a3:
82
- console.log('Result:', _result);
83
- return _result;
84
- }
85
- }
86
- })();
@@ -1,71 +0,0 @@
1
- /**
2
- * v6: 自定义字符串加密 + 数组混淆
3
- * 技术: XOR加密 + 字符串分割 + 动态解密
4
- * 特点: 字符串在运行时才解密,静态分析无法获取
5
- */
6
-
7
- (function() {
8
- // XOR密钥
9
- var _k = [0x5a, 0x3f, 0x7c, 0x1d, 0x9e, 0x2b, 0x8f, 0x4a];
10
-
11
- // 加密的字符串数组
12
- var _s = [
13
- [0x30,0x56,0x1c,0x76,0xf3,0x4e,0xfc,0x2f,0x74,0x50,0x1a,0x71,0xab,0x55,0xbe,0x68,0x6a],
14
- [0x3b,0x57,0x1f,0x51,0xdb,0x5f,0xe0,0x24,0x75],
15
- [0x3b,0x41,0x1f,0x77,0xf2,0x4f,0xf9,0x68,0x6e,0x50,0x1c,0x71,0xf0],
16
- ];
17
-
18
- // 解密函数
19
- var _d = function(arr) {
20
- var r = '';
21
- for (var i = 0; i < arr.length; i++) {
22
- r += String.fromCharCode(arr[i] ^ _k[i % _k.length]);
23
- }
24
- return r;
25
- };
26
-
27
- // 实际密钥(运行时解密)
28
- var SECRET_KEY = 'deepspider_test_2024';
29
- var APP_ID = 'app_12345';
30
-
31
- // 哈希函数
32
- var _h = function(str) {
33
- var h = 0;
34
- for (var i = 0; i < str.length; i++) {
35
- h = ((h << 5) - h) + str.charCodeAt(i);
36
- h = h & h;
37
- }
38
- return Math.abs(h).toString(16);
39
- };
40
-
41
- // 时间戳
42
- var _t = function() {
43
- return Math.floor(Date.now() / 1000);
44
- };
45
-
46
- // 随机字符串
47
- var _r = function(len) {
48
- var c = 'abcdef0123456789', r = '';
49
- for (var i = 0; i < len; i++) {
50
- r += c.charAt(Math.floor(Math.random() * c.length));
51
- }
52
- return r;
53
- };
54
-
55
- // 签名生成
56
- var _g = function(p) {
57
- var t = _t(), n = _r(8);
58
- var s = APP_ID + t + n + SECRET_KEY;
59
- return { sign: _h(s), timestamp: t, nonce: n, app_id: APP_ID };
60
- };
61
-
62
- // 加密参数
63
- var _e = function(d) {
64
- var s = _g(d);
65
- return Object.assign({}, d, s, { encrypted: btoa(JSON.stringify(d)) });
66
- };
67
-
68
- var result = _e({ user: 'test', action: 'login' });
69
- console.log('Result:', result);
70
- return result;
71
- })();