{"id":48738716,"url":"https://github.com/bkm016/pervius","last_synced_at":"2026-04-15T09:01:19.106Z","repository":{"id":350786596,"uuid":"1205254026","full_name":"Bkm016/pervius","owner":"Bkm016","description":"基于 Vineflower 的由 Rust 语言编写的现代化 Java 反编译与字节码编辑工具。","archived":false,"fork":false,"pushed_at":"2026-04-12T04:18:15.000Z","size":19844,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-12T05:21:33.295Z","etag":null,"topics":["eframe","egui","java-decompiler","native-desktop-app","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Bkm016.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-08T19:37:33.000Z","updated_at":"2026-04-12T04:17:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Bkm016/pervius","commit_stats":null,"previous_names":["bkm016/pervius"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/Bkm016/pervius","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bkm016%2Fpervius","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bkm016%2Fpervius/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bkm016%2Fpervius/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bkm016%2Fpervius/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bkm016","download_url":"https://codeload.github.com/Bkm016/pervius/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bkm016%2Fpervius/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31705576,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T05:11:36.334Z","status":"ssl_error","status_checked_at":"2026-04-12T05:11:27.332Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eframe","egui","java-decompiler","native-desktop-app","rust"],"created_at":"2026-04-12T06:05:31.377Z","updated_at":"2026-04-13T07:01:30.025Z","avatar_url":"https://github.com/Bkm016.png","language":"Rust","readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"crates/egui-shell/logo.svg\" width=\"84\" alt=\"Pervius logo\" /\u003e\n\n# Pervius\n\n**现代化的 Java 反编译与字节码编辑工具。**\n\n[Vineflower](https://github.com/Vineflower/vineflower) 反编译 · [ClassForge](classforge/) 字节码重写 · Rust 原生界面\n\n[![Rust](https://img.shields.io/badge/Rust-2024_Edition-f74c00?logo=rust\u0026logoColor=white)](https://www.rust-lang.org/)\n[![egui](https://img.shields.io/badge/egui-0.34-1ba7f5)](https://github.com/emilk/egui)\n[![Platform](https://img.shields.io/badge/Platform-Windows_·_macOS_·_Linux-8957e5)](#运行要求)\n[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\u003c/br\u003e\n[![Decompiler](https://img.shields.io/badge/Decompiler-Vineflower_1.11.2-e76f00?logo=openjdk\u0026logoColor=white)](https://github.com/Vineflower/vineflower)\n[![Assembler](https://img.shields.io/badge/Assembler-ClassForge_1.0-b07219)](classforge/)\n\n[特性](#特性) · [运行要求](#运行要求) · [构建](#构建) · [快捷键](#快捷键) · [项目结构](#项目结构)\n\n\u003c/div\u003e\n\n## 特性\n\n### 反编译\n\n基于 Vineflower，支持 JAR 批量反编译和单文件按需反编译。小体积 JAR 自动全量反编译，大 JAR 按需逐类反编译。Vineflower 输出实时解析进度，逐类跟踪。结果按 JAR 的 SHA-256 缓存，重复打开不重编译。Kotlin 类自动检测并输出 `.kt`，保留原始行号映射。\n\n\u003cimg src=\"screenshots/1.png\" width=\"600\" alt=\"截图\" /\u003e\n\n### 字节码编辑\n\n结构化 `.class` 编辑面板：左侧导航类信息、字段、方法，右侧对应编辑区。可修改访问标志、继承关系、注解、描述符，方法指令也可直接编辑。保存时 ClassForge（基于 ASM 9.7）自动处理常量池重建、StackMapTable 重算和 max_stack/max_locals。未修改方法直接字节拷贝，仅对改动方法触发帧重算。\n\n\u003cimg src=\"screenshots/3.png\" width=\"600\" alt=\"截图\" /\u003e\n\n### 三视图\n\n每个 `.class` 可通过 `Tab` 在三种视图间切换：\n\n- **反编译视图** — 语法高亮的 Java/Kotlin 源码，只读\n- **字节码视图** — 结构化编辑面板\n- **Hex 视图** — 交互式十六进制查看器\n\n非 `.class` 的文本文件（XML、YAML、JSON 等）直接可编辑，带语法高亮；二进制文件以 Hex 视图打开。\n\n\u003cimg src=\"screenshots/4.png\" width=\"600\" alt=\"截图\" /\u003e\n\n### 代码导航\n\n`Ctrl+Click`（macOS `Cmd+Click`）跳转到类、方法、字段的定义。支持 import 解析、同包推断和通配符匹配。在方法声明处 `Ctrl+Click` 触发 Find Usages，自动搜索所有引用。\n\n### 全局搜索\n\n`Double Shift` 打开搜索面板，覆盖所有反编译源码，支持正则和大小写敏感。结果流式返回，按类分组，行级高亮预览，双击跳转。反编译完成后后台自动建索引，不阻塞 UI。\n\n\u003cimg src=\"screenshots/2.png\" width=\"600\" alt=\"截图\" /\u003e\n\n### 归档浏览\n\n左侧资源树展示 JAR 内容，支持 `jar` `zip` `war` `ear`。键入即过滤（Speed Search），过滤计算在后台线程完成。修改状态实时标记，反编译状态实时可见。支持拖拽打开和最近文件列表。\n\n\u003cimg src=\"screenshots/5.png\" width=\"600\" alt=\"截图\" /\u003e\n\n### 导出\n\n- **导出 JAR**（`Ctrl+Shift+S`）— 修改写回 JAR，生成新归档\n- **导出反编译源码**（`Ctrl+Shift+E`）— 导出 `.java`/`.kt` 到指定目录，保留包结构\n\n## 运行要求\n\n- 已配置 `JAVA_HOME`\n\nVineflower 和 ClassForge 已内置，首次运行自动释放到数据目录。如需覆盖，可在可执行文件同目录放置同名 JAR（优先级最高）。\n\n## 构建\n\n```bash\ncargo build --release\n```\n\nClassForge 和 Vineflower 已通过 `include_bytes!` 内置到二进制中，无需额外复制 JAR。\n\n构建 ClassForge（仅需在修改 ClassForge 源码后重新执行）：\n\n```bash\ncd classforge\n./gradlew jar    # Windows: .\\gradlew.bat jar\n```\n\n将产出的 JAR 复制到 `crates/pervius-java-bridge/libs/` 替换同名文件，重新编译 Rust 即可。\n\n```bash\ncargo run --release\n```\n\n## 快捷键\n\n| 快捷键 | 操作 |\n|:-------|:-----|\n| `Ctrl+O` | 打开归档或单文件 |\n| `Ctrl+S` | 保存 |\n| `Ctrl+F` | 查找 |\n| `Double Shift` | 全局搜索 |\n| `Ctrl+Click` | 跳转到定义 / Find Usages |\n| `Tab` | 切换视图 |\n| `Alt+1` | 切换资源树 |\n| `Ctrl+Shift+S` | 导出 JAR |\n| `Ctrl+Shift+E` | 导出反编译源码 |\n| `Ctrl+,` | 设置 |\n\n所有快捷键可在设置中自定义。\n\n## 致谢\n\n- [Vineflower](https://github.com/Vineflower/vineflower) — Java 反编译引擎\n- [ASM](https://asm.ow2.io/) — Java 字节码操作框架\n- [egui](https://github.com/emilk/egui) — Rust immediate mode GUI\n- [tree-sitter](https://tree-sitter.github.io/tree-sitter/) — 语法高亮\n\n## 许可证\n\n[MIT](LICENSE)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbkm016%2Fpervius","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbkm016%2Fpervius","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbkm016%2Fpervius/lists"}