fas文件格式研究(二)
本帖最后由 baitang36 于 2021-8-9 13:23 编辑整理一下前一阶段的研究,算是做个笔记吧
一个fas文件解码后是这样的;
Offset 0 1 2 3 4 5 6 7 8 9 AB C DE F
00000000 0D 0A 20 46 41 53 34 2D46 49 4C 45 20 3B 20 44 FAS4-FILE ; D
00000010 6F 20 6E 6F 74 20 63 6861 6E 67 65 20 69 74 21 o not change it!
00000020 0D 0A 31 32 31 0D 0A 3134 20 24 14 00 00 00 00 12114 $
00000030 35 00 0D 00 03 06 0C 0009 0B 00 35 01 0A 00 03 5 5
00000040 06 09 00 03 09 00 09 0800 35 02 07 00 03 67 0B 5 g
00000050 00 00 00 09 06 00 06 0500 57 00 00 00 00 09 04 W
00000060 00 51 01 03 00 01 00 0A03 0C 00 51 01 03 00 01 Q Q
00000070 00 0A 09 08 00 51 01 0300 01 00 0A 09 02 00 51 Q Q
00000080 01 03 00 01 00 0A 09 0100 51 01 03 00 01 00 0A Q
00000090 03 09 00 51 01 03 00 0100 0A 09 08 00 51 01 03 Q Q
000000A0 00 01 00 16 24 0D 0A 3235 30 20 35 20 24 14 01 $250 5 $
000000B0 01 01 00 32 00 32 21 2A39 01 00 56 76 6C 2D 41 2 2!*9Vvl-A
000000C0 43 41 44 2D 64 65 66 756E 00 00 5B 43 3A 47 59 CAD-defun[C:GY
000000D0 53 00 00 01 01 43 00 0004 00 0A 32 00 32 79 2A S C 2 2y*
000000E0 39 01 00 55 02 00 01 0063 01 00 70 56 61 64 73 9U cpVads
000000F0 2D 63 6D 64 00 00 55 0100 06 00 63 68 61 6E 67 -cmdU chang
00000100 65 5B 54 53 54 59 4C 4500 00 55 01 00 01 00 57 e[TSTYLEU W
00000110 5B 3D 00 00 55 01 00 0000 5B 54 43 4F 4C 00 47 [=U [TCOL G
00000120 45 54 53 54 52 49 4E 4700 00 55 01 00 2F 00 0A ETSTRINGU/
00000130 CA E4 C8 EB D0 C2 D1 D5C9 AB 28 BB D8 B3 B5 CE 输入新颜色(回车?
00000140 AA B0 D7 C9 AB 2C D2 B2BF C9 D2 D4 B8 C4 CE AA 咨?也可以改为
00000150 C6 E4 CB FB D1 D5 C9 AB29 3A 3C 57 3E 20 5B 53 其他颜色):<W> [S
00000160 53 00 53 53 47 45 54 0000 5C 00 00 43 00 00 0E S SSGET\C
00000170 00 0A 5C 00 00 32 00 5B43 3A 47 59 53 00 00 3A \2 [C:GYS:
00000180 01 43 04 00 01 00 1C 1401 00 00 00 09 03 00 0A C
00000190 57 00 00 00 00 09 04 0006 02 00 09 02 00 35 01 W 5
000001A0 01 00 01 0A 09 02 00 1618 C3 E5 06 22 D2 CC 28 缅 "姨(
000001B0 CC 40 0A 3B 66 61 73 3420 63 72 75 6E 63 68 0A 藹 ;fas4 crunch
000001C0 3B 24 3B 41 39 2F 33 2F31 38 ;$;A9/3/18
开始的32个字节是文件头,是合法fas文件的标志
00000000 0D 0A 20 46 41 53 34 2D46 49 4C 45 20 3B 20 44 FAS4-FILE ; D
00000010 6F 20 6E 6F 74 20 63 6861 6E 67 65 20 69 74 21
下面是第一部分的描述,绿色的数字是自定义函数的长度,这里是121个字节
如果没有自定义函数,这里是1。后面的14是自定义函数中所用符号总个数加1,没有自定义函数时,这里是1。
00000020 0D 0A 31 32 31 0D 0A 3134 20 24 12114 $
下面是自定义函数的内容:
14 00 00 00 00
00000030 35 00 0D 00 03 06 0C 0009 0B 00 35 01 0A 00 03 5 5
00000040 06 09 00 03 09 00 09 0800 35 02 07 00 03 67 0B 5 g
00000050 00 00 00 09 06 00 06 0500 57 00 00 00 00 09 04 W
00000060 00 51 01 03 00 01 00 0A03 0C 00 51 01 03 00 01 Q Q
00000070 00 0A 09 08 00 51 01 0300 01 00 0A 09 02 00 51 Q Q
00000080 01 03 00 01 00 0A 09 0100 51 01 03 00 01 00 0A Q
00000090 03 09 00 51 01 03 00 0100 0A 09 08 00 51 01 03 Q Q
000000A0 00 01 00 16
长度共有121个字节。
000000A0 0D 0A 3235 30 20 35 20 24 14 01 $250 5 $
这里是第二部分的描述,表示长度是250个字节。后面的5,是自定义函数最大编号加1,本例中自定义函数的编号为4,此处为4+1=5。
000000B0 32 00 32 21 2A39 01 00 56 76 6C 2D 41
这里的32 00 32 21 2A 是加载时执行部分的开始地址和结束地址
32 00表示开始是0
32 21表示结束地址是21h
2A表示是一个表项
这段地址指向的内容是1401 00 00 00 09 03 00 0A
57 00 00 00 00 09 04 0006 02 00 09 02 00 35 01
01 00 01 0A 09 02 00 16
长度共21h字节
这里的 09 04 0006 02 00 09 02 00 表示定义一个函数,函数的编号是04,函数名是02号字符串,也就是C:GYS。编号不是从1开始的。加载时立即执行的部分,被编号为03号函数。1号和2号是字符串的编号,也就是CAD-defunC:GYS。函数的编号和字符串的编号是一起编的。
000000D0 32 00 32 79 2A
这里是自定义函数的地址表,表示函数的开始地址和结束地址,用2A表示一个表项的结束。如果有n个自定义函数这里会有n项,按内容在文件中的顺序排列。
蓝色部分是字符串资源表,有两张表,第一张表用于程序加载时,也就是立即执行部分。第二张表用于自定义函数内部。
00000170 5C 00 00 32 00 5B43 3A 47 59 53 00 00 3A \2 [C:GYS:
这里是函数声明表,以5C 00 00 开始32 00 表示函数开始地址 5B后面是函数名C:GYS,3A是结束标志。如果在立即执行部分有n个自定义函数这里也会有n项。
000001A0 18 C3 E5 06 22 D2 CC 28 缅 "姨(
000001B0 CC 40 0A 3B 66 61 73 3420 63 72 75 6E 63 68 0A 藹 ;fas4 crunch
000001C0 3B
这里的18h是密码的长度,后面是密码的内容。密码的第一个字节如果为0,说明程序是经过解码的,autocad会直接加载运行,如果不是0,表示是加密的,需要解码后运行。
程序的最后是日期年月日;A9/3/18
前排学习,持续关注,加油 期待楼主研究透彻,加油。 期待楼主研究透彻,加油。 水吉空 发表于 2018-10-29 10:07
期待楼主研究透彻,加油。
谢谢鼓励,谢谢 加油,加油,加油
页:
[1]