Skip to content

iFlyCode 3.4.2-222 逆向工程综合分析报告

版本: 3.4.2-222 | 分析日期: 2026-05-11 | 文档编号: 63

1. 概述

本文档是 iFlyCode IntelliJ IDEA 插件逆向工程的综合分析报告,汇总 62 个专题文档的核心发现,提供系统级架构视图和关键洞察。

2. 系统架构总览

┌─────────────────────────────────────────────────────────────────────┐
│                        IntelliJ IDEA Platform                        │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────────────┐   │
│  │ StatusBar │  │ Editor   │  │ ToolWin  │  │ Inlay Hints     │   │
│  │ (5 icons) │  │ Actions  │  │ (JCEF)   │  │ (补全/行级操作)  │   │
│  └─────┬────┘  └────┬─────┘  └────┬─────┘  └───────┬──────────┘   │
│        │            │             │                 │               │
│  ┌─────┴────────────┴─────────────┴─────────────────┴──────────┐   │
│  │                    Service Layer (7 Services)                │   │
│  │  ChatService │ CodeCheckService │ CodeCompleteService        │   │
│  │  GitReviewService │ InlineChatCommandService │ CommonService  │   │
│  │  RequestTipService                                           │   │
│  └───────────────────────────┬─────────────────────────────────┘   │
│                              │                                      │
│  ┌───────────────────────────┴─────────────────────────────────┐   │
│  │              Communication Layer                              │   │
│  │  PluginWebsocketClient (OkHttp) ←→ Agent (Node.js:6832)     │   │
│  │  SocketMessageHandleListener → CommandEnum 分发              │   │
│  │  OpenTelemetry (W3C Trace Context)                           │   │
│  └───────────────────────────┬─────────────────────────────────┘   │
│                              │                                      │
│  ┌───────────────────────────┴─────────────────────────────────┐   │
│  │                    Agent (Node.js)                            │   │
│  │  HTTP Server (Express) │ WebSocket Server │ 9 Tree-sitter    │   │
│  │  SQLite/NeDB (本地) │ MySQL (远程) │ RSA 加密               │   │
│  │  92 API Routes (starspark/ragserver/unittest)               │   │
│  └───────────────────────────┬─────────────────────────────────┘   │
│                              │                                      │
│  ┌───────────────────────────┴─────────────────────────────────┐   │
│  │                    Cloud API (星火/Spark)                     │   │
│  │  api.example.com │ ragserver │ unittest service        │   │
│  │  RSA/JWT 认证 │ 流式响应 │ 代码知识库 (RAG)                  │   │
│  └─────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────┘

3. 核心数据流

3.1 代码补全流

用户输入 → AutoCodeGenerateListener.commandFinished()
    → EditorManagerService.requestTip()
    → RequestTipServiceImpl.requestTip()
    → CodeGenerateEditorRequest (251 strings, 完整上下文)
    → PluginWebsocketClient.sendWsMessage(CODE_COMPLETE)
    → Agent → Cloud API → 流式响应
    → CodeCompleteServiceImpl.handleCodeCompleteResponse()
    → Flow.Subscriber (Java 9 Reactive Streams)
    → EditorManagerService.acceptTip()
    → IntelliJ Inlay Presentation API

3.2 内联聊天流

用户选中文本 → Alt+\ → OpenInlineChatAction
    → SessionController.executeRequest()
    → renderCategoryPanel() → 8 个分类 (EXPLAIN/COMMENT/REFACTOR/FIX/GENERATE/OPTIMIZE/DEBUG/TEST)
    → 用户选择分类 → InlineChatInfo (113 strings)
    → InlineChatCommandServiceImpl → WebSocket: INLINECHAT_DIRECT
    → Agent → Cloud API → 流式响应
    → SessionController.unlockSession()
    → DiffService.replaceTextInVirtualFile()
    → Alt+Y 接受 / Alt+X 拒绝 / Alt+Z 停止

3.3 单元测试生成流

用户右键 → UnitTestAction
    → TestSubjectInspector.inspect() → 过滤 8 种排除方法
    → TestTemplateContextBuilder.build() → 收集 PSI 信息
    → MockBuilderFactory.create() → Mockito/PowerMock
    → JavaTestBuilderImpl.build() (956 strings) → 生成测试代码
    → TemplateRequestService (893 strings) → AI 辅助生成
    → CreateTestFileTask.run() (801 strings) → WriteCommandAction 写入

4. 类规模排行 Top 20

