摘 要 Java 软 件 的 保 护 方 法 是 大 家 一 直 关 注 的 问 题 之 一 本 文 详 细 介 绍 了 本 地 化 技 术 远 程 接 口 访 问 技 术 软 件 数 字 水 印 技 术 以 及 混 淆 技 术 等 四 种 传 统 的 Java 软 件 保 护 方 法, 并 分 析 了 这 些 方 法 各 自 存 在 的 问 题 希 望 本 文 的 研 究 能 够 对 Java 软 件 保 护 技 术 领 域 的 研 究 起 到 抛 砖 引 玉 的 作 用 推 荐 阅 读 我 国 有 线 数 字 电 视 网 健 康 发 展 的 有 效 途 径 关 键 词 Java; 保 护 技 术 ; 研 究 一 本 地 化 技 术 Java 本 地 化, 是 指 通 过 将 Java 应 用 程 序 编 译 成 本 地 应 用 程 序, 如 Windows 操 作 系 统 下 扩 展 名 为 ex 的 应 用 程 序, 来 达 到 增 加 反 编 译 的 难 度, 实 现 软 件 保 护 的 方 法 实 现 步 骤 如 下 : 首 先 编 写 Java 源 代 码, 然 后 通 过 Java 编 译 器 将 Java 源 代 码 编 译 成 J ava 类 文 件, 最 后 使 用 本 地 编 译 工 具 将 Java 类 文 件 编 译 成 二 进 制 的 本 机 应 用 程 序 Java 本 地 化 技 术 产 生 的 是 二 进 制 格 式 的 可 执 行 文 件, 与 在 虚 拟 机 中 执 行 的 Java 应 用 程 序 相 比, 可 以 产 生 更 快 的 执 行 速 度 和 更 小 的 内 存 占 用 由 于 程 序 已 经 从 类 文 件 被 编 译 成 二 进 制 的 可 执 行 文 件, 原 本 类 文 件 由 于 自 身 结 构 特 性 所 带 来 的 安 全 隐 患 也 就 随 之 消 失 了, 反 编 译 不 再 成 为 Java 软 件 的 安 全 威 胁, 在 这 种 情 况 下,Java 软 件 的 安 全 性 达 了 到 与 传 统 的 用 C/C++ 等 语 言 开 发 的 软 件 一 样 的 强 度 目 前 许 多 本 地 编 译 工 具 被 开 发 出 来, 并 获 得 广 泛 的 使 用 本 地 化 技 术 虽 然 能 够 很 好 的 保 护 Java 类 文 件, 使 其 达 到 与 传 统 的 用 C/C++ 等 语 台 开 发 的 软 件 一 样 的 安 全 强 度, 但 也 存 在 以 下 几 个 问 题 : 1 失 去 了 一 次 编 译, 到 处 运 行 的 跨 平 台 性 本 地 编 译 得 到 的 是 二 进 制 格 式 的 可 执 行 文 件, 它 依 赖 于 具 体 的 运 行 平 台, 只 能 在 具 体 编 译 过 程 执 行 的 同 一 种 平 台 上 运 行, 因 而 失 去 了 跨 平 台 的 特 性 2 无 法 应 用 于 B/S 结 构 的 网 络 应 用 软 件 本 地 化 技 术 依 赖 于 具 体 的 运 行 平 台, 生 成 的 是 一 个 可 执 行 程 序, 这 种 解 决 方 案 可 以 本 文 来 自 精 品 文 库 网 www.jingpinwenku.com
精 品 库 我 们 的 都 是 精 品 _www.jingpinwenku.com 较 好 的 保 护 单 机 应 用 软 件 但 却 无 法 应 用 于 网 络 应 用 软 件, 因 为 服 务 器 端 程 序 运 行 在 Java 应 用 服 务 器 上, 因 此 本 地 化 的 解 决 方 案 明 显 不 支 持 这 种 类 型 的 应 用 程 序 3 错 误 定 位 困 难 Java 软 件 本 地 化 处 理 是 一 个 相 对 较 新 的 课 题, 诊 断 分 析 的 理 论 基 础 薄 弱, 要 准 确 的 诊 断 和 定 位 本 机 编 译 产 生 的 Java 应 用 程 序 中 出 现 的 问 题 十 分 困 难, 尤 其 当 Java 类 文 件 版 本 中 没 有 发 生 该 错 误 的 时 候 二 远 程 接 口 访 问 技 术 分 布 式 结 构 是 现 代 软 件 开 发 中 广 泛 采 用 的 一 种 体 系 结 构, 通 常 将 软 件 分 为 客 户 端 和 服 务 器 端, 核 心 的 功 能 模 块 和 业 务 流 程 都 部 署 在 服 务 器 端 为 客 户 端 提 供 服 务, 客 户 端 负 责 采 集 数 据 提 交 服 务 请 求 和 与 服 务 器 端 通 信, 这 种 体 系 结 构 的 采 用 可 以 提 高 系 统 的 可 移 植 性 和 互 操 作 性, 大 幅 度 降 低 软 件 的 开 发 成 本 现 在 通 过 接 口 提 供 服 务 的 标 准 和 协 议 越 来 越 多 把 实 现 核 心 功 能 的 类 文 件 放 在 远 程 服 务 端, 这 种 模 式 就 是 现 在 流 行 的 Java 服 务 器 应 用 程 序, 也 称 为 web 应 用 程 序 Web 应 用 程 序 模 式 的 发 展 不 但 适 应 了 各 种 计 算 环 境 的 需 要, 从 另 外 一 个 角 度 看 也 实 现 了 源 代 码 的 隔 离, 起 到 了 保 护 Java 软 件 的 作 用 可 以 通 过 远 程 接 口 访 问 达 到 软 件 保 护 的 目 的, 防 止 黑 客 或 者 其 他 软 件 分 析 人 员 通 过 反 编 译 核 心 算 法 所 在 的 类 文 件 得 到 源 代 码 所 谓 远 程 接 口 访 问 是 指 将 应 用 和 实 现 相 分 离, 将 软 件 的 核 心 算 法 等 关 键 部 分 部 署 在 远 程 的 应 用 服 务 器 上, 用 户 通 过 访 问 应 用 服 务 器 的 接 口 提 交 服 务 请 求 和 获 得 服 务, 在 整 个 过 程 中 用 户 无 法 访 问 到 关 键 部 分 的 类 文 件 远 程 接 口 访 问 技 术 使 得 用 户 无 法 获 得 类 文 件, 也 就 从 根 本 上 防 止 了 对 类 文 件 进 行 反 编 译 获 得 源 代 码 的 可 能 性 远 程 接 口 访 问 技 术 能 有 效 地 保 护 关 键 的 Java 类 文 件, 从 而 达 到 软 件 保 护 的 目 的 但 是 这 种 方 式 也 存 在 着 明 显 的 局 限 性 和 很 大 的 安 全 隐 患 : 1 远 程 接 口 访 问 技 术 只 适 用 于 B/S 结 构 或 者 分 布 式 结 构 的 软 件, 而 对 单 机 运 行 的 应 用 软 件 则 不 适 用 2 远 程 接 口 访 问 技 术 实 际 上 是 将 保 护 的 焦 点 从 关 键 的 类 文 件 转 移 到 了 应 用 服 务 器 上 在 这 种 体 系 结 构 下, 制 定 完 善 的 安 全 机 制 来 保 护 端 口 至 关 重 要, 因 为 如 果 应 用 服
务 器 被 攻 破, 那 么 所 有 部 署 在 服 务 器 上 的 服 务 模 块 和 类 文 件 就 完 全 暴 露 在 攻 击 者 面 前, 后 果 不 堪 设 想 三 软 件 数 字 水 印 技 术 软 件 数 字 水 印 是 众 多 数 字 水 印 的 一 种, 它 的 主 要 保 护 对 象 是 计 算 机 代 码, 包 括 源 代 码 和 机 器 码 使 得 它 们 免 于 或 者 减 少 遭 受 非 法 复 制 和 非 法 篡 改 的 危 险 由 于 计 算 机 代 码 是 不 能 容 忍 任 何 错 误 的, 因 此 一 些 传 统 的 利 用 可 允 许 错 误 范 围 内 修 改 计 算 机 程 序 从 而 嵌 入 水 印 的 方 法 将 不 适 用 于 计 算 机 软 件 1 软 件 数 字 水 印 的 用 途 (1) 作 为 侵 犯 知 识 产 权 的 证 据 在 一 般 情 况 下, 发 生 剽 窃 事 件 时, 由 于 难 以 举 证, 常 常 难 以 判 断 真 正 的 原 创 者 引 入 软 件 数 字 水 印 技 术 后, 在 程 序 中 嵌 入 代 表 作 者 身 份 的 软 件 数 字 水 印, 那 么 在 对 被 怀 疑 的 程 序 进 行 验 证 时, 就 可 以 用 水 印 解 码 的 方 法 从 程 序 中 得 到 真 正 的 作 者 的 信 息 (2) 发 现 被 剽 窃 的 程 序 要 确 定 一 款 软 件 中 是 否 包 含 剽 窃 的 程 序 模 块 是 一 件 很 困 难 的 事 情, 因 为 通 常 相 对 于 程 序 整 体 而 言, 剽 窃 的 程 序 模 块 只 是 很 小 的 一 部 分, 非 法 程 序 和 原 程 序 的 具 体 规 范 可 能 会 有 很 大 的 不 同 利 用 数 字 水 印 可 以 有 效 的 找 到 被 盗 的 程 序 模 块, 对 于 在 互 联 网 上 流 通 的 程 序, 有 一 种 爬 虫 技 术, 它 在 互 联 网 上 到 处 活 动, 搜 寻 特 定 的 目 标, 可 以 利 用 爬 虫 找 到 包 含 特 定 数 字 水 印 的 程 序, 从 而 发 现 被 盗 模 块 (3) 追 踪 非 法 拷 贝 的 源 头 由 于 计 算 机 软 件 极 其 容 易 被 无 差 异 复 制, 不 法 分 子 在 获 得 授 权 版 本 后 可 以 对 其 进 行 非 法 复 制 和 分 发 以 获 得 经 济 利 益 因 此, 有 必 要 登 记 授 权 用 户 信 息 以 追 查 非 法 拷 贝 的 源 头 仅 仅 登 记 授 权 用 户 信 息 是 不 够 的, 因 为 这 无 法 将 特 定 的 授 权 版 本 和 具 体 的 授 权 用 户 联 系 起 来 为 了 达 到 追 踪 目 的, 必 须 提 供 这 种 联 系, 而 且 这 种 联 系 必 须 是 隐 秘 的, 否 则 很 容 易 给 破 坏 数 字 水 印 正 好 可 以 满 足 这 些 要 求, 它 通 过 在 把 授 权 用 户 信 息 嵌 入 到 授 权 版 本 来 建 立 这 种 内 在 联 系 当 发 现 市 场 上 流 通 的 盗 版 软 件 时, 可 以 检 测 水 印 信 息 从 而 获 得 授 权 用 户 信 息 对 参 与 盗 版 的 授 权 用 户 进 行 惩 罚, 从 而 减 少 这 种 行 为 的 发 生
精 品 库 我 们 的 都 是 精 品 _www.jingpinwenku.com 2 软 件 数 字 水 印 的 不 足 软 件 数 字 水 印 技 术 也 存 在 一 些 不 足, 比 如 : 需 要 插 入 额 外 的 代 码, 需 要 仔 细 地 编 写 哑 函 数 及 其 调 用, 否 则 容 易 被 有 经 验 的 反 编 译 者 识 破, 从 而 擦 除 水 印 另 外, 静 态 软 件 数 字 水 印 算 法 的 健 壮 性 相 对 较 差, 而 动 态 软 件 数 字 水 印 算 法 虽 然 具 有 很 好 的 健 壮 性, 但 是 它 只 能 保 护 整 个 应 用 程 序, 而 不 能 保 护 某 一 部 分 特 定 的 代 码, 同 时, 动 态 软 件 数 字 水 印 的 检 测 方 式 令 它 的 某 些 应 用 受 到 限 制 目 前 的 水 印 算 法 在 提 供 可 靠 的 版 权 证 明 方 面 或 多 或 少 都 有 一 些 的 尚 不 完 善 的 地 方, 因 此 寻 找 能 提 供 完 全 可 靠 版 权 保 护 的 软 件 数 字 水 印 算 法 成 为 一 个 重 要 的 课 题 四 混 淆 技 术 1 混 淆 的 定 义 代 码 混 淆 技 术 是 目 前 比 较 成 熟 和 流 行 的 一 种 软 件 保 护 技 术 代 码 混 淆 技 术 是 对 类 文 件 进 行 代 码 语 义 程 序 流 程 和 逻 辑 结 构 的 重 新 组 织, 代 码 混 淆 并 不 能 增 加 反 编 译 的 难 度, 使 用 反 编 译 器 仍 然 可 以 对 混 淆 后 的 类 文 件 进 行 反 编 译, 得 到 代 码, 但 此 时 的 代 码 是 经 混 淆 后 的 代 码, 可 读 性 己 经 大 大 降 低, 难 以 从 代 码 中 发 现 源 代 码 的 编 写 思 路 和 关 键 算 法, 从 而 达 到 保 护 软 件 的 目 的 典 型 的 混 淆 技 术 包 括 去 除 所 有 的 调 试 信 息, 使 用 机 器 生 成 的 名 称 重 命 名 包 类 和 方 法 等 目 前 的 混 淆 程 序 提 供 的 功 能 则 更 强 大, 通 过 重 构 现 有 的 逻 辑 和 插 入 不 执 行 的 伪 代 码 来 改 变 控 制 流 程 混 淆 的 前 提 是 变 换 不 会 破 坏 字 节 码 的 有 效 性, 也 不 会 改 变 对 外 所 表 现 的 功 能 混 淆 的 可 行 与 反 编 译 的 可 行 是 出 于 同 一 原 因 :Java 字 节 码 是 标 准 化 的, 而 且 是 很 容 易 归 档 的 混 淆 程 序 加 载 Jav a 类 文 件, 分 析 其 格 式 然 后 根 据 所 支 持 的 特 性 进 行 变 换 当 所 有 的 变 换 完 成 后, 字 节 码 就 保 存 成 一 个 新 的 类 文 件 新 文 件 具 有 不 同 的 内 部 结 构, 而 其 行 为 与 原 始 文 件 一 致 2 混 淆 技 术 存 在 的 问 题 从 安 全 性 角 度 看, 混 淆 确 实 可 以 在 很 大 程 度 上 破 坏 反 编 译 代 码 的 可 读 性, 增 加 逆 向 工 程 的 难 度, 有 效 地 保 护 软 件, 但 并 不 是 绝 对 的 实 践 证 明, 除 非 使 用 控 制 流 程 的 混 淆, 打 乱 程 序 的 流 程, 否 则 阅 读 和 处 理 混 淆 的 代 码 并 不 是 很 困 难 的 事 情 即 便 使 用 了 流 程 控 制, 具 备 重 量 级 的 调 试 程 序 和 足 够 经 验 的 攻 击 者 仍 然 可 能 破 解 软 件 参 考 文 献 1 申 茜 JAVA 软 件 面 临 的 风 险 及 其 保 护 电 脑 知 识 与 技 术 ( 学 术 交 流 ) 2007/23
2 胡 燕 京 软 件 保 护 研 究 及 其 在 Java 软 件 保 护 中 的 应 用 现 代 电 子 技 术 2007/15 3 甘 晟 科 Java 软 件 的 加 密 方 法 研 究 与 应 用 计 算 机 与 现 代 化 2005/02 采 稿 网 ( 论 文 发 表 网 ) 是 专 门 从 事 职 称 论 文 论 文 发 表 发 表 论 文 职 称 论 文 发 表 论 文 投 稿 文 章 发 表 的 专 业 网 站, 为 您 职 称 评 定 提 供 一 站 式 服 务