baitang36 发表于 2018-10-25 10:01:27

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-25 10:43:02

前排学习,持续关注,加油

lxdz443 发表于 2018-10-26 06:16:40

期待楼主研究透彻,加油。

水吉空 发表于 2018-10-29 10:07:29

期待楼主研究透彻,加油。

baitang36 发表于 2018-11-2 08:51:47

水吉空 发表于 2018-10-29 10:07
期待楼主研究透彻,加油。

谢谢鼓励,谢谢

再见熊猫衣服 发表于 2018-11-2 11:54:11

kic 发表于 2019-1-11 12:24:16

加油,加油,加油
页: [1]
查看完整版本: fas文件格式研究(二)