📄 worm.txt
字号:
0000:0523 02 表 DMA 传输资料
0000:0524 25 马达起动时等待 25ms
0000:0525 02 N值为2 (512Bytes)
0000:0526 09 可容许最大磁区编
0000:0527 2A 间细(Gap)长度
0000:0528 FF 磁区资料长
0000:0529 50 格式化时的间细长度
0000:052A F6 填入空白磁区的位元值
0000:052B 0F 移动每一轨後等待25ms再读写资料
0000:052C 02 马达起动时间
第四章 程式追踪的动作
┌——————————————┐
│ 4-1 DEBUG 的追踪程式功能 │
└——————————————┘
在组合指令中有数百个指令,程式中又有数以万计的指令,到底那里才是
保护的所在地呢,这就要牵扯到 DEBUG 的 TRACE 的功能了。
DEBUG 较常用的指令有 :
"N" = 定义程式名称
"L" = 根据定义的档名作 LOAD 档案
"W" = 根据定义的档名作 SAVE 档案
"U" = 列出程式 (相当於 LIST)
"T" = 执行一个指令码,遇到 CALL 则跳到内部继续执行
"P" = 执行到下一行,遇到 CALL 时则执行完那个 CALL
"G" = 执行程式,又可分成下列几种
"G=<Address>" 不管现在执行到那,直接跳到<Address>
继续执行(不常用)
"G <Address>" 从现在的地方执行到<Address> 後停下来
"G" 从现在的地方执行到结束为止
┌——————————┐
│ 4-2 组合指令简介 │
└——————————┘
MOV AA,BB 将 BB 放到 AA 里
CALL 呼叫副程式 (相当於 BASIC 的 GOSUB)
RET 与 RETF 返回程式 (相当於 BASIC 的 RETURN)
CMP XX,YY 比较 XX 与 YY
JZ 若相等则跳跃
JNZ 若不相等则跳跃
JB 若小於则跳跃
JG 若大於则跳跃
JMP 无条件跳跃
J??? (各种跳跃指令)
LOOP 回路
INT XX 类似 CALL 的中断涵数
以後凡是遇到上述指令都停下来查看一下 ,即键入 G<该行号>
兹举例如下(随压缩档内附档案) :
CW.EXE (唯我读尊执行档)
A>DEBUG
-N CW.EXE 请您随时键入 "U" 键看看程式
-L
-G 37
-G 60 ┐ 一个回圈,程式在此打转
-T (JZ 6B) │ 为了能继续执行,因此最後一定会跳出此回路
-G 71 │ 前面三个条件跳跃不管是否成立都跳不出此回路
-T (JZ 7C) │ 因此肯定它一定是在 CS:9C 不成立下跳出
-G 8A │ 所以我们可以键入 G 9E(CS:9C的下一行)
-T (JNZ 92) │
-G 98 │ 如果没有把握只能用试的,或您时间多慢慢追踪程式
-G 9C │ 个数圈以後也会跳出。
-T (JZ 58) ┘
-G 9E (回路跳出後继续追踪)
-G AD ┐
-T │ 第二个回路,可能从 "CS:BB JZ CE" 或 "CS:C6 JZ DE" 跳出
-G BB │ 於是先假设是 CS:BB ,当您键入 "G CE" 时程式执行了,可见
-T │ 假设错误,应该是由 CS:C6 跳出,於是再重新 LOAD ,
-G C6 │ 前面已 TRACE 过,故直接键入 G37、T、GFE、T
-T ┘ (因为 RETF 与 IRET、JMP FAR、CALL FAR 指令会改变 CS 段落,故.
在此停下後再按"T" ,如 "CS:37 的 RETF" ,"CS:FE 的 JMP FAR")
-G DE (回路跳出後继续追踪)
-G FE
-T
-G 483
-T
-G 495 \ 从 495 到 4A9 中间有个 "CALL" ,当您执行完此 CALL 竟
-T - "问你密码" ... 表示如杀掉此 CALL 则不会再问你密码了
-G 4A9 / 但以下程式仍稍追一断试试。
-T (JNZ 4AE) --> 如果你密码输入正确,则会跳跃,若错误就不跳,因此
你必须将它改为无条件跳跃 (JMP)
-於是将此两位置 ASCII 码抄下後用 PCTOOLS(Find) 修改後执行看看
结果执行无误 ,此档以後就不再须要输入密码了 !
PS : 1. 在解的过程中一定要拿只笔来记下已追到那儿了 !!
2. CW.EXE 必须再配合其它档才能执行此 Game ,因档案过大
所以未全部压进此档。
请您稍待数日再看续集....
拷贝心得第三集
┌—┐ ┌—┐ ┌—┐ ┌—┐ ┌∞
└—┘ └—┘ └—┘ └—┘ └—┘
┌————————————————————┐
│ 软体蛀虫站资料填写 ,请勿修改其内容 │
│ 90 网之 2 ----> 597-1306 24Hr │
└————————————————————┘
==== 第五章 保护法 ====
┌—————————┐
│ 5-1 无缝锁介绍 │
└—————————┘
方法 : 因为一个磁轨无法容纳 N=6 ,所以会格式化出坏轨(BAD CRC)
同时利用磁碟机无法正确写入索引孔附近资料,因此拷贝卡等
硬体拷被工具也无法拷贝,但如果仍要读该轨时,磁碟就会顺便
将索引孔的资料读出,只要比对其资料即可知是否原版。
流程 : ┌————————┐
│ Reset Driver │
└———┬————┘
┌———┴————┐
│ Read a Track │
└———┬————┘
┌———┴————┐ 不是 →
│ 比对是否坏轨 ├——————┐
└———┬————┘ │
│ 是 │
┌———┴————┐ 非预设资料 │
│ 比对资料区 ├——————┤
└———┬————┘ → ├———————┐
┌———┴————┐ │ 失败结束 │
│ 成功的执行 │ └———————┘
└————————┘
[[[ FORMAT A磁碟第29h轨,第零面,第1个磁区 ]]]
***** FORMAT UTILITY *****
MOV AX,0000 ; 重置磁碟
INT 13 ;
MOV AX,0501 ;
MOV BX,200 ; FORMAT 参数
MOV CX,2901 ; 请查 DOS 手册
MOV DX,0000 ;
INT 13
JB 'FORMAT ERROR'
JMP 'FORMAT COMPLETE'
ES:200 29 01 01 06 (ID 栏值,请看第二集)
***** TRACK DATA *****
MOV AX,0000
INT 13
MOV BX,0000 ; ┐
MOV DS,BX ; │ 磁碟参数表,放在 0000:0525
MOV BX,0525 ; ┘
MOV AL,06 ; N=6
MOV [BX],AL ; 将 0000:0525 磁碟参数改为可读 N=6 的磁区
MOV AX,0201 ; ┐
MOV BX,300 ; │ 读取 29h 轨,第 0 面,第一号磁区
MOV CX,2901 ; │ 读到的资料放到 ES:BX
MOV DX,0000 ; │ 请查 DOS 手册
INT 13 ; ┘
CMP AL,10 ; 是否 BAD CRC
JZ 'TEST OK' ; 如果是则跳越到比对资料
JMP 'ERROR'
由於 N=6 已超过一个磁区所能容纳的范围,因此变成 BAD CRC
AL 的返回代码请参考 DOS 技术手册。
┌——————————┐
│ 5-2 雷射保护 │
└——————————┘
方法 : 将磁片上某一轨用雷射将之破坏,使得该轨原磁片特性全毁
雷射准确性高,可100%破坏特定轨,而一般使用者不会有雷
射,也不会花钱买,而造成无法拷贝。
流程 :
┌———————————┐
│ 格式化该磁轨(Format) ├——┐ 格式化失败
└—————┬—————┘ │
┌———┴————┐ │
│ 写入该轨资料 ├———┤ 防写保护
└———┬————┘ │ 或写入失败
┌———┴————┐ │
│ 读取该轨资料 │ │
└———┬————┘ │
┌—————┴———————┐│
│ 比对是否与写入资料相同 ├┤ 完全相同
└—————┬———————┘│
┌———┴———┐ ┌—┴—┐
│ Test OK │ │ 失败 │
└———————┘ └———┘
***** TEST PROGRAM *****
MOV AX,0000
INT 13
MOV AX,0509 ;
MOV BX,0200 ;
MOV CX,XXXX ; Format a Track
MOV DX,XX00 ;
INT 13 ;
JB 'ERROR'
MOV AX,0201 ;
MOV BX,0200 ;
MOV CX,XXXX ; Read a Track
MOV DX,XX00 ;
INT 13 ;
JNB 'ERROR'
JMP 'Compare DATA'
┌—————————┐
│ 5-3 Weak Bits │
└—————————┘
方法 : 使用微弱的写入信号,造成磁片上有介於0与1之间的讯号
磁碟机每次读取时会读到不同资料,一般磁碟机无法写入
介於0与1的讯号,只能利用写入时突然 Reset 造成 Weak
Bit ,旦准确度不高,只能靠外来硬体拷贝程式(拷贝卡)
流程 :
┌——————————┐
│ 读取该轨放入"A"区 │
└————┬—————┘
┌————┴—————┐
│ 再读一次放入"B"区 │
└————┬—————┘
┌————┴—————┐
│ 比对"A"与"B"的资料 ├—┐
└————┬—————┘ │ 资料完全相同
│ │┌———┐
┌—┴——┐ └┤ 失败 │
│ 成功 │ └———┘
└————┘
***** Weak Bit Test *****
MOV AX,0000
INT 13
MOV AX,0201 ┐
MOV BX,0200 │
MOV CX,0000 │ 读资料到 ES:200
MOV DX,0000 │
INT 13 ┘
MOV AX,0000
INT 13
MOV AX,0201 ┐
MOV BX,0400 │
MOV CX,0000 │ 读资料到 ES:400
MOV DX,0000 │
INT 13 ┘
LOOP: MOV BX,200 ┐
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -