|
地板
楼主 |
发表于 2005-12-10 01:30
|
只看该作者
拷贝教程第八集 <BR> <BR> 由于上次弟的软件失败后 ,急忙推出下集 ,所以显得比较简陋 ,请多包涵。 <BR> 原因是弟本来想写无缝锁程序 ,无耐该种软件只有360K DRIVER 能做出来, <BR> 于是弟又将作品抽回来 ,因此弟在此简介如何制作无缝锁吧 ! <BR> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <BR> FORMAT 的部份 : <BR> 先将磁盘 ID 设定好 ,然后 FORMAT 即可.... <BR> 有关于磁盘 ID 的部份 ,请参考前几集。 <BR> FORMAT 就使用 INT 13h 即可 .... <BR> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <BR> 读取数据部份 : <BR> 0000:0522 这个位址一般都是 02 ,代表扇区 N 值等于 2(512Bytes) <BR> 但是如果您将它改为 6 ,就能够读出该种扇区内的数据 (请参考第五集) <BR> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <BR> ※ 弟附上一个软件 ,是一个软件保护的实例 ,让各位练习使用。 <BR> FORMAT.EXE 这是一个用来格式化您的磁盘片 ,在您执行这个软件前 ,请在 <BR> 软驱A放入一片您不要的磁盘 ,然后再执行这个软件 ,于是它会在第27h <BR> (39道)的地方做一个额外扇区FFh的扇区 ,一般的拷贝程序无法拷贝该种特 <BR> 别的扇区(COPYWRIT、COPYIIPC 等强拷软件除外) ,于是可达到您的磁盘保 <BR> 护的目地 ,因此本程序只能当做一种在磁盘上做标记的程序。 <BR> CHECK .EXE 这是用来简查磁盘有没有标记 ,然后判别出结果并显示之。 <BR> 换句话说 ,这是一套上保护的软件 ,但是防拷能力并不强 ,只要稍具拷贝能 <BR> 力的软件皆能拷下来 ,至于若希望软件不能被拷贝 ,似乎只能借助于外部硬 <BR>体才能办得到 ,因此弟只写了简单的程序。 <BR> <BR>拷贝教程第九集 <BR> <BR> 经过数天来苦心研究后 ,终于发现所写的无缝锁何以不能执行之 ,现在就 <BR> 展现在您的眼前 (我花了数天才研读出来..您只要看一遍就懂了)。 <BR> 在此为您解说一下磁盘参数吧 ,这个参数对于想玩磁盘保护的人绝对要学 <BR> 起来 ,因为懂了它就可以玩出一堆花样来.... <BR> 0000:0525h 02h ..... 磁盘的N值 ,用以设定目前读取的ID之N值。 <BR> 0000:0526h 12h ..... 每一道18个扇区 ,弟将它改为9,才能正确格式画磁盘。 <BR> 请您放一片磁盘(已格式划过的2HD磁盘)到A软驱 ,然后执行 FORN6.EXE <BR> 它就会帮你制造坏磁道(4Fh道第0面)。 <BR> 接着执行 SAVEN6.EXE ,它会把坏道存成文件 (DEMO.DAT) 。 <BR> 您可以试著看看每次格式划后的坏道数据都不一样 ,拷贝后亦不一样。 <BR>您可以用"TYPE DEMO.DAT看到坏道数据 ,这种保护是无法被覆制的。 <BR> 解说 (FORMAT-N6) : <BR> ┌ 将磁盘参数每道有18(12h)个扇区(0000:0526h) ,改为每道有9个扇区 <BR> ├ 然后格式划磁盘 <BR> ├ 将磁盘参数改回正常 <BR> └ 结束程序 <BR> 解说 (SAVE-N6) : <BR> ┌ 将磁盘参数N值由2改为6 <BR> ├ 读取最后一个扇区 ,放到 Buffers <BR> ├ 将 Buffers 的数据存盘 (DEMO.DAT) <BR> └ 结束程序 <BR> 解说磁盘格式 : <BR> 前几集我们曾经讨论过磁盘格式 ,但由于太精简 ,有些人可能一知半解 <BR> 所以重新再说明一次。 <BR> 所以重新再说明一次。 <BR> 2D : 每片有39个磁道 ,每个磁道又分为8个扇区(DOS2.0版本) <BR> 9个扇区(DOS3.0以上版本) <BR> 但是一般360K软驱可以控制到41道 ,于是也有人多用此磁道 ,变成 <BR> 额外的磁道保护。 <BR> 2HD : 每片有79个磁道 ,每个磁道又分为18个扇区(DOS3.1以上版本) <BR> 但是一般1.2MB软驱可以控制到81道 ,于是也有人多用此磁道 ,变成 <BR> 额外的磁道保护。 <BR> 扇区 : 每个扇区又有分为 T.H.R.N ,就相当于是该扇区的目录一样 ,记录了 <BR> T = 磁道 ,H = 面 , R = 第几号扇区 , N = 2 扇区有 200h Bytes <BR> (N=3 400hBytes N=4 800hBytes N=5 1000hBytes N=6 2000hBytes) <BR> 这个目录总称 ID 。 <BR> 正常的一片 2D 磁盘 27h 道第0面的 ID 应该是 : <BR> T. H. R. N. <BR> 27,00,01,02 ┐ <BR> 27,00,02,02 ┃ 这个目录(ID)就是这条 <BR> 27,00,03,02 ┃ 磁道的所有东西。 <BR> 27,00,04,02 ┃ <BR> 27,00,05,02 ┃ 每个扇区可放 512Bytes <BR> 27,00,06,02 ┃ (200h)Bytes <BR> 27,00,07,02 ┃ <BR> 27,00,08,02 ┃ <BR> 27,00,09,02 ┘ <BR> 或许你已发现了 ,这条磁道总容量是 1800h Bytes ,而如果 N=6 就有 2000h <BR> Bytes ,于是当您读取这个磁道 ,就会读取超过该磁道的容量 ,将其磁道接缝 <BR> 处顺便读出来 ,而一般软驱无法处里此接缝 ,因此也就无法拷贝。 <BR> 接缝 : 磁盘上有一个索引孔 ,当软驱读到这个孔就会开始做读写工作 ,直 <BR> 到该工作做完为止 ,但是不可能整圈磁道全用完 ,于是造成将这未读 <BR> 写完的部份扇区(俗称接缝)。 <BR> 软驱的磁头在写入时 ,磁头都会加以磁化 ,但磁性物体不可能通电 <BR> 后马上有磁性 ,断电后马上没有磁性 ,由于这个剩磁 ,将接缝的数据 <BR> 变动到 (因为写完数据后磁头仍会在该道停留到遇到下一次索引孔为 <BR> 止),这个磁性绝对无法用软件加以控制 ,所以市面上也就没有东西可 <BR> 以拷贝它。 <BR> <BR>拷贝教程第十集 <BR> <BR>据说 KeyPro 保护是用某种专上此种保护的软件上的,所以应该大同小异。 <BR>某种以 KeyPro 保护的雷射印表软件 ,兹以原版与解密版说明之 : <BR>A>DEBUG JM.EXE <BR>-u CS:C560 (原版) <BR>15C3:C560 9A0C003C23 CALL 233C:000C ━使用INT17h将KeyPro数据读出 <BR>15C3:C565 2E CS: ┐ <BR>15C3:C566 01066901 ADD [0169],AX ┃ <BR>15C3:C56A D0E0 SHL AL,1 ┃ <BR>15C3:C56C D0E0 SHL AL,1 ┃ <BR>15C3:C56E D0E0 SHL AL,1 ┃运算和数据比对 <BR>15C3:C570 D0E0 SHL AL,1 ┃ <BR>15C3:C572 2E CS: ┃ <BR>15C3:C573 01066901 ADD [0169],AX ┃ <BR>15C3:C577 50 PUSH AX ┃ <BR>15C3:C578 59 POP CX ┃ <BR>15C3:C579 2E CS: ┃ <BR>15C3:C57A 2906038D SUB [8D03],AX ┃ <BR>15C3:C57E 3C00 CMP AL,00 ┃ <BR>15C3:C580 751E JNZ C5A0 ┘ <BR>15C3:C582 B402 MOV AH,02 <BR>15C3:C584 9A0C003C23 CALL 233C:000C <BR>15C3:C589 8AE6 MOV AH,DH <BR>15C3:C58B E89805 CALL CB26 <BR>15C3:C58E A3F2CD MOV [CDF2],AX <BR>-u CS:C560 (解密版) <BR>15C3:C560 9A0C003C23 CALL 233C:000C ━ 读数据(读不到) <BR>15C3:C565 90 NOP ┐ <BR>15C3:C566 31C0 XOR AX,AX ┃已知数据运算的 AX=0 <BR>15C3:C568 2E CS: ┃所以帮它运算。 <BR>15C3:C569 01066901 ADD [0169],AX ┘ <BR>15C3:C56D 90 NOP <BR>15C3:C56E 90 NOP <BR>15C3:C56F 90 NOP <BR>15C3:C570 90 NOP <BR>15C3:C571 90 NOP <BR>15C3:C572 2E CS: <BR>15C3:C573 01066901 ADD [0169],AX ┐ <BR>15C3:C577 50 PUSH AX ┃ <BR>15C3:C578 59 POP CX ┃ 以下运算式因只用到 AX <BR>15C3:C579 2E CS: ┃ 故不修改其内容 <BR>15C3:C57A 2906038D SUB [8D03],AX ┃ <BR>15C3:C57E 3C00 CMP AL,00 ┃ <BR>15C3:C580 751E JNZ C5A0 ↓ <BR>15C3:C582 B402 MOV AH,02 <BR>15C3:C584 9A0C003C23 CALL 233C:000C <BR>15C3:C589 8AE6 MOV AH,DH <BR>15C3:C58B E89805 CALL CB26 <BR>15C3:C58E A3F2CD MOV [CDF2],AX <BR>现在的软件保护,实在越来越厉害,实在可以这样说 : <BR> 解读不易,解密更难,所有保护,专攻DEBUG,防止破X <BR>======================================================================== <BR>由于时间关系,本篇稍嫌简陋,由于弟的功力有限,下回应该会更精彩一些。 <BR>拷贝教程到此算是暂时告一段落了 ,原因是题裁取得不易 ,软件防破能力太强 <BR>,因此对于开站的我已无多的时间慢慢 Debug ,只好告诉各位未来续出的时间可 <BR>能会每1-2个月出一次 ,也希望各位大爷忍耐一些 ,所以先告诉各位一些主意 , <BR>就是对于防拷不必花时间去解 ,只要您写个小程序即可解所有 Int13 的保护 , <BR>1. 拦截 INT13h ,对于来自非DOS调用的时后 ,即将所读到的数据存盘 ,以备下 <BR> 次拷贝版使用。 <BR> (判别是否DOS调用 ,只要判别触动INT13时的CS是否小于自己程序的CS可得知) <BR>2. 同上 ,但这次是将存的文件读出来。 <BR>这个程序已有人写出来 ,由于该软件并非弟所写 ,故无 Source. 可给您 ,几乎 <BR>所有的软件都可解。 <BR>SAVE.EXE 是负责 SAVE 坏道的东西 ,键入后再输入文件名 ,如 C:\A.LOK ,然后执 <BR>行原版磁盘 ,这时原版磁盘一边执行 ,一边将坏道数据存盘 ,最后程序执行了 , <BR>您的硬盘也有保护道数据了。 <BR>重新开机 ,清掉 SAVE.EXE。 <BR>LOAD.EXE 是负责将坏道数据放回去的 ,键入后再输入文件名 ,如 C:\A.LOK ,然后 <BR>就可以执行拷贝版了。 <BR>由于关系重大 ,只有赞助本站 User 可拿到软件 ,赞助者亦不可传至它站 ,否则 <BR>后果自行负责。 <BR>※ 以上软件若有闪失 ,概不负责。 <BR> <BR>拷贝教程第十一集 <BR> <BR>INT_13h 所有功能涵数之解说如下∶ <BR>1. AH=00 (重置磁盘系统) ┐ <BR>2. AH=01 (取得磁盘状态) ┃ <BR>3. AH=02 (读取扇区数据) ┃由于一般 DOS 书籍已有介 <BR>4. AH=03 (写入扇区数据) ┃绍 ,故不再多谈。 <BR>5. AH=04 (验证扇区好坏) ┃ <BR>6. AH=05 ( 格式化磁道 ) ┘ <BR>7. AH=06 格式化损坏的扇区 (PC/XT HD Only) <BR> AL=扇区数 <BR> CH=磁柱号码 <BR> DH=磁头 <BR> DL=软驱 (80h-FFh) <BR>返回代码 : <BR> 成功进位旗标为零 ,AH=00 <BR> 失败进位旗标为壹 ,AH=状态 (参考AH=01) <BR>8. AH=07 格式化软驱 (PC/XT HD Only) <BR> 同 AH=06 ,但会从指定之磁柱起开始格式化 <BR>9. AH=08 取得磁盘参数 (PC/AT PS/2) <BR> DL=软驱 (软盘 00-7F ,硬盘 80-FF) <BR>返回代码 : <BR> 成功则进位码被清除 <BR> BL=软驱种类 <BR> 01 360 KB ,40道 , 5.25寸 <BR> 02 1.2 MB ,80道 , 5.25寸 <BR> 03 720 KB ,80道 , 3.5 寸 <BR> 04 1.44MB ,80道 , 3.5 寸 <BR> CH & CL = 最大磁道数之 "低.高位元 <BR> DH=磁头数 <BR> DL=软驱数目 <BR> ESI 软驱参数表的 [分段:差距] <BR> 失败 (同AH=07) <BR>10 AH=09 (重设磁盘的特性) <BR> DL=软驱码 (PC/AT PS/2 HD Only) <BR> INT_41h 需指向磁盘(HD)0的参数表 <BR> INT_46h 需指向磁盘(HD)1的参数表 <BR>返回代码 : <BR> 成功 AH=00 ,清除进位 <BR> 失败 AH=状态 (参考书籍 AH=01) <BR>11 AH=0A 0B (读/写延伸扇区 HD Only) <BR> AL=扇区数 <BR> CH=磁道 <BR> CL=扇区 <BR> DH=磁头 <BR> DL=软驱 (80h-FFh) <BR> ES:BX = 缓冲区 <BR>返回代码 : <BR> 成功 AH=00 ,清除进位 <BR> 失败 AH=状态 (参考书籍 AH=01) <BR>12. AH=0C (磁头定位,但不读写数据) <BR> CX=磁道编号 <BR> DH=磁头 <BR> DL=软驱 (80h-FFh) <BR>返回代码 : <BR> 成功 AH=00 ,清除进位 <BR> 失败 AH=状态 (参考书籍 AH=01) <BR>13. AH=0D (同 AH=00 只是仅将 HD 磁头拉到第0道) <BR> AL=软驱代码 <BR>返回代码 : <BR> 成功 AH=00 ,清除进位 <BR> 失败 AH=状态 (参考书籍 AH=01) <BR>14. AH=0E 0F(读/写磁盘控制卡上的数据) <BR> ES:BX 缓冲区 <BR>返回代码 : <BR> 成功 AH=00 ,清除进位 <BR> 失败 AH=状态 (参考书籍 AH=01) <BR> 只是将卡上的 BUFFERS 数据读出 & 写入BUFFER ,并不会动软驱 <BR>15. AH=10 (TEST) <BR> DL=软驱 (80h-FFh HD Only) <BR>返回代码 : <BR> 成功 AH=00 ,清除进位 <BR> 失败 AH=状态 (参考书籍 AH=01) <BR>16. AH=11 (同 AH=00 只是仅将 HD 磁头拉到第0道) <BR> AL=软驱代码 <BR>返回代码 : <BR> 成功 AH=00 ,清除进位 <BR> 失败 AH=状态 (参考书籍 AH=01) <BR>17. AH=12 (PC/XT HD CONTROL CARD RAM TEST) <BR>返回代码 : <BR> 成功 AH=00 ,清除进位 <BR> 失败 AH=状态 (参考书籍 AH=01) <BR>18. AH=13 (PC/XT HD CONTROL CARD TEST) <BR>返回代码 : <BR> 成功 AH=00 ,清除进位 <BR> 失败 AH=状态 (参考书籍 AH=01) <BR>19. AH=14 (PC/AT HD CONTROL CARD ALL TEST) <BR>返回代码 : <BR> 成功 AH=00 ,清除进位 <BR> 失败 AH=状态 (参考书籍 AH=01) <BR>20. AH=15 取得磁盘种类 <BR> DL=(软盘00-7Fh ,硬盘80h-FFh) <BR>返回代码 : <BR> 成功 清除进位旗 <BR> AH=00 没有磁盘 <BR> 01 没有支援变更列的软盘 <BR> 02 有支援变更列的软盘 <BR> 03 若是硬盘 ,CXX 长512位元组扇区数 <BR> 失败 AH=状态 (参考书籍 AH=01) <BR>21. AH=16 测试磁盘是否抽换过 PC/AT Only <BR> DL=软驱 (00-7F) <BR>返回代码 : <BR> AH=00 未抽换 清除进位 <BR> AH=06 已抽换 设定进位 <BR>22. AH=17 设定磁盘种类 <BR> AL=00 未用 <BR> 01 320/360KB 软盘 (使用360KB驱动器) <BR> 02 320/360KB 软盘 (使用1.2MB驱动器) <BR> 03 1.2MB 软盘 (使用1.2MB驱动器) <BR> 04 720KB 软盘 (使用720KB驱动器) <BR> DL=软驱 (00-7F) <BR>返回代码 : <BR> 成功 AH=00 ,清除进位 <BR> 失败 AH=状态 (参考书籍 AH=01) <BR>23. AH=18 设定储存媒体种类 (略) <BR>24. AH=19 PARK (PS/2 Only) <BR> DL=软驱 <BR>25. AH=1A FORMAT ESDI HD <BR> <BR>拷贝教程第十二集 <BR> <BR>前言 : <BR> 市面上有个超级磁盘机 ,这是 陈宏然先生的作品 ,但是所支援的功能有限 <BR>所以特别制作了以下三个文件 ,将有利于使用者解密软件。 <BR>13H.EXE : <BR> 这个软件载入后会拦截 INT_13h ,然后当有人触动这个中断即会显示 , <BR> 换句话说 ,可用它来观看磁盘运作 ,与所下参数。 <BR> 例如观查 PCTOOLS 如何检测磁盘片格式 ,1.2软驱做FORMAT 360K.. <BR>UNDOS13.EXE : <BR> 这个软件平常在触动 INT_13h 时并不会显示出 ,除非是来自非 DOS 本 <BR> 身的调用才会显示给您看 ,例如使用 PCTOOLS.EXE 动到磁盘 , 拷贝工具 <BR> 等等才会显示 ,如果您执行有防拷的软件 ,那么将只显示被上防拷的坏道 <BR> ,换据话说 ,您可以利用它来解防拷 ,只要写个常驻程序 ,拦截 INT_13h <BR> 和比对刚才显示过的坏道 ,若相同则将坏道数据送到它指定的记忆体位置 <BR> (参考第五集) ,这样子的话几乎无所不拷。 <BR>PU13.EXE : <BR> 这个软件和 UNDOS13.EXE 完全相同 ,只是每次拦到来自非 DOS 调用的 <BR> INT_13h 就显示给您看 ,并且暂停一下 ,等您按下一个键再继续执行这个 <BR> 程序。 <BR>以上软件显示若因卷页而消失 ,可按右边的Shift键重新显示。 <BR>PS: 这个软件采用记忆体直接显示数据 ,也就是说不会触动 INT_10h 来显 <BR> 示字元 ,其中有标出 MGP ,这就是决定单彩色版 ,单色时 video=B000 <BR> 彩色时 video=B800。 |
|