排名字符串数职责
1JavaTestBuilderImpl956template/context/serviceJava 单测生成
2TemplateRequestService893template/requestAI 辅助单测
3CreateTestFileTask801template/generator测试文件创建
4CommandEnum726agent/enums命令枚举
5MethodFactory634template/builderMock 方法工厂
6AICodeStringUtil526util混淆+文本处理
7CreateTestMethodTask539template/generator测试方法创建
8SessionController455inline/controller内联聊天会话
9Type450template/context/domain类型模型
10TypeDictionary359template类型字典
11GitBranchChangeListener360listenerGit 分支监听
12TestTemplateContextBuilder345template模板上下文
13ChatInputController348chat聊天输入
14ChatServiceImpl312agent/service/impl聊天服务
15GenericUtils312util通用混淆
16PluginWebsocketClient296agentWebSocket 客户端
17PluginUpdater291updater插件更新
18CommitHandlerFactory$o286listenerGit 提交指标
19MethodReferencesBuilder283template/builder方法引用
20AutoCodeGenerateListener262listener自动补全监听

5. 外部依赖汇总

依赖版本使用位置用途
GsonWebViewWindowPanel, AgentCheckTimer, ChatServiceImplJSON 序列化
Guava MapsCodeGenerateEditorRequestMap 工具
Hutool IdUtilAgentCheckTimerUUID 生成
Hutool MapUtilAgentCheckTimerMap 工具
Hutool FileUtilPluginUpdater文件操作
Hutool StrUtilBizResponse字符串工具
Hutool CollUtil(推断)集合工具
OkHttpPluginWebsocketClientWebSocket 客户端
OpenTelemetry SDK1.36.0OpenTelemetryConfig, PluginWebsocketClientAPM 链路追踪
OTLP HTTP ExporterOpenTelemetryConfigAPM 数据导出
JCEF/CEFWebViewWindowPanel嵌入式浏览器
Apache VelocityTemplateGenerator模板引擎
Kotlin StdlibEditorKt, FontKt, InlineChatStatusServiceKtKotlin 运行时

6. H() 混淆体系总结

6.1 定义点 (27+)

字符串数领域
AICodeStringUtil526核心混淆 + 代码文本
GenericUtils312通用混淆
NewFileUtils108文件操作
PropertyUtils64属性读取
FontKt字体/样式
HandleCacheUtil38缓存
MethodGeneratorConfig方法生成
GeneratorConfig生成器
IndentLineUtil34缩进
LanguageFileExtensionDetails语言映射
其他 17+ 类~200各自领域

6.2 破解方案

方案难度说明
Runtime Hook在 H() 方法入口 Hook,直接获取明文
静态 Python 解码从 .class 文件提取调用者类名+方法名,计算 XOR 密钥
Java Agent使用 Java Instrumentation 在运行时拦截

6.3 安全性评估

  • 混淆强度: 中等 — XOR 可逆,密钥可从 .class 文件推导
  • 密钥来源: LinkageError.getStackTrace() → 调用者类名+方法名
  • 破解难度: 低 — 静态分析可完全还原
  • 覆盖范围: 312 个调用类,~500-800 个混淆字符串

7. 权限与功能矩阵

权限功能对应 CommandEnum
INLINE_CHAT内联聊天INLINECHAT_DIRECT/CATEGORY
CHAT_MODULE智能对话CHAT
CODE_OPTIMIZATION代码优化CODE_OPTIMIZE
FUNCTION_SPLIT函数拆分CODE_SPLIT
COMMENTS行注释CODE_COMMENT
DOC_COMMENTS文档注释CODE_DOC_COMMENT
GENERATE_TEST_CASE测试用例CODE_TEST_MAKE_CASE_JAVA
REVIEW代码评审GIT_DIFF/GIT_REVIEW
CODE_DEBUG代码调试CODE_DEBUG
GENERATE_COMMIT提交信息GIT_COMMIT_MESSAGE
CODE_KNOWLEDGE_BASE代码知识库GIT_CODE_KNOWLEDGE_RE_INDEX
UNIT_TESTING单测执行CODE_TEST_SAVE/RUN
BATCH_UNITTEST批量单测CODE_BATCH_UNIT_TEST_CREATE
SQL_GENERATIONSQL 生成SQL_GENERATE
SQL_OPTIMIZATIONSQL 优化SQL_OPTIMIZE
DEMAND_SPLIT需求拆分DEMAND_SPLIT
DEMAND_TEST需求测试DEMAND_TEST

8. WebView 前端技术栈

技术版本用途
Vue.js3前端框架
Pinia状态管理(7 stores)
TypeScript类型安全
Vite构建工具
JCEF嵌入式 Chromium

JS↔Java Bridge

方向方法数关键方法
Java→JS66sendMessage2webView()
JS→Java23window.bridge.sendMessage(data)

7 个 Pinia Stores

  1. Chat Store — 聊天消息
  2. Code Check Store — 代码检查
  3. Code Search Store — 代码搜索
  4. Git Review Store — Git 评审
  5. Settings Store — 设置
  6. SQL Chat Store — SQL 对话
  7. Unit Test Store — 单元测试

9. Agent 架构

组件技术说明
运行时Node.js主进程
HTTP ServerExpress监听 6832 端口
WebSocketws双向通信
代码解析Tree-sitter WASM9 种语言
本地存储SQLite + NeDB缓存和索引
远程存储MySQL持久化
加密RSA + AES消息加密
构建Webpack打包
API 路由92 条starspark/ragserver/unittest

