| VB 源码 | VC 源码 | ASP源码 | JSP源码 | PHP源码 | CGI源码 | FLASH源码 | 素材模板 | C 源程序 | 站长工具 | 站长教程 |

系统安全

木马病毒
黑客技术
系统安全
防火墙
安全防范

本类阅读TOP10

·Windows 2000 密码破解不完全指南
·修改系统DLL文件实现禁用来防止木马病毒!
·浅谈Win2000密码的必然破解
·NTFS文件加密初探
·目前实用的几种入侵方法 以及工具防范
·防范非法用户入侵Win 2000/XP系统七招
·守护进程的概念和建立方法
·Windows 2000密码破解不完全指南
·虚拟服务器实现方法
·虚拟文件系统 (VFS) 简介

站内搜索

计算机加密反跟踪技术密文技术和实例

一 )跟 踪 技 术
大家知道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中 断 的入 口 参 数 是 公 开 的 ,通 过 入 口参 数 便 可 发 现 加 密 程 序 具 体 读 取 的 是 哪 些 扇 区 或 哪 个 磁 道 ,甚 至 可 以 发 现 加 密 系 统 采 取 的是 何 种 反 拷 贝 技 术 ,这 就 给 解 密 者 以 可 乘 之 机 ,对 加 密 系 统 造成 巨 大 的 威 胁 .















相关文章
  • 加密三部曲—拒绝电脑数据泄露全攻略
  • NTFS文件加密初探
  • 保护文件有绝招 NTFS加密疑难问题浅析
  • 黑客技巧之破解加密光盘五式
  • 数据加密技术介绍
  • 关于屏幕保护为电脑加密破解方法
  • 技巧分享:让WinRAR自动给文件加密
  • 网络数据加密的三种技术
  • 千年加密解密代码(delphi)
  • 给加密/压缩后的文件名添“彩”
  • 使用 ASP.NET 加密口令
  • 用加密虎为网页加把锁
  • Webmaster网络安全讲座:2.应用加密
  • 相关软件

  • 文件加密/解密的例子  
  • 一个简单的文件加密/解密例子  
  • 一个德国的enigma加密技术例子  
  • ceaser转换文本加密技术  
  • 加密/解密字符串的例子  
  • 加密/解密字符串的例子  
  • 可以将个人编程资料和心得进行加密存储  
  • TIFF图形格式文件加密解密  
  • C语言源码加密工具  
  • DES 加密系统的 C 语言源代码  

  • 下载首页关于我们广告服务联系方式常见问题隐私声明法律条款本站声明下载帮助发布软件站点地图谷歌卫星地图