takihom0812
|
分享:
▲
▼
以前光华商场就补帖流行一阵,以iso档偷改其标头!把档案隐藏.. 或市是烧些杂档,程式就隐藏的...这种片你无法拷背或有一档超大档...(一片cdr的容量) 但它给一程式密码可切换进去..要烧复制要拉出原档于硬碟后再做.. 后来是拐骗..干脆是拿白片卖... 你可能不是吧...应是日片...把切换国家地区就看到!
◎◎◎ 超大档案还原法 ◎◎◎
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓2倍烧录强烈推鉴 Yamaha CDR-200, HP 6020, SONY CDU-926▓ ▓4倍烧录强烈推鉴 TEAC CD-R50S, Yamaha CDR-400 ▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
这里所谓的隐藏目录不是指那种内容为 H 的目录,而是 DIR /a 看不到,工具程 式也找不到, 但可以用 "CD 目录名" 进去的目录。所谓超大档案则是指档案大小大得 离谱,甚至超过一片 CD 的大小。这些技巧在坊间补帖业者已盛行多时, 而其制作 方法只是修改 ISO 档罢了。只要有一份 ISO 9660 的 "Directory record", 就可以知道 该修改什么地方了。
您可以把 ISO 9660 简介那份文件抓回去看看,其中 的 table 15 就是本文的 table 1。先看一下,等一下说明。
Table 1. Directory Record BP Field Name Content 1 Length of directory Record (LEN_DR) Bytes 2 Extended Attribute Record Length Bytes - this field refers to the Extended Attribute Record, which provides additional information about a file to systems that know how to use it. Since few systems use it, we will not discuss it here. Refer to ISO 9660:1988 for more information. 3 to 10 Location of Extent This is the Logical Block Number of the first Logical Block allocated to the file. 11 to 18 Data Length Length of the file section in bytes 19 to 25 Recording Date and Time This is recorded in the same format as the Volume Creation Date and Time 26 File Flags One Byte, each bit of which is a Flag: Bit 0 File is Hidden if this bit is 1 1 Entry is a Directory if this bit is 1 2 Entry is an Associated file is this bit is 1 3 Information is structured according to the extended attribute record if this bit is 1 4 Owner, group and permissions are specified in the extended attribute record if this bit is 1 5 Reserved (0) 6 Reserved (0) 7 File has more than one directory record if this bit is 1 27 File Unit Size This field is only valid if the file is recorded in interleave mode. Otherwise this field is (00) 28 Interleave Gap Size This field is only valid if the file is recorded in interleave mode. Otherwise this field is (00) 29 to 32 Volume Sequence Number The ordinal number of the volume in the Volume Set on which the file described by the directory record is recorded. 33 Length of File Identifier (LEN_FI) Byte
原来在每个目录或档案前面都有一段说明或记录,第几个 byte 到第几个 byte 是 记录什么都有一定的规定。各位可以在 ISO 档内找到您要的目录(档案)名后,由此 名字往前开始算,第一个 byte 就是上表的第 33 个 byte。同理,倒数第二到第 五个 bytes 就是上表的第 29 到 32 个 bytes 的地方。而所有的数位当然都要用十六进位表 示。
举个例子来说,我有一个 ISO 档,里面有两个目录,一个叫 "BASE",内含一 子目录 CRACK;另一个叫 "PKZ"。现以目录 PKZ 为例,您可以用 Norton Utility 的 Diskedit.exe 去找 ASCII 字串: "PKZ",首先会找到两个像 这样的地方: (但这不是我们要的位置)
01 00 00 00 00 14 00 01 00 00 04 00 00 00 00 15 00 01 42 41 53 45 03 00 00 00 00 65 00 01 50 4B 5A 00 05 00 00 00 00 16 00 02 43 52 41 43 4B 00 . . . . . . . . . . . . . . . . . . BASE . . . . . e . . PK Z . . . . . . . . . CRACK.
再往下找就会再看到一个像这样的地方:
00 01 01 01 26 00 15 00 00 00 00 00 00 15 00 08 00 00 00 00 08 00 60 08 0D 0D 10 20 00 02 00 00 01 00 00 01 04 42 41 53 45 00 24 00 65 00 00 00 00 00 00 65 00 08 00 00 00 00 08 00 60 08 0F 02 2C 0E 00 02 00 00 01 00 00 01 03 50 4B 5A 00 00 . . . . &. . . . . . . . . . . . . . . . . ' . . . . . . . . . . . . . . BASE . $ . e . . . . . . e . . . . . . . . . . . . , . . . . . . . . . . PKZ . .
就是这里!我们来看看从 "PKZ" 开始,回头算起的 33 个 bytes。
(就目录而言其它 ISO 档应该也是差不多要找三次才是要改的位置,不过读完本篇 后您就会判断那个位置才对了。而档案的话仅找一次就可以到达我们要改的地方。)
24 00 65 00 00 00 00 00 00 65 00 08 00 00 00 00 08 00 60 08 0F 02 2C 0E 00 02 00 00 01 00 00 01 03 50 4B 5A
其中最后的 50 4B 5A 就是目录名 "PKZ",倒数第一个 byte 是 03,就是第 33 个 byte "Length of File Identifier",在这里 "PKZ" 一共占了三个Bytes,所以是 03。 再看看倒数第 15 到 21 个 bytes,也就是表一中第 19 到 25 个 bytes 的位置,这里是记录该目录建立 的日期和时间。其中 60 08 0F 换算成十进位就是 96 08 15 也就是日期是 1996 年 8 月 15 日。再看看开头第 3 到第 10 个 bytes 的位置: 65 00 00 00 00 00 00 65 ,其实 就是: 65 00 00 00。也就是此目录在 ISO 档中所占的位置的第一个 sector 的 Logical Block Address 。再看看第 11 到第 18 个 bytes ,"Data Length" ,如果是个 档案 的话,这就是该档案 的大小 (File size)。如果是个 目录 的话,则一律是 00 08 00 00 00 00 08 00 ,即 2048 bytes,也就是一个目录名就要占了一个 sector。
超大档案
我们在制造超大档案时就是改这边(第 11 到第 18 个 bytes,把游标放在档名的 第一个字母下,向上按两次,再向右按 9 次,就是第 11 个 byte 的位置),把它改 成我们要的数位,例如 2 giga bytes,那么在 dir 那片光碟时就会出现一个 2 giga 的档 案。这边您需要一个转换十进位及十六进位的 Shareware: NUMCONV.EXE 。举例来 说,要把档案大小改成 20,000,000 bytes,先转换成 16 进位,得到 : 1312D00 也就是 01 31 2D 00,那么第 11 到第 18 个 bytes就要改成 :
00 2D 31 01 01 31 2D 00
或者只改第 11 到第 14 个 bytes 也可以。如下:
00 2D 31 01
如果该档案是个执行档,或许还可以执行。也可以 copy 到硬碟,因为 20,000,000也 不算太大。好,现在把它改成 2,000,000,000 换算成为 77359400 ,那么就改为:
00 94 35 77 77 35 94 00
或:
00 94 35 77
这次不能执行也无法 copy 了。这就成了一个超大档案,可以用来伪装。
隐藏目录
再看看倒数第 8 个 byte (把游标放在目录名的第一个字母上,向左按 8 次),也就 是第 26 个 byte : "File Flags"。一个 Byte 是八个 bit ,这八个 bit 每一个都是一个旗标, 记录这个目录或档案的内容。从 0 到 7 的排列是这样的:
7 6 5 4 3 2 1 0
目前是 02 ,也就是这样:
0 0 0 0 0 0 1 0 < 0 > < 2 >
即 bit 1 是 1。查表一得知当此 bit 为 1 时是表示这是一个目录。
Bit 0 是 1 时便给了它一个隐藏内容 (H attribute)。所以如果把它改成 03 ,就会 变成隐藏目录,但是可以用工具程式或 dir/a 看到。像这样:
0 0 0 0 0 0 1 1 < 0 > < 3 >
我们要做的是那种用 DIR/A 或工具程式看不到,但是用 "CD 目录名" 却又进得去 的那种隐藏目录。事实上笔者是用 "尝试错误法" (当然没有烧进 CD,而是用 EASY- CD MM/PRO FOR WIN3.1 所附的模拟功能,把 ISO 档模拟成 CD。) 发现从 04 到 07 都可以变成这种隐藏目录。也就是至少 bit 2 必需是 1。像这样:
0 0 0 0 0 1 0 0 < 0 > < 4 >
0 0 0 0 0 1 0 1 < 0 > < 5 >
0 0 0 0 0 1 1 0 < 0 > < 6 >
0 0 0 0 0 1 1 1 < 0 > < 7 >
所以要制作这种隐藏目录就是把这个 byte 改成 04 (or 05~07)。
这里有几个 ISO 档的 范例 (129,415 bytes),您可以抓回去研究看看。 以下是其说明档 :
范例说明
这里有三个 ISO 档 :
1.NORMAL.ISO : 正常的 ISO 档,里面有两个目录 : DIR1 及 DIR2 ,以及一个执 行档 : VTSCAN.EXE 。 2.BIG_FILE.ISO : 内含一个所谓「超大档案」。这里是把 VTSCAN.EXE 的 FILE SIZE 改成 2,000,000,000 bytes,其它正常。 3.HID_DIR.ISO : 把两个目录: DIR1 及 DIR2 改为隐藏目录。用 dir/a 看看,仅看到 一个档案 VTSCAN.EXE。DIR1 是把第 26 个 byte ,或由目录名处倒数第 8 个 byte, 即 " file flags " 的部份由 02 改为 04,DIR2 是把 02 改为 05。结果是一样 的。( 改为 04 到 07 都可以 ) 打 " CD DIR1 " 或 " CD DIR2 " 便可以进去 该目录。
最好是用 diskedit.exe 自行研究看看,您要烧入光碟我也不反对,但是有点浪费。 (一个 session 会花掉 13.5 mb 在 lead in 、lead out 的部份 ) 还有一个办法就是用 Easy-CD Pro for Windows 3.1 的 ISO档模拟成光碟 的功能。需要 easycd.sys,easysim.com 及 loadcd.exe 等三个档案,这三个档案在 Easy-CD Pro for Windows 3 1 才有。
您可以增设一个开机选项,内容像这样:
CONFIG.SYS 部份:
加上这一行: ( 不要用 DEVICEHIGH ) DEVICE=C:\ECDMM\EASYCD.SYS 去掉其他不必要的东西,例如光碟机驱动程式等。
AUTOEXEC.BAT 部份:
加上这两行: ( 不要用 LOADHIGH ) C:\DOS\MSCDEX /D:EASYCD01 C:\ECDMM\EASYSIM.COM 去掉其他不必要的东西。
开机后用 ECDMM 目录下的 LOADCD.EXE 执行:
LOADCD /S:[ ISO 档 ] , 如 LOADCD /S:C:\NORMAL.ISO
Return code 为 0 就是成功。可以到该模拟 CD 的磁碟机代号里去看看。
据笔者经验以及一些朋友的反应,如果使用放在 SCSI 硬碟里的 ISO 档去模拟的 话,好像都无法成功。所以请把 ISO 档存放到 IDE 硬碟再使用以上的模拟功能吧!
超大档案还原法
首先宣告的是,笔者并非想宣扬盗版的非法软体,只是想就理论上来探究超大档 案罢了。
这里所谓的还原,有两种情况,一种是完全还原,一种是近似还原。不过在近 似还原之下也可以执行 (如果是执行档的话。)
要还原超大档案,如果您不是烧录族,那么可以去找一些网友所写的还原程式, 例如 BIG_DBT.ZIP 、 CUT_HUGE.ZIP 等等,用唯读光碟机就可以了,但是并不保 证对于所有情况皆可用。如果您是烧录族,那么就可以用烧录器及烧录软体,把原 来的 CD 先读出来,变成 ISO image 档的状态,再用 Norton Utility 的 Diskedit.exe 去修 改。以 Easy-CD Pro for win95 为例,选 [Disk Info and Tools] -> [Read Track] 便可把 CD 的资料轨读出来,存到硬碟上成为一个 ISO image 档,当然硬碟要有至少 650 MB 的 空间才行。
先用 Diskedit.exe 的 Tools -> Find 的功能,寻找所要的档案的档名。假设档案名是 install.exe 的话,找到之后,再按 TAB 把活动的游标移到右半画面,放在字母 i 的下 面,往上按两次,再往右按一次,就是记录该档案位址的地方。如果是往上按两次, 再往右按九次,则是记录该档案档案大小的地方。
接着再依各种状况说明如下:
1.先找到记录档案大小的地方,这里应该有 8 个 bytes,但是前后 4 个 bytes 正常 状况是一样的,只不过是成映射状排列的,像这样: ( 举例而已,各档案大小 不一定)
00 2E 00 00 00 00 2E 00
不过如果只修改前面 4 个 byte 的话,档案大小则只随前面这 4 个 byte 而变。 像这样:
FF FF FF 10 00 00 2E 00
那么这个档案的大小就变成了 16 进位的 10 FF FF FF (前面 4 个 BYTE 的映射), 也就是十进位的 285,212,671 BYTES 了。如果超大档是这样产生的话,就简单 多了,只要把后 4 个没改过的 BYTE 变成映射填到前 4 个 BYTE 的位置就可以 了。像这样:
00 2E 00 00 00 00 2E 00
然后把所有要改的地方改完后,再把 ISO 档烧成光碟就可以了。或者用前面讲 的 ISO 档模拟功能,模拟成光碟后再 COPY 到硬碟里去。
2.如果这前后 4 个 BYTE 全改了呢?这时候必须先查出该档案的位址,换算成十 进位,然后再乘以一个 SECTOR 的大小,即 2048 BYTES,就可以根据这数位 找到该档案实际在 ISO 档中所在的地方。例如位址是在 00 00 00 16,换算成十 进位就是 22,也就是位在第 22 个 SECTOR。2048 x 22 == 45056,那么就往下 找到 OFFSET 45056 的地方就对了。
然后再往下找 (也可以用 TOOLS -> FIND),找到开始连续都是 00 的地方, 这个地方就是大约档案尾端的地方了,这是因为光碟每一个 SECTOR 是 2048 BYTES,如果没用完的话,剩下的就会全补上 00,到下一个 SECTOR 才会再 接续下一个档案。
不过如果档案本身尾端就有 00 00 ...,那怎么办呢?到那一个 00 才是真正 的档案终点?这问题其实没有答案。不过你可以把假设的档案终点设在这个 SECTOR 的最后一个 BYTE 就可以了,因为比原档案大小稍微大一点还是可 以用的 (不是吗?超大档那么大都可以执行了!),但是只要比原档案大小 少一个 BYTE 就完全不能用的。接着用你所决定的档案终点,减去档案起始 的位址。以刚才的例子而言,如果终点是在 OFFSET 100,000,那么 : 100,000 - 45,056 == 549,44,换算成 16 进位,就是 B3 78 ,那么再回到记录 档案大小的那个位置,填入:
78 B3 00 00 00 00 B3 78
就可以了。不过这并不是精确的原档案大小。
3.如果连档案起始位址都改了呢?那就别管它了,因为这种档案是无法执行的, 应该可以把它叫做垃圾档。
[ 此文章被takihom0812在2005-04-01 07:17重新编辑 ]
|