计算机加密反跟踪技术密文技术和实例:
一 )跟 踪 技 术
大家知道DOS中有一个功能强大的动态跟踪调试软件DEBUG,它能够实现对程序的跟踪和逐条运行,其实这是利用了单步中断和断点中断的原因,而且目前的大多数跟踪调试软件都是利用了这两个中断 。
单步中断(INT 1)是由机器内部状态引起的一种中断,当系统标志寄存器的TF标志(单步跟踪标志)被置位时,就会自动产生一次单步中断,使得CPU能在执行一条指令后停下来,并显示各寄存器的内容 。
断点中断(INT 3)是一种软中断,软中断又称为自陷指令,当CPU 执行到自陷指令时,就进入断点中断服务程序,由断点中断服务程序完成对断点处各寄存器内容的显示 。
G命令的执行过程:DEBUG中的G命令是用于运行程序的,但当G命令后面跟有断点参数时,就可使程序运行至断点处中断,并显示各寄存器的内容,这样就可以大大提高跟踪的速度 。它的实现是通过调用断点中断来实现的:DE-BUG首先保存设置的断点处指令,改用断点中断INT 3指令代替,当程序执行到断点处的INT 3指令时,便产生断点中断,并把原先保存的断点处指令重新替代 INT 3,以完成一个完整的设置断点的G命 令 。通过对单步中断和断点中断的合理组合,可以产生强大的动态调试跟踪功能,这就对磁盘加密技术造成了巨大的威慑,所以破坏单步中断和断点中断,在反跟踪技术中就显得十分必要,成为反跟踪技术中的"必修课 "。
二 )反 跟 踪 技 术
作为反拷贝技术的保护者反跟踪技术是整个磁盘加密技术中最能显示技术水平的部分,如果它稍有漏洞就会影响到整个磁盘加密技术的可靠性. 不过毫无漏洞的反跟踪技术是没有,随着时间的推移、编程工具的更新和经验的积累,反跟踪技术只会向完美逼近,但可以肯定的是:一定不会达到完美,这和哲学中的"绝对和相对"是同一个道理 。一个卓越的反跟踪技术虽然肯定有着微小的漏洞,但是它本身其它的技术可以起到弥补和尽可能减小这个漏洞的作用,这就是这个反跟踪技术的卓越之处 。一个有效的反跟踪技术应该具有3大特性:
重要程序段是不可跳越和修改的:PROLOK的 解 密 过 程 是 通 过 修 改 判 读 指 纹 的 程 序 段 来 实 现 的,这其 实 是 激 光 加 密 系 统 中 反 跟 踪 技 术 的 一 个 败 笔 ,一 个 有 效 的 反 跟 踪 技 术 应 该 对 加 密 系 统 中 的 某 些 甚 至 全 部 程 序 段 进 行 保 护 ,如 果 这 其 中 有 内 容 被 修 改 ,将 导 致 出 错 ,主 要 方 法 有 累 计 、累 或 和 异 或 和 程 序 段 等 方 法 ,同 时 还 要 保 证 重 要 程 序 段 一 定 要 被 执 行 ,方 法 主 要有 加 密 程 序 分 段 加 密 ,运 行 时 逐 层解 密 ,逐 层 清 除 的 方 法 ,即 只 有 运 行 了 重 要 的 程 序 段 ,才 能 将 下 一 层 程 序 代 码 从 密 码 形 式 转 换 成 明 码 形 式 ;
不 通 过 加 密 系 统 的 译 码 算 法 ,密 码 不 可 破 译: 为 塑 造 一 个 封 闭 的 加 密 系 统 ,杜 绝 使 用 外 调 自 编 子 程 序 甚 至 手 工 转 换 密 码 ,规 定 只 能 由 加 密 系 统 的 译 码 程 序 来 转 换 密码 ;
加 密 系 统 是 不 可 动 态 跟 踪 执 行 的 :动 态 跟 踪 是 对 加 密 系 统 的 窥 视 ,所 以 反 跟 踪 技 术 应 该 绝 对 禁 止 对 加 密 系 统 的 动 态 跟 踪 。
反 跟 踪 技 术 主 要 采 用 的 方 法 有 :
抑 制 跟 踪 中 断 :DEBUG的 T和 G命 令 分 别 要 运 行 系 统 的单 步中 断 和 断 点 中 断 服 务 程 序 ,在 系 统 向 量 表 中 这 两 个 中 断 的 中 断 向 量 分 别 为 1和 3,中 断服务 程 序 的 入 口 地 址 分 别 存 放 在 0000:0004和 0000:000C起 始 的 4个 字 节 中 。 因 此 ,当 这 些 单 元 中的 内容 被 修 改 后 ,T和 G命 令 将 无法 正 常 执 行 ,具 体 实 现 方 法 :
(1)将 这 些 单 元 作 为 堆 栈 使 用;
(2)在 这 些 单 元 中 送 入 软 件 运 行 的必 要 数 据 ;
(3)将 软 件 中 某 个 子 程 序 的 地 址 存 放 在 这 些 单 元中,当 需 要 调 用 时 使 用 INT 1和 INT3指 令 来 代 替 CALL指 令 ;
(4)放 入 惩 罚 性 程 序 的 入 口 地 址 。
封 锁 键 盘 输 入 :各 种 跟 踪 调 试 软 件 在 工 作 时 ,都 要 从键盘 上 接 收 操 作 者 发 出 的 命 令 ,而 且 还 要 从 屏 幕 上 显 示 出 调 试 跟 踪 的 结 果 ,这 也 是 各 种跟 踪调 试 软 件 对 运 行 环 境 的 最 低要 求 。 因 此 反 跟 踪 技 术 针 对 跟 踪 调 试 软 件 的 这 种 "弱 点 ",在 加密 系 统 无 须 从 键 盘 或 屏 幕 输入 、 输 出 信 息 时 ,关 闭 了 这 些 外 围 设 备 ,以 破 坏 跟 踪 调 试软 件的 运 行 环 境 。 键 盘 信 息 的 输 入 采 用 的 硬 件 中 断 方 式 ,由 BIOS中 的 键 盘中断 服 务 程 序 接 收 、 识 别 和 转换 ,最 后 送 入 可 存 放 16个 字 符 的 键 盘 缓 冲 区 。 针 对 这 些 过程 反跟 踪 技 术 可 以 采 用 的 方 法 有:
(1)改 变 键 盘 中 断 服 务 程 序 、 BIOS的 键 盘 I/O中 断 服 务 程序 的入 口 地 址 :键 盘 中 断 的 中 断向 量 为 9,BIOS的 键 盘 I/O中 断 的 中 断 向 量 为 16H,它 们 的 中 断 服务程 序 的 入 口 地 址 分 别 存 放 在内 存 地 址 0000:0024H和 0000:0058H起 始 的 4个 字 节 中 ,改 变 这 些 地址中 的 内 容 ,键 盘 信 息 将 不 能正 常 输 入 。
(2)禁 止 键 盘 中 断 :键 盘 中 断 是 一 个 可 屏 蔽 中 断 ,可 通 过 向 825 9中 断 控 制 器 送 屏 蔽 控 制 字来 屏 蔽 键 盘 中 断 。 控 制 键 盘 的 是 中 断 屏 蔽 寄 存 器 的 第 1位 ,只要 将 该 位 置 1,即 可 关 闭 键 盘 的中 断 。
IN AL,21H
OR AL,02H
OUT 21H,AL
需 要 开 放 键 盘 中 断 时 ,也 要 用 三 条 指 令 :
IN AL,21H
AND AL,FDH
OUT 21H,AL
(3)禁 止 接 收 键 盘 数 据 :键 盘 数 据 的 接 收 是 由 主 机 板 上 8255A并 行 接 口 完 成 的 。 其 中 端 口 A用 来 接 收 键 盘 扫 描 码 ,端 口 B的 第 7位 用 来 控 制 端 口 A的 接收 ,该位 为 0表 示 允 许 键 盘 输 入 ,为 1则 清 除 键 盘 。 正 常 情 况 下 ,来 自 键 盘 的 扫 描 码 从 端 口 A接收 之后 ,均 要 清 除 键 盘 ,然 后 再 允许 键 盘 输 入 ,为 了 封 锁 键 盘 输 入 ,我 们 只 须 将 端 口 B的 第 7位置1:
IN AL,61H
OR AL,80HOUT 61H,AL
当 需 要 恢 复 键 盘 输 入 时 ,执 行 以 下 三 条 指 令 :
IN AL,61H
AND AL,7FH
OUT 61H,AL
(4)不 接 受 指 定 键 法 :在 DEBUG中 T、 P和 G都 是 用 于 动 态 跟踪 的关 键 命 令 ,如 果 加 密 系 统 关 键 命 令 ,如 果 加 密 系 统在 运 行 时 必 须 从 键 盘 上 接 收 信 息 (这 个 时 候 加 密 系 统 容 易被各 种 跟 踪 调 试 软 件 截 获 ,所 以应 尽 量 避 免 ),可 以 通 过 对 键 盘 中 断 服 务 程 序 的 修 改 扩 充 ,使 之不 接 受 T、 P和 G这 些 敏 感 的 键码 ,以 达 到 反 跟 踪 的 目 的 。 当 然 这 是 一 种 不 得 以 而 采 取 的方法 ,因 为 它 有 相 当 大 的 局 限 性和 漏 洞 :一 是 如 果 加 密 系 统 在 接 受 的 信 息 中 ,可 能 牵 涉 到 T、 P等 键 码 ,这 种 方 法 就 行 不 通 了 ;二 是 DEBUG下 的 动 态 调 试 命 令 是 T、 P和 G,那 么 其 它 的 跟 踪 调试软 件 呢 ?显 然 其 它 的 软 件 就不 一 定 是 这 些 命 令 了 ,而 且 还 不 乏 两 个 键 码 、 三 个 键 码 以及更 多 键 码 组 成 的 动 态 调 试 命 令。
3.设 置 显 示 器 的 显 示 性 能 :当 加 密 系 统 无 需 在 屏 幕 上显示 信 息 时 ,可 以 通 过 各 种 方 法关 闭 屏 幕 ,这 样 可 使 解 密 者 无 法 得 到 跟 踪 调 试 软 件 返 回 的任何 信 息 ,以 阻 止 解 密 者 对 加 密系 统 的 破 译 。 这 种 反 跟 踪 技 术 在 实 现 方 法 上 也 有 5类 :
(1)封 锁 屏 幕 显 示 :可 以 重 新 设 置 屏 幕 特 性 ,将 前 景 和 背景色 彩 置 成 同 一 种 颜 色 ,使 解 密 者 在 跟 踪 期 间 无 法 看 见 调 试 信 息 :
MOV AH,0BH
MOV BH,0
MOV BL,0
INT 10H
这 时 屏 幕 的 背 景 颜 色 和 字 符 颜 色 均 被 置 成 黑 色 ,当 需恢 复屏 幕 的 显 示 特 性 时 ,可 将 上述 第 3条 指 令 中 的 BL值 换 成 1~ 7,便 使 字 符 的 颜 色 变 成 深 蓝、 绿和 红 色 等 。
(2)检 查 加 密 系 统 是 否 处 于 被 监 控 状 态 :各 类 跟 踪 调 试软 件在 显 示 信 息 时 ,必 然 会 出 现屏 幕 上 卷 和 换 页 等 操 作 ,因 此 可 以 经 常 检 查 屏 幕 上 某 些 位置的 状 态 ,若 有 变 化 则 一 定 有 人在 跟 踪 程 序 。 获 取 屏 幕 信 息 的 方 法 可 用 以 下 指 令 来 实 现:
MOV AH,02
MOV BH,0
MOV DH,行 光 标 值
MOV DL,列 光 标 值
INT 10H
MOV AH,08
INT 10H
这 样 就 可 以 读 取 光 标 处 的 字 符 和 属 性 了 。
(3)修 改 显 示 器 I/O中 断 服 务 程 序 的 入 口 地 址 :显 示 器 I/O中 断 I NT 10H的 中 断 入 口 地 址 存 放在 内 存 地 址 0000:0040H开 始 的 4个 字 节 中 ,修 改 这 4个 字 节 中 的内容 ,就 可 破 坏 或 扩 充 显 示 器 I/O中 断 服 务 程 序 。
(4)定 时 清 屏 :利 用 对 时 钟 中 断 的 扩 充 ,可 以 使 时 钟 中 断定 时 清 屏 。
(5)直 接 对 视 屏 缓 冲 区 操 作 :每 台 机 器 都 有 固 定 位 置 和长 度的 视 屏 缓 冲 区 (具 体 的 位 置和 长 度 随 显 示 器 的 类 型 而 不 同 ),不 过 各 类 显 示 器 上 的 所有 信息 都 是 视 屏 缓 冲 区 中 信 息 的反 应 。 如 果 软 件 直 接 对 视 屏 缓 冲 区 进 行 操 作 ,可 以 获 得 比利用 显 示 中 断 快 得 多 的 显 示 速 度 ,现 在 许 多 先 进 的 跟 踪 调 试 软 件 都 采 取 了 这 种 方 法 ,一 是提 高速 度 ;二 是 针 对 反 跟 踪 技 术 ,所以 反 跟 踪 技 术 仅 仅 只 修 改 显 示 中 断 的 入 口 地 址 是 远 远 不够 的 ,还 要 通 过 对 时 钟 中 断 的 修 改扩 充 ,定 时 频 繁 地 刷 新 视 屏 缓 冲 区 中 的 内 容 。
检 测 跟 踪 法 :当 解 密 者 利 用 各 种 跟 踪 调 试 软 件 对 加密系 统 分 析 执 行 时 ,势 必 会 造 成许 多 与 正 常 执 行 加 密 系 统 不 一 致 的 地 方 ,如 运 行 环 境 、 中断入 口 和 时 间 差 异 等 等 。 如 果 在反 跟 踪 技 术 中 对 不 一 致 的 地 方 采 取 一 定 的 措 施 ,也 同 样 可以起 到 保 护 加 密 系 统 的 目 的 。 实 现 这 种 方 法 的 关 键 在 于 以 下 两 个 方 面 :一 是 如 果 检测 到加 密 系 统 是 否 被 跟 踪 ,二 是检 测 到 被 跟 踪 后 如 何 进 行 处 理 ,前 一 个 方 面 的 实 现 主 要 依靠加 密 者 对 DOS内 核 和 跟 踪 调 试软 件 的 深 入 了 解 ,后 者 则 一 般 是 一 种 死 循 环 、 启 动 机 器 或提示 非 法 跟 踪 并 停 止 运 行 的 程 序 ,但 也 不 排 除 有 惩 罚 性 动 作 的 程 序 ,在 这 里 只 主 要 讨 论 第一 方面 : (1)定 时 检 测 法 :一 个 程 序 在 正 常 运 行 和 被 跟 踪 运 行 时 ,所花 的 时 间 是 大 不 相 同 的 ,可 以想 象 一 个 被 跟 踪 运 行 的 程 序 往 往 要 花 费 极 长 的 时 间 ,反 跟踪技 术 抓 住 这 个 特 点 ,根 据 执 行时 间 的 长 短 来 判 断 是 否 被 跟 踪 。 这 种 技 术 在 具 体 实 现 时有 两点 要 注 意 :① 确 定 程 序 正 常 运行 时 所 需 的 时 间 :这 个 时 间 的 取 值 一 般 比 最 慢 速 机 器 (8088)运行 的 时 间 稍 微 长 一 些 ,如 果 在检 测 执 行 时 间 时 发 现 所 用 时 间 还 大 于 定 下 的 时 间 值 ,就 可以肯 定 当 前 的 程 序 是 被 跟 踪 执 行 ;② 发 现 执 行 所 用 的 时 间 小 于 定 下 的 时 间 值 ,也 不 能 认 为是?绝对 没 被 跟 踪 ,这 是 因 为 DEBUG的T和 G命 令 在 执 行 时 将 禁 止 所 有 可 屏 蔽 的 中 断 ,用 以 计 时 的 时 钟中 断 也 不 例 外 ,所 以 如 果 用 T和 P命 令 对 程 序 进 行 动 态 跟 踪 执 行 时 ,会 完 全 停 止 时 钟 的 计 数,有 可 能 出 现 执 行 时 间 远 小于 规 定 的 时 间 值 的 情 况 (甚 至 可 能 出 现 不 用 时 间 的 怪 事 )。 解决 这 个 问 题 的 办 法 除 了 利 用抑 制 跟 踪 中 断 法 外 ,还 可 通 过 时 间 中 断 1AH来 解 决 :如 果 发 现 时钟 不 走 动 ,则 进 入 死 循 环 。
MOV AH,0
INT 1AH ;读当前时钟值
MOV BX,DX ;读取的时钟低部存入BX
LOOP:MOV AH,0
INT 1AH
CMP BX,DX ;比较时钟低部是否变动
JZ LOOP ;时钟未走动则返回重读
另 外 还 存 在 另 一 种 可 能 的 情 况 :即 解 密 者 简 化 了 加 密 程 序, 则 也 会 引 起 执 行 所 用 时 间小 于 规 定 值 的 情 况 ,这 种 方 法 的 对 策 是 在 反 跟 踪 技 术 中 加 入定 时 检 测 关 键 部 位 数 据 是 否 改变 和 对 代 码 实 施 保 护 法 。 (2)偶 尔 检 测 法 :在 加 密 系 统 中 加 入 判 断 时 间 的 功 能 ,并 且当 时 间 满 足 某 一 条 件 时 再 对加 密 系 统 中 的 关 键 部 位 进 行 判 断 ,如 果 关 键 部 位 不 存 在 或 发现 了 变 化 则 可 判 定 加 密 系 统 已经 被 破 坏 ,应 立 即 做 出 相 应 的 反 应 。 象 这 类 反 跟 踪 技 术 可 以出 现 在 加 密 系 统 的 各 处 ,并 为了 增 加 解 密 难 度 ,还 可 以 使 多 次 出 现 的 这 类 反 跟 踪 技 术 紧 密联 系 、 环 环 相 扣 ,以 造 成 一 种永 远 无 法 解 密 的 感 觉 。 这 类 技 术 如 果 运 用 于 大 的 程 序 中 可 以极 大 的 提 高 磁 盘 加 密 技 术 的 可 靠 性 ,甚 至 几 乎 不 可 解 密 。 (3)利 用 时 钟 中 断 法 :时 钟 中 断 INT 8大 约 每 隔 55ms就 要 被 执 行一 次 。 它 主 要 处 理 两 项 任务 :一 是 计 时 ;二 是 管 理 软 盘 驱 动 器 的 启 闭 时 间 ,另 外 在 它 执 行时 ,还 要 再 次 调 用 INT 1AH和 INT 1CH中 断 ,这 其 中 的 INT 1CH中 断 实 质 上 只 是 一 个 空 操 作 的 中 断 , 它 主 要 用 于 用 户 有 某 种周 期 性 的 工 作 时 ,让 用 户 用 自 己 设 计 的 中 断 服 务 程 序 取 而 代之 的 。 在 反 跟 踪 技 术 中 利 用 时钟 中 断 可 以 定 时 检 查 前 台 任 务 执 行 的 情 况 ,如 果 发 现 前 台 的程 序 被 非 法 跟 踪 调 试 ,可 以 立即 采 取 相 应 的 措 施 ,也 可 以 对 中 断 向 量 表 作 定 时 检 查 、 计 算程 序 执 行 时 间 、 密 文 的 译 码 操作 和 前 面 说 到 的 定 时 清 屏 等 等 。 利 用 时 钟 中 断 法 是 一 个 非 常有 效 的 反 跟 踪 技 术 ,通 过 对 INT 1CH中 断 的 扩 充 ,时 钟 中 断 可 以 完 成 许 多 任 务 ,但 要 注 意 的 是 ,这 个 扩 充 程 序 不 宜 过 大 ,以免 影 响 前 台 程 序 的 执 行 速 度 。 (4)PSP法 :每 个 程 序 在 执 行 时 都 必 须 建 立 对 应 的 程 序 段 前 缀 P SP,当 程 序 未 被 跟 踪 执 行 时 ,PSP中 14H与 16H开 始 的 两 个 字 节 是 相 同 的 ,当 被 跟 踪 运 行 时 ,这 些内 容 就 不 会 相 同 。 (5)中 断 检 测 法 :一 个 执 行 的 程 序 如 未 被 跟 踪 ,则 INT 1和 INT 3的 入 口 地 址 相 同 ,且 都 为 哑中 断 ,如 被 跟 踪 则 相 反 ,所 以 通 过 检 测 INT 1和 INT 3的 入 口 地 址 即可 判 断 是 否 被 跟 踪 。
、 破 坏 中 断 向 量 表 :DOS提 供 了 从 0到 FFH的 256个 中 断 调 用 (见表 1),它 们 驻 留 在 内 存 的较 低 地 址 中 ,相 应 的 入 口 地 址 位 于 内 存 0000:0000至 0000:03FFH中 ,每个 入 口 地 址 由 4个 字 节 组 成 ,其 中 前 两 个 字 节 为 程 序 的 偏 移 地 址 ,后 两 个 字 节 为 程 序 的 段地 址 。 DEBUG等 跟 踪 调 试 软 件 在 运 行 时 大 量 地 使 用 了 DOS提 供 的 各类 中 断 ,不 仅 如 此 ,比 DEBUG功 能 更 强 大 ,甚 至 针 对 反 跟 踪 技 术 设 计 的 高 级 反 反 跟 踪 调试 软 件 也 调 用 了 DOS中 断 ,典 型 的 例 子 就 是 使 用 其 它 中 断 来 代 替 断 点 中 断 的 反 反 跟 踪技 术 。 破 坏 中 断 向 量 表 显 然 可以 从 根 本 上 破 坏 一 切 跟 踪 调 试 软 件 的 运 行 环 境 ,以 达 到 "以 不应 万 变 "的 最 终 目 的 。 DOS和 BIOS有 个 40段 的 数 据 区 ,它 位 于 内 存 0040:0000至 0040:00FFH,这 256个 字 节 存 放 的 都 是当 前 系 统 配 置 情 况 ,对 这 些 内 容 的 修 改 也 会 直 接 影 响 到 各 类跟 踪 调 试 软 件 的 正 常 运 行 。 从 LOCK89开 始 就 已 经 使 用 了 破 坏 中 断 向 量 表 和 部 分 40段 数 据 区 的反 跟 踪 技 术 ,因 为 这 种 技 术的 卓 越 表 现 ,直 至 LOCK93这 种 反 跟 踪 技 术 一 直 被 保 留 延 用 下 来。 破 坏 中 断 表 在 其 它 反 跟 踪 技 术 中 也 出 现 过 ,如 :抑 制 跟 踪中 断 、 改 变 键 盘 中 断 服 务 程序 入 口 地 址 和 修 改 显 示 器 中 断 服 务 程 序 入 口 地 址 等 等 ,所 以破 坏 中 断 表 是 一 个 涉 及 面 极 广、 效 果 极 好 的 反 跟 踪 技 术 ,它 能 最 大 程 度 地 阻 止 解 密 者 对 加密 系 统 的 直 接 或 间 接 动 态 跟 踪 ,使 解 密 技 术 面 临 一 个 全 新 的 问 题 。
设 置 堆 栈 指 针 法 :跟 踪 调 试 软 件 在 运 行 时 ,会 产 生 对 堆栈 的 操 作 动 作 ,比 如 :保 存 断 点。 因 而 在 反 跟 踪 技 术 中 对 于 堆 栈 指 针 的 运 用 就 显 得 相 当 重 要了 ,比 如 对 堆 栈 指 针 的 值 进 行设 计 ,并 力 求 使 设 计 的 结 果 具 备 一 定 的 抗 修 改 性 ,以 免 解 密 者通 过 再 次 修 改 堆 栈 指 针 的 值来 达 到 继 续 跟 踪 的 目 的 。 !TB38013100.gif
(1)将 堆 栈 指 针 设 到 ROM区 :只 读 存 储 区 ROM是 无 法 保 存 数 据 的 , 堆 栈 指 针 如 果 指 向 ROM区 域 ,势 必 不 能 保 存 数 据 ,这 将 会 使 跟 踪 调 试 无 法 继 续 进 行下 去 。
(2)设 在 程 序 段 中 :堆 栈 指 针 如 果 设 在 将 要 执 行 的 程 序 段 中 , 那 么 任 何 的 堆 栈 操 作 都 会破 坏 程 序 代 码 ,使 程 序 不 能 正 常 运 行 。
(3)设 在 中 断 向 量 表 内 :INT 1和 INT 3是 反 跟 踪 技 术 一 定 要 破坏 的 中 断 ,所 以 将 堆 栈 指 针 设在 内 存 的 低 地 址 段 内 ,既 可 以 进 行 少 量 的 堆 栈 操 作 (跟 踪 调 试软 件 一 般 需 要 大 量 的 堆 栈 来存 放 数 据 ),还 可 以 破 坏 单 步 和 断 点 中 断 的 入 口 地 址 。
(4)将 堆 栈 指 针 移 作 它 用 :如 果 确 认 没 有 堆 栈 操 作 的 话 ,可以 将 堆 栈 指 针 拿 来 做 其 它 用 途 ,如 保 存 经 常 要 更 换 的 数 据 ,这 样 就 可 以 使 堆 栈 指 针 的 值 经常 更 换 ,从 而 使 它 根 本 无 法 保存 数 据 。设 置 堆 栈 指 针 法 是 一 个 针 对 动 态 跟 踪 设 计 的 反 跟 踪 技 术 ,不 过 它 的 运 用 有 着 一 定 的 限制 :(1)要 保 证 将 要 执 行 的 程 序 段 不 能 进 行 有 效 的 堆 栈 操 作 ;(2)在 要 进 行 堆 栈 操 作 时 ,必 须 首先 恢 复 正 确 的 堆 栈 指 针 。 设 置 堆 栈 指 针 不 会 影 响 到 时 钟 中 断 保 存 数 据 ,因 为 象 时 钟和 键 盘 等 系 统 中 断 保 存 数 据所 用 的 都 是 系 统 栈 ,而 不 象 单 步 和 断 点 中 断 是 用 堆 栈 来 保 存断 点 的 。
对 程 序 分 块 加 密 执 行 :为 了 防 止 加 密 程 序 被 反 汇 编 ,加密 程 序 最 好 以 分 块 的 密 文 形式 装 入 内 存 ,在 执 行 时 由 上 一 块 加 密 程 序 对 其 进 行 译 码 ,而 且在 某 一 块 执 行 结 束 后 必 须 立即 对 它 进 行 清 除 ,这 样 在 任 何 时 刻 内 不 可 能 从 内 存 中 得 到 完整 的 解 密 程 序 代 码 。 这 种 方 法除 了 能 防 止 反 汇 编 外 还 可 以 使 解 密 者 无 法 设 置 断 点 ,从 而 从 一 个 侧 面 来 防 止 动 态 跟 踪 。
对 程 序 段 进 行 校 验 :对 一 个 加 密 程 序 的 解 密 工 作 往 往只 是 对 几 个 关 键 指 令 的 修 改 ,因 此 对 程 序 段 特 别 是 关 键 指 令 的 保 护 性 校 验 是 十 分 必 要 的 ,这 样 可 以 防 止 解 密 者 对 指 令进 行 非 法 篡 改 。 具 体 方 法 有 累 计 、 累 减 、 累 或 和 异 或 和 程 序段 等 方 法 。
迷 惑 、 拖 垮 解 密 者 :为 了 迷 惑 和 拖 垮 解 密 者 ,可 以 在 加密 系 统 中 多 多 设 置 专 门 针 对解 密 者 的 "陷 阱 ",这 样 既 可 以 消 耗 解 密 者 的 时 间 和 精 力 ,还 可以 磨 灭 解 密 者 的 斗 志 和 毅 力 。
(1)设 置 大 循 环 :程 序 越 简 单 ,就 越 易 读 ,跟 踪 也 就 越 方 便 ,便于 这 个 原 因 ,在 加 密 系 统 中 设置 大 循 环 ,可 以 在 精 力 上 消 耗 解 密 者 ,延 长 跟 踪 破 译 加 密 系 统的 时 间 。 这 种 反 跟 踪 技 术 已经 被 广 泛 应 用 ,而 且 取 得 了 较 好 的 效 果 。 它 的 具 体 实 现 方 法是 :在 加 密 程 序 中 设 置 多 重 循环 ,并 使 上 一 层 循 环 启 动 下 一 层 循 环 ,下 一 层 循 环 启 动 下 下 一层 循 环 ,如 此 循 环 ,而 且 还 可 以 频 繁 地 调 用 子 程 序 ,还 要 保 证 不 能 有 一 层 循 环 被 遗 漏 不 执 行。
(2)废 指 令 法 :在 加 密 程 序 中 设 置 适 当 的 无 用 程 序 段 ,而 且在 这 其 中 设 置 如 大 循 环 等 程序 ,这 种 方 法 在 反 跟 踪 技 术 中 被 称 为 废 指 令 法 。 要 实 现 废 指令 法 有 三 点 要 保 证 :① 废 指 令要 精 心 组 织 安 排 ,不 要 让 解 密 者 识 破 机 关 ,这 是 废 指 令 法 应 具备 的 基 本 点 ,因 为 它 的 目 的 是诱 导 解 密 者 去 研 究 破 解 自 身 ,并 在 破 解 过 程 中 拖 垮 解 密 者 ,所以 废 指 令 法 本 身 的 伪 装 十 分重 要 ;② 所 用 的 废 指 令 应 大 量 选 用 用 户 生 疏 的 指 令 或 DOS内 部功 能 的 调 用 ,以 最 大 程 度 地 消耗 解 密 者 的 精 力 和 破 译 时 间 ;③ 要 确 保 不 实 现 任 何 功 能 的 废指 令 段 不 能 被 逾 越 ,这 是 废 指令 法 要 注 意 的 一 个 重 要 问 题 ,因 为 它 如 果 能 被 轻 易 逾 越 ,那 么就 说 明 加 密 系 统 所 采 取 的 废指 令 法 是 失 败 的 反 跟 踪 技 术 。
(3)程 序 自 生 成 技 术 :程 序 的 自 生 成 是 指 在 程 序 的 运 行 过 程中 ,利 用 上 面 的 程 序 来 生 成将 要 执 行 的 指 令 代 码 ,并 在 程 序 中 设 置 各 种 反 跟 踪 措 施 的 技 术 。 这 样 可 以 使 得 反 汇 编 的 指令 并 非 是 将 要 执 行 的 指 令 代 码 ,同 时 还 可 以 隐 蔽 关 键 指 令 代码 ,但 由 于 实 现 代 价 较 高 ,一 般只 对 某 些 关 键 指 令 适 用 。
指 令 流 队 列 法 :CPU为 了 提 高 运 行 速 度 ,专 门 开 辟 了 一 个指 令 流 队 列 ,以 存 放 将 要 执行 的 指 令 ,这 样 就 节 省 了 CPU为 了 取 指 令 而 等 待 的 时 间 。 不 过通 过 对 它 的 利 用 也 可 以 达 到迷 惑 解 密 者 和 阻 止 动 态 跟 踪 加 密 程 序 的 目 的 。 在 程 序 正 常 执 行 时 ,其 后 续 指 令 是 存 放 在 指 令 流 队 列 中 的 , 而 跟 踪 调 试 程 序 时 就 完 全不 同 了 ,因 为 它 牵 涉 到 动 态 修 改 程 序 指 令 代 码 (包 括 后 续 指 令 )的 原 因 ,所 以 无 论 后 续 指 令 是否 被 存 放 在 指 令 流 队 列 中 ,被 修 改 的 指 令 都 将 被 执 行 (包 括 后续 指 令 ),这 一 点 和 程 序 正 常 执行 时 是 相 反 的 ,因 为 正 常 执 行 时 ,CPU只 从 指 令 流 队 列 中 读 取 指令 , 即 使 后 续 指 令 刚 刚 被 正在 执 行 的 指 令 修 改 过 。 这 是 一 个 构 思 十 分 巧 妙 的 反 跟 踪 技 术 ,现 列 出 一 个 基 于 此 原 理 的 反跟 踪 程 序 :
JMP S2
S1: JMP S1 ;死循环
S2: LEA SI,S1
LEA DI,S3
PUSH CS
PUSH CS
POP DS
POP ES
CLD
LODSW
STOSW
;设 计 在 S3处 存 放 S1处 的 指 令 ,如 果 在 正 常 执 行 时 ,由 于 S3处的 其 它 指 令 已 经 被 存 入 指 令流 队 列 中 ,所 以 它 会 正 常 运 行 ,反 之 则 执 行 S1处 的 死 循 环 指 令 S3: 其 它 指 令.
9.逆 指 令 流 法 :指 令 代 码 在 内 存 中 是 从 低 地 址 向 高 地 址存 放 的 ,CPU执 行 指 令 的 顺 序也 是 如 此 ,这 个 过 程 是 由 硬 件 来 实 现 的 ,而 且 这 个 规 则 已 经 被人 和 跟 踪 调 试 软 件 牢 牢 接 收。 针 对 这 个 方 面 逆 指 令 流 法 特 意 改 变 顺 序 执 行 指 令 的 方 式 ,使 CPU按 逆 向 的 方 式 执 行 指 令 ,这 样 就 使 得 解 密 者 根 本 无 法 阅 读 已 经 逆 向 排 列 的 指 令 代 码 ,从 而 阻 止 解 密 者 对 程 序 的 跟踪 。 因 为 顺 序 执 行 指 令 是 由 硬 件 决 定 的 ,所 以 如 果 用 软 件 的 方式 设 计 CPU按 逆 向 执 行 指 令,就 显 出 相 当 困 难 和 繁 琐 了 ,不 过 逆 指 令 流 法 是 一 个 非 常 有 吸引 力 和 使 用 前 景 的 反 跟 踪 技术 ,如 果 能 把 这 种 技 术 成 功 地 运 用 在 磁 盘 加 密 技 术 中 ,势 必 会给 解 密 者 造 成 巨 大 的 压 力 和威 慑 。 近 些 年 来 各 种 报 刊 对 这 种 反 跟 踪 技 术 进 行 过 深 入 的 讨 论 ,本 文 就 摘 取 其 中 的 精 华 给 大家 介 绍 一 下 逆 指 令 流 法 的 实 现 方 法 。 单 步 中 断 是 DOS提 供 跟 踪 程 序 的 手 段 ,这 个 中 断 普 遍 被 运 用于 跟 踪 调 试 软 件 ,是 反 跟 踪技 术 的 "死 敌 ",但 是 如 果 运 用 恰 当 ,它 同 样 也 可 以 成 为 "朋 友 ",逆 指 令 流 法 就 是 一 例 :由 于 顺 序执 行 指 令 是 由 硬 件 来 控 制 的 ,所 以 用 软 件 方 式 改 变 这 种 规 律的 方 法 只 有 通 过 以 下 两 点 :① 使 指 令 代 码 在 内 存 中 逆 向 排 列 ,即 从 高 地 址 向 低 地 址 排 列 ;② 执 行 某 条 指 令 时 ,再 将 该 指 令按 正 常 顺 序 排 列 ,以 适 应 硬 件 的 要 求 。 前 者 是 静 态 的 ,在 设 计时 就 可 安 排 妥 当 ,而 后 者 则 较复 杂 了 ,一 是 如 何 在 连 续 执 行 指 令 的 同 时 ,把 指 令 代 码 从 逆 向 捋 顺 为 顺 向 ;二 是 指 令 的 长 度各 不 相 同 ,如 何 迅 速 了 解 下 一 条 要 捋 顺 的 指 令 代 码 到 底 有 多长 ?这 就 要 利 用 设 置 单 步 中 断标 志 和 修 改 单 步 中 断 服 务 程 序 来 完 成 。
(1)设 置 单 步 中 断 标 志 使 CPU每 执 行 完 一 条 指 令 后 都 转 去 执行 INT 1中 断 服 务 程 序 ,并 同时 修 改 INT 1的 中 断 服 务 程 序 ,使 它 能 完 成 逆 向 指 令 的 顺 向 及 修改 CS:IP的 值 、 使 IP指 针 人 为递 减 的 功 能 。 设 置 单 步 中 断 的 标 志 ,即 是 将 标 志 寄 存 器 的 第 8位 T置 为 1,程 序 如 下 :
PUSHF
POP AX
OR AX,0100HPUSH AX
POPF
(2)修 改 CS:IP的 值 :设 X地 址 处 的 指 令 执 行 后 ,由 硬 件 自 动 完成 了 IP值 的 递 增 修 改 (顺 序 执 行 ),将 IP的 值 改 为 Y(Y>X),指 向 了 下 一 条 要 执 行 的 指 令 (正 常 情况 下 )。 那 么 根 据 X和 Y的 值 就可 判 断 出 X地 址 处 的 指 令 代 码 的 确 切 长 度 (Y-X),从 而 推 出 逆 向时 下 一 条 指 令 的 地 址 Z(Z<X):Z=X-(Y-X)=2X-Y,知 道 了 逆 向 时 的 下 一 条 指 令 的 地 址 ,就 可 在 INT 1中 断 服 务 程 序 中 将 保护 的 中 断 现 场 中 的 IP从 Y改 成 Z。
(3)指 令 顺 向 :首 先 为 了 保 证 系 统 的 速 度 ,再 者 为 了 减 少 修改 扩 充 的 INT 1中 断 服 务 程 序 的长 度 ,在 具 体 确 定 顺 向 指 令 代 码 的 长 度 时 ,以 PC机 最 长 的 指 令代 码 6字 节 计 算 。 决 定 了 指 令代 码 的 长 度 ,剩 下 的 就 是 指 令 代 码 的 顺 向 :由 于 CPU只 能 顺 向 执行 指 令 ,所 以 必 须 将 Z地 址 前面 的 5个 字 节 的 内 容 复 制 到 Z地 址 后 面 的 单 元 中 ,并 且 为 了 避 免破 坏 其 中 的 信 息 ,要 将 Z地 址后 面 的 5个 单 元 中 的 内 容 暂 时 保 存 起 来 ,以 便 下 次 予 以 恢 复 。 逆 指 令 流 法 实 现 过 程 中 应 注 意 的 问 题 :① 由 于 指 令 流 队 列的 存 在 ,使 得 第 一 次 进 入 INT 1的 地 址 各 不 相 同 ,这 是 因 为 指 令 流 队 列 的 大 小 随 CPU的 不 同 而不 同 :8088CPU的 指 令 流 队 列 空 间 为 4个 字 节 ,80286为 6个 字 节 , 80386为 16个 字 节 ,所 以 指 令 流 队列 中 的 后 续 指 令 的 条 数 也 各不 相 同 ,这 样 就 导 致 了 不 同 的 CPU,首 次 调 用 INT 1的 地 址 各 不 相同 的 现 象 。 它 的 解 决 方 法 是在 设 置 完 单 步 中 断 标 志 后 ,不 要 立 即 安 排 执 行 指 令 ,而 应 插 入适 当 的 空 操 作 命 令 NOP(90);② 如 果 逆 指 令 流 程 序 中 有 软 中 断 指 令 (以 指 令 代 码 CDH打 头 的 ),必须 恢 复 正 常 的 顺 序 执 行 指令 状 态 ,否 则 在 软 中 断 服 务 程 序 中 也 将 使 程 序 逆 向 运 行 。 并在 软 中 断 指 令 执 行 完 毕 后 ,再设 置 成 逆 指 令 流 运 行 方 式 。
混 合 编 程 法 :破 译 加 密 系 统 的 首 要 工 作 是 读 取 程 序 和弄 清 程 序 思 路 ,并 针 对 其 中 的弱 点 下 手 。 为 了 阻 挠 解 密 者 对 加 密 程 序 的 分 析 ,可 以 尽 量 将程 序 设 计 得 紊 乱 些 ,以 降 低 程序 的 可 读 性 。 这 种 方 法 具 体 在 反 跟 踪 技 术 中 使 用 的 就 是 混 合编 程 法 等 ,因 为 高 级 编 译 语 言的 程 序 可 读 性 本 身 就 较 差 (如 编 译 过 的 BASIC、 COBOL程 序 等 ),如果 再 将 几 种 高 级 语 言 联 合起 来 编 写 使 用 ,一 定 会 极 大 的 降 低 程 序 的 可 读 性 。
自 编 软中 断 13技 术 :由 于 反 拷 贝 技 术 制 作 的 指 纹 一 般都 存 在 于 软 盘 上 ,所 以 现 在 的磁 盘 加 密 系 统 都 存 在 着 一 个 明 显 的 外 部 特 征 :即 都 要 通 过 调用 INT 13来 判 断 软 盘 上 指 纹 的真 伪 。 由 于 要 调 用 INT 13,所 以 应 保 证 中 断 表 (至 少 部 分 中 断 表 ,如 与 INT 13有 关 的 INT 40和 INT1E等 等 )的 正 确 性 ,即 使 先 前 使 用 了 破 坏 中 断 表 等 反 跟 踪 技术 ,到 这 个 时 候 都 必 须 恢 复 中断 表 的 内 容 ,这 就 过 早 地 暴 露 了 自 己 的 弱 点 ,加 上 INT 13中 断 的入 口 参 数 是 公 开 的 ,通 过 入 口参 数 便 可 发 现 加 密 程 序 具 体 读 取 的 是 哪 些 扇 区 或 哪 个 磁 道 ,甚 至 可 以 发 现 加 密 系 统 采 取 的是 何 种 反 拷 贝 技 术 ,这 就 给 解 密 者 以 可 乘 之 机 ,对 加 密 系 统 造成 巨 大 的 威 胁 .
相关视频
相关阅读 word统一图片大小实例图文教程U盘误删除文件恢复实例图文教程smart install maker实例图文教程论坛插入在线视频实例教程显示器分辨率不正常解决实例Win7下隐藏文件夹实例教程硬盘分区不见了后成功恢复数据实例分享软件破解初级实例教程(附工具附图)
热门文章 没有查询到任何记录。
最新文章
U盘传播的病毒 _ U盘病打开U盘才不会中毒的方
alg.exe是什么进程?能不能关闭?nsis error是什么?及解决方法蓝屏错误代码解析 看代码解决问题dotnetfx.exe是什么
人气排行 alg.exe是什么进程?能不能关闭?qq修复工具怎么用如何更改ie收藏夹地址位置(路径)无光驱,无U盘启动,怎样重装系统?nsis error是什么?及解决方法Generic Host Process for Win32 开机后总是六种修复崩溃后WindowsXP系统的技巧exp1orer.exe 病毒清除办法
查看所有0条评论>>