AI 驱动的游戏内存修改器 — 通过自然语言对话实现游戏内存搜索、修改、冻结
| 项目 |
说明 |
| 名称 |
AI GG Modifier (ai_gg666) |
| 版本 |
2.0.0+2 |
| 包名 |
com.yl.aigg.ai_gg666 |
| 平台 |
Android(需 Root) |
| 框架 |
Flutter + 原生 Kotlin + C++ |
| Dart SDK |
^3.11.5 |
| Java 兼容 |
Java 17 |
| CMake |
3.22.1 |
| C++ 标准 |
C++11 |
┌─────────────────────────────────────────────────┐
│ Flutter UI │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ 主应用 │ │ 对话记录 │ │ WebView 渲染管线 │ │
│ │ (Riverpod)│ │ (Hive) │ │ marked+KaTeX+ │ │
│ │ │ │ │ │ Prism+Mermaid │ │
│ └─────┬────┘ └─────┬────┘ └────────┬─────────┘ │
│ │ │ │ │
│ ──────┼────────────┼───────────────┼────────────│
│ │ MethodChannel Bridge │ │
│ ──────┼────────────┼───────────────┼────────────│
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Kotlin Native Layer │ │
│ │ OverlayService │ MemoryEngine │ LuaEngine │ │
│ │ RootScanner │ RootManager │ ProcessMgr │ │
│ └──────────────────────┬──────────────────────┘ │
│ │ su + stdin/stdout │
│ ┌──────────────────────▼──────────────────────┐ │
│ │ C++ scanner_root (Root) │ │
│ │ process_vm_readv / pread64 / writev │ │
│ │ 2MB 高速缓冲区滑动窗口 │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
| 模式 |
实现 |
说明 |
| 主应用 |
Flutter (GgModifierApp) |
完整功能界面,底部导航栏 |
| 悬浮窗 |
原生 Android View (OverlayService) |
游戏内浮窗,通过 SharedPreferences 同步状态 |
| 依赖 |
版本 |
用途 |
flutter_riverpod |
^2.6.1 |
状态管理 |
hive / hive_flutter |
^2.2.3 / ^1.1.0 |
本地键值存储(对话、书签、脚本) |
http |
^1.2.2 |
LLM API HTTP 请求 |
webview_flutter |
^4.10.0 |
WebView 渲染 Markdown/LaTeX/Mermaid |
flutter_markdown |
^0.7.4+3 |
Markdown 解析 |
markdown |
^7.3.0 |
Markdown AST |
flutter_svg |
^2.0.16 |
SVG 渲染 |
shimmer |
^3.0.0 |
加载动画 |
uuid |
^4.5.1 |
UUID 生成 |
intl |
^0.19.0 |
国际化 |
path_provider |
^2.1.5 |
文件路径 |
| 文件 |
行数 |
职责 |
OverlayService.kt |
~2800 |
悬浮窗服务:AI 对话、内存搜索、脚本执行、面板管理 |
MemoryEngine.kt |
~580 |
内存引擎 v20.0:精确/范围/AOB/模糊搜索、读写、冻结 |
RootScanner.kt |
~354 |
Root 扫描器:JSON IPC 与 C++ scanner_root 通信 |
RootManager.kt |
~200 |
持久化 su shell、root 命令执行、/proc/pid/mem 读写 |
MemoryFreezer.kt |
~80 |
后台冻结线程 |
LuaEngine.kt |
~100 |
Lua 脚本执行(LuaJ) |
ProcessManager.kt |
~80 |
进程列表(pm + ps) |
MainActivity.kt |
~500 |
Flutter ↔ Kotlin MethodChannel 桥接 |
OverlayFlutterActivity.kt |
~30 |
悬浮窗 Flutter Activity |
| 文件 |
行数 |
说明 |
scanner_root_optimized.cpp |
544 |
主力扫描器:pread64 + 静态链接 + -O3 优化 |
scanner_root.cpp |
409 |
Root 独立可执行文件 |
scanner_v19.cpp |
305 |
JNI 共享库版(libaigg_scanner.so) |
scanner.cpp |
365 |
原始 JNI 扫描器 |
编译产物:
scanner_root — 独立可执行文件,通过 su 以 Root 运行
libaigg_scanner.so — JNI 共享库(备用)
编译优化:-O3 -ffast-math -funroll-loops
AI 对话支持 8 个内存操作工具,LLM 可直接调用真实内存引擎:
| 工具名 |
功能 |
对应 MemoryEngine 方法 |
search_memory |
精确/范围/AOB 搜索 |
searchExact / searchByRange / searchAob |
read_memory |
读取指定地址值 |
readMemory |
write_memory |
写入值到地址(自动回读验证) |
writeMemory |
fuzzy_search |
模糊搜索(增大/减小/变化/不变) |
searchFuzzy |
filter_results |
在上次结果中二次过滤 |
filterResults |
save_address |
收藏地址到书签 |
saveFavorite |
freeze_value |
冻结/解冻地址值 |
toggleBookmarkFreeze |
工作流程:用户自然语言 → LLM 判断调用工具 → 执行 MemoryEngine 真实操作 → 返回结果 → LLM 生成最终回复
支持的 LLM:DeepSeek-V3/R1、OpenAI GPT-4o/4/3.5、小米 MiMo 等兼容 OpenAI API 的模型
AI 回复通过 WebView 渲染,支持三种内容混合输出:
原始 Markdown → protectLaTeX() 保护 LaTeX → marked.parse() 渲染 Markdown
→ restoreLaTeX() 恢复占位符 → Prism.highlight() 代码高亮
→ katex.render() 渲染公式 → mermaid.run() 渲染图表
- 需要 Root 权限:使用独立的 C++ 可执行文件通过
su 以 Root 身份读写目标进程内存
- 双模式架构:主应用 (Flutter) + 悬浮窗 (原生 Android View),通过 SharedPreferences 同步状态
- AI Function Calling:AI 可直接调用 8 个内存操作函数,实现"说一句话就改数据"
- Markdown/Mermaid/LaTeX 渲染:AI 回复支持代码块高亮、Mermaid 图表、LaTeX 公式
- 对话渲染系统:katex@0.16.9/auto-render.min.js,katex@0.16.9/katex.min.js,katex@0.16.9katex.min.css,mermaid@8.14.0/mermaid.min.js,marked@4.3.0/marked.min.js
- 悬浮窗系统:HTML 渲染管线(marked + KaTeX + Prism.js + mermaid),通过 WebView 渲染
| 库 |
版本 |
文件 |
| KaTeX |
0.16.9 |
katex.min.js + auto-render.min.js + katex.min.css |
| Mermaid |
8.14.0 |
mermaid.min.js |
| Marked |
4.3.0 |
marked.min.js |
| Prism.js |
1.29.0 |
prism.min.js + 16 种语言组件 + prism-tomorrow.min.css |
支持的语言高亮:JavaScript、Python、Java、Kotlin、C/C++、C#、Lua、Bash、SQL、JSON、YAML、XML 等
| 模式 |
实现 |
场景 |
| 单内容模式 |
MarkdownWebView(markdownContent: ...) |
悬浮窗 AI 对话 |
| 多消息模式 |
MarkdownWebView(messages: ...) |
对话记录详情页(单 WebView 渲染全部消息,避免多 WebView 性能问题) |
MemoryEngine.kt
↓ JSON 命令 (stdin)
RootScanner.kt → su → scanner_root (C++ 可执行文件)
↓ JSON 结果 (stdout)
MemoryEngine.kt → 返回搜索结果
| 模式 |
方法 |
说明 |
| 精确搜索 |
searchExact(value, type) |
搜索精确数值 |
| 范围搜索 |
searchByRange(min, max, type) |
搜索数值范围 |
| AOB 搜索 |
searchAob(pattern) |
按机器码特征码搜索 |
| 模糊搜索 |
searchFuzzy(comparison, type) |
增大/减小/变化/不变 |
| 结果过滤 |
filterResults(addresses, value, type) |
在已有结果中二次过滤 |
| 类型 |
常量 |
字节数 |
| BYTE |
gg.TYPE_BYTE |
1 |
| WORD |
gg.TYPE_WORD |
2 |
| DWORD |
gg.TYPE_DWORD |
4 |
| QWORD |
gg.TYPE_QWORD |
8 |
| FLOAT |
gg.TYPE_FLOAT |
4 |
| DOUBLE |
gg.TYPE_DOUBLE |
8 |
- 引擎:LuaJ (
org.luaj.vm2) — luaj-jse-3.0.2.jar
- API:GG 兼容 API(
gg.searchNumber、gg.getResults、gg.editAll、gg.clearResults 等)
- UI API:
gg.toast、gg.alert、gg.prompt、gg.choice
- 内置脚本:auto_gold、auto_heal、speed_hack
- 模板:freeze_value、search_and_modify
ai_gg666/
├── lib/ # Dart 源码 (32 文件)
│ ├── app.dart # 应用入口 + 主题定义
│ ├── main.dart # 启动入口(主应用/悬浮窗路由)
│ ├── overlay_app.dart # 悬浮窗 Flutter 应用
│ ├── core/
│ │ ├── ffi/ # 原生桥接
│ │ ├── llm/ # LLM 集成(API、Function Calling、Prompt)
│ │ ├── lua/ # Lua 脚本服务
│ │ └── models/ # 数据模型(6 个)
│ ├── features/
│ │ ├── chat/ # 对话记录 + WebView 渲染
│ │ ├── home/ # 首页
│ │ ├── plugin/ # 插件中心
│ │ ├── process/ # 进程选择器
│ │ ├── script/ # 脚本库
│ │ ├── search/ # 内存搜索页
│ │ └── settings/ # 设置页
│ ├── services/ # 存储、内存、进程服务
│ └── widgets/ # 通用组件
├── android/app/src/main/
│ ├── kotlin/com/yl/aigg/ai_gg666/ # Kotlin 源码 (9 文件)
│ ├── cpp/ # C++ 源码 (4 文件, 1623 行)
│ ├── assets/
│ │ ├── js/ # JS 库 (18 文件)
│ │ └── css/ # CSS (2 文件)
│ └── res/drawable/ # PNG 图标
├── assets/icons/ # UI 图标
├── lua/ # Lua 脚本
│ ├── builtins/ # 内置脚本
│ └── templates/ # 脚本模板
└── pubspec.yaml # 依赖配置
暖棕奶白色全局主题(app.dart):
| 角色 |
色值 |
用途 |
kBackgroundColor |
#FDFBF7 |
页面背景(奶白色) |
kSurfaceColor |
#FFF9F0 |
卡片/输入框(浅奶黄) |
kPrimaryColor |
#8D6E63 |
主色调(柔和棕) |
kAccentColor |
#4E342E |
深色动作 |
kTextPrimary |
#3E2723 |
深棕文字 |
kSplashColor |
#FFF3E0 |
点击反馈色 |
AI 对话窗口使用深棕色独立主题(#723d09 背景)。
| 权限 |
用途 |
| Root (su) |
读写目标进程内存 |
SYSTEM_ALERT_WINDOW |
悬浮窗 |
INTERNET |
LLM API 请求 |
FOREGROUND_SERVICE |
前台服务保活 |
READ/WRITE_EXTERNAL_STORAGE |
导出文件 |
- Flutter SDK
3.x(Dart ^3.11.5)
- Android Studio + NDK(CMake
3.22.1)
- Java 17
- Root 设备或模拟器
| 扩展 |
文件 |
说明 |
| 新增 LLM 模型 |
settings_page.dart |
在预设列表中添加 |
| 新增搜索模式 |
MemoryEngine.kt + OverlayService.kt |
添加新方法 + 工具定义 |
| 新增 Lua API |
LuaEngine.kt |
注册新的 JavaFunction |
| 新增悬浮窗面板 |
OverlayService.kt |
makeDraggablePanel() + showXxxPanel() |
| 修改渲染管线 |
markdown_webview.dart |
JS 核心在 _jsCore 常量中 |
| 修改主题 |
app.dart |
颜色常量 + ThemeData |
# 安装依赖
flutter pub get
# Debug 构建
flutter run
# Release 构建
flutter build apk --release