明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1875|回复: 6

[经验] fas文件格式研究(二)

[复制链接]
发表于 2018-10-25 10:01 | 显示全部楼层 |阅读模式
本帖最后由 baitang36 于 2021-8-9 13:23 编辑

整理一下前一阶段的研究,算是做个笔记吧
一个fas文件解码后是这样的;
Offset         0   1   2   3   4   5   6   7   8   9   A  B   C   D  E   F
00000000   0D 0A 20 46 41 53 34 2D  46 49 4C 45 20 3B 20 44      FAS4-FILE ; D
00000010   6F 20 6E 6F 74 20 63 68  61 6E 67 65 20 69 74 21   o not change it!
00000020   0D 0A 31 32 31 0D 0A 31  34 20 24 14 00 00 00 00     121  14 $     
00000030   35 00 0D 00 03 06 0C 00  09 0B 00 35 01 0A 00 03   5          5   
00000040   06 09 00 03 09 00 09 08  00 35 02 07 00 03 67 0B            5    g
00000050   00 00 00 09 06 00 06 05  00 57 00 00 00 00 09 04            W      
00000060   00 51 01 03 00 01 00 0A  03 0C 00 51 01 03 00 01    Q         Q   
00000070   00 0A 09 08 00 51 01 03  00 01 00 0A 09 02 00 51        Q         Q
00000080   01 03 00 01 00 0A 09 01  00 51 01 03 00 01 00 0A            Q      
00000090   03 09 00 51 01 03 00 01  00 0A 09 08 00 51 01 03      Q         Q  
000000A0   00 01 00 16 24 0D 0A 32  35 30 20 35 20 24 14 01       $  250 5 $  
000000B0   01 01 00 32 00 32 21 2A  39 01 00 56 76 6C 2D 41      2 2!*9  Vvl-A
000000C0   43 41 44 2D 64 65 66 75  6E 00 00 5B 43 3A 47 59    CAD-defun  [C:GY
000000D0   53 00 00 01 01 43 00 00  04 00 0A 32 00 32 79 2A    S    C     2 2y*
000000E0   39 01 00 55 02 00 01 00  63 01 00 70 56 61 64 73    9  U    c  pVads
000000F0   2D 63 6D 64 00 00 55 01  00 06 00 63 68 61 6E 67    -cmd  U    chang
00000100   65 5B 54 53 54 59 4C 45  00 00 55 01 00 01 00 57    e[TSTYLE  U    W
00000110   5B 3D 00 00 55 01 00 00  00 5B 54 43 4F 4C 00 47     [=  U    [TCOL G
00000120   45 54 53 54 52 49 4E 47  00 00 55 01 00 2F 00 0A     ETSTRING  U  /  
00000130   CA E4 C8 EB D0 C2 D1 D5  C9 AB 28 BB D8 B3 B5 CE    输入新颜色(回车?
00000140   AA B0 D7 C9 AB 2C D2 B2  BF C9 D2 D4 B8 C4 CE AA   咨?也可以改为
00000150   C6 E4 CB FB D1 D5 C9 AB  29 3A 3C 57 3E 20 5B 53    其他颜色):<W> [S
00000160   53 00 53 53 47 45 54
00  00 5C 00 00 43 00 00 0E      S SSGET  \  C   
00000170   00 0A 5C 00 00 32 00 5B  43 3A 47 59 53 00 00 3A     \  2 [C:GYS  :
00000180   01 43 04 00 01 00 1C 14  01 00 00 00 09 03 00 0A     C              
00000190   57 00 00 00 00 09 04 00  06 02 00 09 02 00 35 01     W             5
000001A0   01 00 01 0A 09 02 00 16
  18 C3 E5 06 22 D2 CC 28            缅 "姨(
000001B0   CC 40 0A 3B 66 61 73 34  20 63 72 75 6E 63 68 0A    藹 ;fas4 crunch
000001C0   3B
24 3B 41 39 2F 33 2F  31 38                                ;$;A9/3/18

开始的32个字节是文件头,是合法fas文件的标志
00000000   0D 0A 20 46 41 53 34 2D  46 49 4C 45 20 3B 20 44      FAS4-FILE ; D
00000010   6F 20 6E 6F 74 20 63 68  61 6E 67 65 20 69 74 21


下面是第一部分的描述,绿色的数字是自定义函数的长度,这里是121个字节
如果没有自定义函数,这里是1。后面的14是自定义函数中所用符号总个数加1,没有自定义函数时,这里是1。
00000020   0D 0A 31 32 31 0D 0A 31  34 20 24                        121  14 $   
下面是自定义函数的内容:
                                                                    14 00 00 00 00      
00000030   35 00 0D 00 03 06 0C 00  09 0B 00 35 01 0A 00 03   5          5   
00000040   06 09 00 03 09 00 09 08  00 35 02 07 00 03 67 0B            5    g
00000050   00 00 00 09 06 00 06 05  00 57 00 00 00 00 09 04            W      
00000060   00 51 01 03 00 01 00 0A  03 0C 00 51 01 03 00 01    Q         Q   
00000070   00 0A 09 08 00 51 01 03  00 01 00 0A 09 02 00 51        Q         Q
00000080   01 03 00 01 00 0A 09 01  00 51 01 03 00 01 00 0A            Q      
00000090   03 09 00 51 01 03 00 01  00 0A 09 08 00 51 01 03      Q         Q  
000000A0   00 01 00 16
长度共有121个字节。
000000A0                         0D 0A 32  35 30 20 35 20 24 14 01       $  250 5 $  
这里是第二部分的描述,表示长度是250个字节。后面的5,是自定义函数最大编号加1,本例中自定义函数的编号为4,此处为4+1=5。
000000B0                32 00 32 21 2A  39 01 00 56 76 6C 2D 41  
这里的32 00 32 21 2A 是加载时执行部分的开始地址和结束地址   
32 00表示开始是0
32 21表示结束地址是21h
2A表示是一个表项
这段地址指向的内容是14  01 00 00 00 09 03 00 0A               
57 00 00 00 00 09 04 00  06 02 00 09 02 00 35 01     
01 00 01 0A 09 02 00 16
长度共21h字节
这里的 09 04 00  06 02 00 09 02 00 表示定义一个函数,函数的编号是04,函数名是02号字符串,也就是C:GYS  。编号不是从1开始的。加载时立即执行的部分,被编号为03号函数。1号和2号是字符串的编号,也就是CAD-defun  C:GYS。函数的编号和字符串的编号是一起编的。
000000D0                                     32 00 32 79 2A   
这里是自定义函数的地址表,表示函数的开始地址和结束地址,用2A表示一个表项的结束。如果有n个自定义函数这里会有n项,按内容在文件中的顺序排列。
蓝色部分是字符串资源表,有两张表,第一张表用于程序加载时,也就是立即执行部分。第二张表用于自定义函数内部。
00000170      5C 00 00 32 00 5B  43 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 34  20 63 72 75 6E 63 68 0A    藹 ;fas4 crunch
000001C0   3B

这里的18h是密码的长度,后面是密码的内容。密码的第一个字节如果为0,说明程序是经过解码的,AutoCAD会直接加载运行,如果不是0,表示是加密的,需要解码后运行。
程序的最后是日期年月日;A9/3/18










































评分

参与人数 1金钱 +50 收起 理由
LPACMQ + 50 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2018-10-25 10:43 | 显示全部楼层
前排学习,持续关注,加油
发表于 2018-10-26 06:16 | 显示全部楼层
期待楼主研究透彻,加油。
发表于 2018-10-29 10:07 | 显示全部楼层
期待楼主研究透彻,加油。
 楼主| 发表于 2018-11-2 08:51 | 显示全部楼层
水吉空 发表于 2018-10-29 10:07
期待楼主研究透彻,加油。

谢谢鼓励,谢谢
发表于 2019-1-11 12:24 | 显示全部楼层
加油,加油,加油
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-24 19:25 , Processed in 0.268264 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表