coco-research/coco/dsl-vm-reverse
Claude Code and agent skill by coco-research/coco
Trust tier 3
- community
Source check pending
Checking that the SKILL.md file is still in the repository.
Reverse JavaScript-based custom DSL/VM interpreters, non-standard WASM-like runtimes, and risk-control engines. Use when analyzing IIFE or switch-based opcode dispatchers, extracting instruction tables, recovering bytecode semantics, capturing VM state at runtime, or reconstructing execution flow.
Install
npx vskill@latest install coco-research/coco/dsl-vm-reverseSKILL.md
🔄 DSL 自定义虚拟机逆向(DSL VM Reverse Engineering)
目录
1. 适用范围
当目标文件符合以下 任意特征 时使用本 skill:
| # | 特征 | 说明 | |
|---|---|---|---|
| 1 | IIFE 开头 + 大量单字母变量名 | !function(){var U=void 0,y=parseInt,E0=Function,...} | |
| 2 | 包含 DG() 或类似函数含 switch-case 循环 | 解释器主循环,d[7]&31 解码 opcode | |
| 3 | 大文件(500KB+)但零字节占比 < 1% | 非标准 WASM,纯 JS | |
| 4 | 包含 C[number] 常量表引用 | C[9][xxx] 函数表/字符串表 | |
| 5 | 单行压缩代码 | 583KB 单行,混淆变量名 |
排除规则
| 条件 | 非本 skill | 转至 | |
|---|---|---|---|
文件以 \x00asm 开头 | 标准 WASM 二进制 | reverse-engineering/languages.md | |
文件以 Uint8Array([0,97,115,109]) 含 WASM 魔术字 | WASM 嵌入式 | 提取 .wasm 后转 IDA/Ghidra | |
标准 Webpack 打包(function(e,t,n){...}) | 普通 JS | js-reverse/ | |
| 零字节占比 > 20% | WASM 二进制 | reverse-engineering/languages.md |
2. DSL VM 识别特征
代码特征
Opcode 编码格式
每条指令编码为 32 位整数:
3. 通用逆向工作流
Phase 1: 文件分类(5 分钟)
Phase 2: 变量映射表提取(10 分钟)
Phase 3: Opcode 提取与分类(15 分钟)
Phase 4: 常量表分析(30 分钟)
Phase 5: 导出函数追踪(1-2 小时)
导出函数(如 getToken)通过以下路径定位:
Phase 6: 运行时注入(若纯静态分析不够)
4. Opcode 提取与分类
参考 opcode 对照表(基于已有案例)
| Opcode | 操作类型 | 特征 | |
|---|---|---|---|
| 0 | BRANCH | d[7]=xxx 无条件跳转 | |
| 1 | CALL | W(C[Y],null,function(){...}) 嵌入函数调用 | |
| 2 | ARITH | d[4]=0, d[7]=72 变量赋值 | |
| 3 | ARITH | d[0]=d[1][C[x]], d[5]=d[0]<d[3] 比较运算 | |
| 4 | STORE | d[8]=d[5]in d[4] 属性访问/存在检查 | |
| 5 | ARITH | d[8]=d[4]-d[8] 算术运算 | |
| 6 | RETURN | return gV, throw 返回/抛出异常 | |
| 7 | ALLOC | d[6]=[], d[6][C[8]](...) push 操作 | |
| 8 | BRANCH | d[7]=d[k]?512:425 条件跳转 | |
| 9 | STRING | d[6][C[t]]=d[m], new fh(...) 正则 | |
| 10 | ALLOC | 函数参数准备、调用栈创建 | |
| 11 | STRING | new fh("\\s",d[5]) 正则匹配 | |
| 12 | STORE | P[d[9]]=d[4][C[H]](d[3]) 数据传递 | |
| 13 | CALL | C[9][113]=d[9] 模块初始化 | |
| 14 | STRING | d[8]=d[9]+d[m] 字符串拼接 | |
| 15 | RETURN | return EL; 函数返回 | |
| 16 | ALLOC | var r,P,Z,B... 局部变量声明 | |
| 17 | ALLOC | (Z=[])[C[8]](69,T,445) 静态数组初始化 | |
| 18 | TABLE | 函数表/类型表初始化 | |
| 19 | EXCEPTION | try{for(var RK=x;... try-catch 循环 | |
| 20 | DOM | Is[d[o]] DOM 操作 | |
| 21 | STORE | 安全获取全局/对象属性 | |
| 22 | STRING | new fh(r,v) 字符串/正则处理 | |
| 23 | BRANCH | try...catch 安全获取 + 条件跳转 | |
| 24 | CALL | W(C[2],null,8,z,FL) 多参数函数调用 | |
| 25 | EXCEPTION | try{...}catch(C){...} 异常捕获 + 跳转 |
5. 运行时捕获方案
方案 A: Selenium + CDP 原生事件(推荐,成功率最高)
方案 B: Playwright 无头浏览器
方案 C: 纯协议验证(成功率极低)
DSL VM 生成的 token 通常与浏览器上下文强绑定(TLS JA3 指纹、IP、Cookie、请求头等),脱离浏览器后服务端可检测到上下文不匹配。不建议使用纯协议方案。
6. 常见状态码
| Code | 含义 | 处理 | |
|---|---|---|---|
| 0 | 验证通过 ✅ | 取出 sessionId + sig | |
| 300 | 风控拦截 | 被拦截,无法通过 | |
| 8778 | 验证失败,需重试 | 重试操作 | |
| 8776 | 操作太快,需重试 | 增加延迟后重试 | |
| 69634 | 通用失败 | 检查参数是否正确 |
7. Skill 自检清单
- [ ] 我是否完成了 DSL VM 识别(IIFE + 单字母变量 + DG() 解释器)?
- [ ] 我是否提取了变量映射表(
var X=数字)? - [ ] 我是否提取了 opcode 列表并分类?
- [ ] 我是否分析了常量表 C[9] 的引用范围?
- [ ] 我是否定位了导出函数注册点?
- [ ] 纯静态分析不够时,我是否尝试了运行时注入方案?
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingsystems/reverse-skill/skills/reverse-engineering/dsl-vm-reverse/SKILL.md
Popularity
- Repository stars
- 427
- Repository forks
- 12
- 7-day trend score
- 35
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/coco-research/coco/dsl-vm-reverse)