/OpenGG.Clean.Player-client

opengg-clean-player, doabc edit swf video player to remove ads and stats.

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Intro

OpenGG.Clean.Player 通过修改 Flash 文件, 改变程序逻辑, 从而移除 Flash 程序内部的广告和跟踪功能.

OpenGG.Clean.Player-client 提供了一套 Flash 自动 patch 工具.

Usage

  1. Clone repo
  2. 运行 init.py

相关知识

Flash 程序修改流程

Recompile with source code

  1. 反编译 Flash 文件, 获得源代码 (ActionScript)
  2. 阅读源代码
  3. 修改源代码, 重编译成 Flash 文件
  1. 反编译 Flash 文件, 获得源代码 (ActionScript)
  2. 阅读源代码
  3. 用 Hex 编辑器修改 Flash 文件

Bytecode Editing

  1. 反编译 Flash 文件, 获得源代码(ActionScript)
  2. 阅读源代码
  3. 反编译 Flash 文件, 获得字节码 (Bytecode)
  4. 用文本编辑器修改字节码
  5. 将修改后的字节码重编译成 Flash 文件

反编译 Flash

Sothink SWF Decompiler 是商业化的 Flash 反编译软件, 能够反编译出较完整的 ActionScript 源代码, 但由于反编译出来的 ActionScript 源代码存在较多语法错误, 无法通过编译, 只能通过 Hex 修改或字节码修改的方法来改变 Flash 的程序逻辑.

而 Hex 修改较为麻烦, 限制很多, 很难实现自动化, 所以本项目使用字节码修改的方法.

阅读 ActionScript 源代码

FlashDevelop 是一个开源免费的 ActionScript 开发 IDE, 能极大地提高 ActionScript 源代码阅读效率.

RABCDAsm 是一套工具集, 包括 Flash assembler/disassembler, 可以将 Flash 文件反编译成字节码, 也可以将字节码重编译成 Flash 文件.

RABCDAsm 作者 CyberShadow 所写的 <README for RABCDAsm> 较为系统地介绍了 Flash hacking 的相关知识.

WinRABCDAsmRABCDAsm 的图形化前端, 极大地简化了 Flash assemble/disassemble 操作.

Debug 版本的Flash Player, 有助于查看 Flash 文件输出的 Error/Warning/Info.

Windows + Apache + Mysql + PHP, 用于搭建本地调试环境.

Notepad++ 是一个开源免费的文本编辑器, 它自带的 LISP 高亮规则对 .asasm 字节码文件的支持度较好.

如果需要更佳的代码高亮体验, 可以使用 Eclipse 加载 RABCDAsm 的 asasm.hrc 高亮规则.

diff & patch

GnuWin32 是 GNU 工具包的 Windows 移植, GetGnuWin32GnuWin32 的自动化安装包.

本项目使用 diff -u 和 patch -u 生成补丁和应用补丁.

Python 是一种脚本语言, 本项目使用 Python 2.7.3 书写 init.py, 完成以下功能 0. 自动同步 Flash 文件 0. 反编译 Flash 文件, 获得字节码 0. 应用字节码补丁 0. 将修改后的字节码重编译成 Flash 文件

字节码修改的过程较多较烦, 用 Git 管理版本可以减少犯错的成本. TortoiseGitGit 的图形化前端.

GitHub for WindowsGitHub 的 Windows 客户端.

License

OpenGG.Clean.Player-client is distributed under the terms of the GPL v3 or later, the full text of the GNU General Public License can be found in the file COPYING.

Appendix

项目根目录下各目录/文件说明:

root
├─ bin               --- 可能用到的 .exe 程序
├─ input             --- 存放原始 Flash 文件
├─ output            --- 保存修改好的 Flash 文件
├─ patch             --- 字节码补丁
├─ tools             --- 工具
│   └─ WinRABCDAsm
│       └─ RABCDAsm
├─ init.py           --- 初始化脚本
├─ link.json         --- 用于建立 ./bin/ 到 ./tools/WinRABCDAsm/RABCDAsm/ 的符号连接
├─ README.md
└─ url.json          --- Flash 文件的下载地址