最全的加密,解密基础教程
基础教程
第一章 使用规则
1-1 前 言
要学会解密之前 ,您必须了解什么是加密 ,如何加密 ,以及跟踪程序,这样对于解密就再也不是梦想 ,使用的工具只有 DEBUG.COM ,不过现在的程序一般都会检测有无载入 DEBUG ,若有则死机!!
1-2 DEBUG 与文件
学过 DEBUG 的人都知道以下的指令 :
T --- 单步执行 ,一次执行一个指令
G <Address> --- 执行到 <Address> 就停下来
G --- 执行完载入的程序
或 "W 用)
L --- 载入文件(LOAD)
W --- 写入文件(SAVE)
W --- 写入文件(SAVE)
大部份解密过程只用到上列指令.....
==================================================
文件分为.COM 与.EXE ,因为.COM 最大只能有 64K 所以演生出.EXE 文件。但是.EXE又有个文件头 ,记录文件放在那儿所以 DEBUG 无法写回此种文件 ,而产生错误信息。
※因此EXE文件必须用 PCTOOLS 将指令码找出来改....
第二章 磁盘格式与保护
2-1 磁盘格式
大多数人认为磁盘只有分几道、两面而已 ,其实又细分了更多的东西2D 的磁盘有 39 道 ,2HD 的磁盘有 80 道 ,每一道又分为9个扇区 ,每个扇区又再分 512 个位元组 ,因此要做保护只要和正常道不同即可。
(PS: DOS2.0每道8个扇区 ,DOS3.1以上版本才是9个扇区)
磁道(TRACK) : 磁盘上分成数个同心圆环 ,便称磁道
面(Head) : 软盘分为 0/1 面 ,但硬盘可能超过此数字
扇区(SECTOR) : 磁道上储存数据区域之一
N 值 : 扇区大小 ,正常为2 (N=1 256Bytes ,N=2 512Bytes)
2的N次方乘以256,即为该扇区的大小
2的N次方乘以256,即为该扇区的大小
因此正常的磁道 ID 栏应该为 :
T H S N
1 02 00 01 02 10.4% 这是第二道第零面的状况
2 02 00 02 02 10.4% "% 代表这扇区占该道的
3 02 00 03 02 10.4% 百分比 ,每次皆会有少许
4 02 00 04 02 10.4% 差异。
5 02 00 05 02 10.4%
6 02 00 06 02 10.4%
7 02 00 07 02 10.4%
8 02 00 08 02 10.4%
9 02 00 09 02 13.7%
----------------------------
若 N=3 则必需有 17.8% 以上的空间才能制造出正常磁道 ,不然都会造出坏道(CRC ERROR) ,所以该道只能有 5 个扇区 ,否则就变成坏道。这是因磁盘控制卡之故 ,无法要求小又好(NO ERROR)的扇区。
2-2 保护的种类与介绍
空白扇区 : 该道不具扇区 ,也就是某一道不做 FORMAT ,这样当读写
这个磁道就会造成错误 ,但只能防标准的 DISKCOPY 的
拷贝程序 ,是早期的保护方式 『如 疯狂大家乐』
非标准扇区 : 就是乱改 T H S N 值 ,变成与正常道不同 ,早期的保护
也是利用此法 『如 卡诺夫将 S 值乱改』
异常大小的扇区 : 占该磁道大小百分比异常 『如 快打砖块』
隐藏扇区 : 用 ID 栏错误法 ,使得该扇区必须要用 READ ID 法才能
找到该扇区 ,所以可骗过早期的 COPYWRIT or COPYIIPC
『如 名车大赛』
增加额外扇区 : 让某一道扇区超过正常数目 『如 名车二代』
磁盘控制卡若能制造出 20h 个扇区就算不错了,但有些却
制造甚多个使之无法用软件拷贝 『如 图腾抓图软件』
虚拟扇区 : 又名 WEAK BIT ,就是将数据写入时以介于 0 与 1 的磁性
写入 ,于是读出来的数据每次都不一样 ,正常软驱无法
做出(碰运气可作出,但百分比越大越难做出) ,只能靠外来
硬件做拷贝 『如 冲破火网』
长道 : 利用转速慢的软驱写入 ,这样写入的数据比较多 ,除非
拷贝的软驱转速相同 ,不然拷不下(拷贝卡也无法)
无缝锁 : 利用 N 值为 6 的扇区 ,因为超过该道所能容纳的空间 ,
所以当您读取该扇区时就会顺便将头尾的数据读出 ,任何
软驱都无法处理该区 ,造成不能被拷贝 ,因此市面使用
此保护者 ,每片都不一样保护道数据 ,不可能拷贝 ,同时
该法会挑软驱 ,故少人用之 『如 风云麻将』
额外磁道 : 正常磁盘假如有 39 道 ,但可读写的还有 40 41 道 ,因
此有人就在该道做手脚 ,然后以正常方式读写该道
『例如 冲风飞车』
2-3 非正常扇区的保护范例
FORMAT 磁道的程序 验证该道
CS:100 MOV AX,0000 重置磁盘 CS:100 MOV AX,0000 重置磁盘
INT 13 / 读写前的准备 INT 13 / 读写前的准备
MOV AX,0501 - FORMAT 1个扇区 MOV AX,0201 - 读一个扇区
MOV BX,0200 - ID 数据放在 ES:BX MOV BX,0200 - 将数据放在 ES:BX
MOV CX,2901 - 29h道 MOV CX,29FF - 第29h道,FFh扇区
MOV DX,0001 - 零面,B软驱 MOV DX,0001 - 零面,B软驱
INT 13 - 起动磁盘 I/O INT 13 - 磁盘 I/O 起动
JB 0100 - 失败再重作 JB TEST ERROR 无特殊道
INT 20 - 结束程序 JMP TEST OK 有特殊道
ES:200 DB 29 00 FF 02 (ID栏数据)
上例利用到额外扇区 ,DOS 只用到 27h道,而该程序用到 29h道,于是不怕有人 FORMAT 该磁盘 ,因为 FORMAT 不会洗到该道数据 。在29h 道制造一个编号为 FFh 的扇区 ,所以就算能拷到该道 ,也可防一般拷贝软件 ,能防 COPYIIPC(因只拷到28h道) ,但仍不能防 COPYWRIT。
第三章 磁盘控制卡的认识
3-1 磁碟控制卡的介绍
磁碟控制卡上的 uPD765A 是整个磁碟作业的核心 ,而 uPD765A 靠著3个I/O 埠的暂存器与 CPU 沟通 ,这三个暂存器如下 :
&h3F2 : 数位输出暂存器
&h3F4 : 主状态暂存器
&h3F5 : 资料/状态 暂存器
资料传输到磁片时 ,又可分为 DMA 与 非DMA 模式 ,由於与主题无关略过。
uPD765A 磁碟控制卡可下达以下指令 :
┌━━━━━━━━━━━━━━━━━━━━━━━━━━┐
┃ Read Data (读取资料) ┃
┃ Write Data (写入资料) ┃
┃ Read ID (读取 ID) ┃
┃ Format A Track (将磁轨格式化) ┃
┃ Read Deleted Dtat (读取已删除的资料) ┃
┃ Write Delete Data (写入已删除的资料) ┃
┃ Read A Track (读取磁轨) ┃
┃ Seek (找寻磁轨) ┃
┃ Scan EQUAL (扫瞄比对相等) ┃
┃ Scan high or equal (扫瞄大於或等於) ┃
┃ Scan low or equal (扫瞄小於或等於) ┃
┃ Recalibrate (校准磁头 ,磁头回到第零轨) ┃
┃ Sense Interrupt status (感测中断状态) ┃
┃ Sense Driver Status (感测磁碟机状态) ┃
┃ Specify (指定) ┃
└━━━━━━━━━━━━━━━━━━━━━━━━━━┘
3-2 工作方式
┌━━━━━┐
┃ CPU ┃
└━━━━━┘
↑
↓
系统汇流排 (SYSTEM BUS) ?
↑ ↑
↓ ↓ 资料窗 ┌━━━┐
┌━━━━━┐ DRQ ┌━━━━━┐←━━━━━┤ RLL ├┬━ ┬━━┐
┃ ┃←━ ┃ ┃ RD DATA └━━━┘┃ ┃ 磁 ┃
┃ ┃ ┃ ┃←━━━━━━━━━━┘ ┃ 碟 ┃
┃ 8237 ┃DACK ┃ uPD765A ┃━━━━━━━━━━━━→ ┃ 机 ┃
┃ ┃━→ ┃ ┃ WR DATA ┃ 介 ┃
┃DMA 控制器┃ ┃ FDC ┃ 输入控制 ┃ 面 ┃
┃ ┃ ┃ ┃ → ┃ ⊙ ┃
┃ ┃━→ ┃ ┃ → ┴━━┘
└━━━━━┘ TC └━━━━━┘ 输出控制
终结计数
3-3 中断简介
由于汇编高手甚多 ,因此各中断向量便不再介绍 ,只介绍几个与磁盘有关的功能 ,其它中断请自行查书。
INT 13h
?
(AH)=0 : 重置软驱 ,将磁头拉到 TRACK 0