9 种 Tree-sitter 解析器

C, C#, C++, Go, Java, JavaScript, Python, TSX, TypeScript

10. 关键洞察

10.1 架构模式

  1. 三层通信: Plugin (Java) ↔ Agent (Node.js) ↔ Cloud (星火 API),每层有明确的职责边界。
  2. CommandEnum 驱动: 640+ 个有意义的命令枚举值驱动所有功能,是系统的核心路由机制。
  3. 流式响应: 所有 AI 功能都使用流式响应(WebSocket + streamStep),提供实时反馈。
  4. 权限控制: 20+ 个权限枚举值控制功能访问,每个权限对应一个功能模块。
  5. 双生成模式: 本地模板生成 + AI 辅助生成,两种模式互补。

10.2 安全发现

  1. H() 混淆可逆: XOR 解码 + 栈追踪密钥,静态分析可完全还原。
  2. 自定义 TrustManager: OpenTelemetryConfig 的 $La 内部类信任所有 SSL 证书。
  3. RSA 公钥硬编码: 两把 RSA 公钥硬编码在 Agent webpack bundle 中。
  4. 消息加密: Agent 使用 RSA + AES 加密消息,但有 512MB 大小限制。
  5. API 密钥存储: API 密钥存储在 AICodeSettingsState 中,持久化到 XML 文件。

10.3 技术债务

  1. Hutool 6 处使用: IdUtil, MapUtil, FileUtil, StrUtil, CollUtil + 1 处推断,说明依赖较分散。
  2. 27+ 个 H() 定义点: 混淆方法分散在 27+ 个类中,维护成本高。
  3. 反射绕过访问限制: AICodeUnloadPluginListener 使用反射调用 MessageBundle.INSTANCE.clear()
  4. LambdaMetafactory: EphemeralChatSessionController 使用 Java Lambda 元工厂创建回调,增加代码复杂度。

10.4 与竞品对比

特性iFlyCodeGitHub CopilotCodeium
代码补全Inlay + AfterLineEndGhost TextGhost Text
内联聊天8 分类 + DiffInline ChatInline Chat
单测生成模板 + AI 双模式AI onlyAI only
代码知识库RAG (codeVector)
APMOpenTelemetry
多 IDEIntelliJ + EclipseVS Code + JetBrainsVS Code + JetBrains
Agent 架构本地 Node.js 进程CloudCloud
消息加密RSA + AESTLSTLS

11. 文档索引

编号文档核心内容
24Action SystemAction 注册和分发
25Inline Chat UI内联聊天 UI 组件
26Template System模板引擎
27Editor Integration编辑器集成
28Listener Events事件监听
29Obfuscated StringsH() 混淆体系
30WebView FrontendVue.js 3 + Pinia
31Agent BinaryNode.js + Tree-sitter
32Code Complete Flow补全数据流
33Q PackageCodeTipType 混淆
34Plugin XMLplugin.xml 配置
35Properties/i18n国际化
36Complete Class Inventory566 类清单
37Agent Process进程管理
38WebView ToolWindowJCEF 浏览器
39Agent Service服务层
40Inline Chat System内联聊天系统
41Enums Complete31 枚举类
42Diff/APMDiff + OpenTelemetry
43Settings4 PersistentStateComponent
44Request Complete补全请求系统
45WebSocket DTO消息 DTO
46Unit Test Gen单测生成
47Action System CompleteAction 完整体系
48Content Handler编辑器工具
49Generate Package补全缓存
50View PackageWebView/JCEF
51Complete PackageInlay Hint
52Error/Exception异常+调试+图标+更新
53Domain/DTO/Service请求层
54Agent CommunicationWebSocket 通信
55Q/Util混淆+工具
56Chat/Git聊天+Git 集成
57Inline Chat Subsystem内联聊天子系统
58Listener/APM/Settings监听+APM+配置
59Action/Inline ChatAction+内联聊天子包
60Template Complete模板系统 80+ 类
61Language/Message/Status/Test/UI剩余包
62Agent Service Layer服务层+批量操作
63本报告综合分析

12. 未完成项

  1. H() 字符串解码: 需要实现 Runtime Hook 或静态 Python 解码器
  2. WebView JS Bundle 详细分析: Vue.js 3 前端代码的完整逆向
  3. Agent webpack bundle 详细分析: index.js 的完整逆向
  4. RSA 公钥用途确认: 两把 RSA 公钥的具体使用场景
  5. API 端点功能确认: 92 条 API 路由的具体功能
  6. codeVector 语义搜索: RAG 系统的完整工作流程
  7. 消息加密协议: RSA + AES 加密的具体实现
  8. 跨 IDE 支持: Eclipse 版本的差异分析

本项目仅供学习研究,逆向分析内容归原厂商所有。