fas怎么翻译成lisp_fas文件格式研究之(一)(二)(三)(原来写的,转到这里来)…

今天继续写一点,接着上一篇fas的研究

3、关于vlx

vlx相当于lsp、fas等资源文件的打包文件,在打包的时候先判断是否有lsp文件,如果有的话,先编译成fas文件,然后把fas文件和其他资源一起打入包内,vlx也是经过仔细设计出来的文件,里面包含了很多校验,但是比起fas文件,vlx要容易的多,还想提一点就是vlx的限制:首先就是各个文件的文件名:当然是字符串了,字符串长度不能大于23个,包含24,中文减半,否则编译的时候会提示你,vlx把资源打入包内省去了路径的设置,方便管理,可以说是大家的好帮手。如果要研究包内的fas文件,首先是要把包内的fas解包出来,当然这一步不是很难,到时候会仔细介绍这一步。

我想下面要好好准备一下写fas文件格式了,这对我来说很难,因为很多地方我也是一知半解,但希望能开阔大家的思路,fas文件应该是采用了某种文件格式,但是对文件格式我研究不多,里面的大部分指令都是为了加快cad执行速度的,几乎所有的数据都采用十六进制,当然也有少部分是10进制,所以先给大家介绍一下这些工具,大家先学一下,熟悉一下工具的使用,到时候大家不要问工具使用方面的问题,大家先看一下这些工具:

1、OllyDbg:一款动态调试软件

2、winhex:一款强大的支持内存编辑的十六进制软件,必须熟悉这个工具,数据的复制,选择等

先写到这里,办公室好冷啊,受不了.

fas文件格式研究(三)

今天讲fas文件格式:

首先还是熟悉一些基本常识:

1、进制

十进制:123456

十六进制:0x123456

二进制:对于fas我们用不上,不介绍了

通常fas文件里面用到了这两种进制的表示方法,fas文件大部分都是用十六进制表示,是因为十六进制是一种比较高效的表示,一位能存放的最大数是f,相对于十进制的16,(cpu只能识别二进制编码)

2、数据存储

如果熟悉这方面的朋友可以略过,比如一个大小为三字节的数据:0x01E240,整数为123456,在fas文件内的存放顺序是这样的:0x40 0xE2 0x01 正好相反了,也就是说高位放在后面,低位放到前面

3、基本数据类型

字节(Byte)为一个字节,占用两位、字(Word,占两个字节,占4位)和双字(Dword,四个字节,占8位),Word和Dword相当于无符号的整型和无符号长整型。

4、下面介绍fas 文件结构

首先我们在vlide中敲入如下代码:

(alert “hello world”)

然后保存为first,编译,然后用winhex打开这个文件,得到如下:首先把winhex设置为10进制表示偏移显示:

Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15

00000000   0D 0A 20 46 41 53 34 2D  46 49 4C 45 20 3B 20 44   .. FAS4-FILE ; D

00000016   6F 20 6E 6F 74 20 63 68  61 6E 67 65 20 69 74 21   o not change it!

00000032   0D 0A 31 0D 0A 31 20 24  20 24 0D 0A 38 32 20 34   ..1..1 $ $..82 4

00000048   20 24 13 FF 73 54 E7 4B  31 6F 15 38 7E 15 43 4A    $.T鏚1o.8~.CJ

00000064   4B 52 49 4E 28 64 3F 58  CF 43 55 E7 2C 30 5D 0F   KRIN(d螩U].

00000080   12 26 67 27 77 66 68 69  6D 63 30 32 07 FE 76 55   .&g’wfhimc02.U

00000096   ED 78 6D 5D 07 51 47 14  42 11 0D 1A 4E 0F 62 31   韝m].QG.B…N.b1

00000112   71 1B EA 73 55 E7 79 38  5E 07 18 4E 16 43 24 06   q.阺U鐈8^..N.C$.

00000128   1A 0D 08 74 15 4A 4D B3  C1 94 73 0A 3B 66 61 73   …t.JM沉攕.;fas

00000144   34 20 63 72 75 6E 63 68  0A 3B 24 3B 41 31 2F 34   4 crunch.;$;A1/4

00000160   2F 30 37                                           /07

首先文件头是一个标志:FAS4-FILE,确保是fas文件,Do not change it!提示不要修改他,前两行解决了

下面看第三行:

..1..1 $ $..82 4

第一个1是用户自定义函数代码的长度,第二个是字符串个数,如果都是1的话代表没有定义函数,由于刚才我们只写了一句代码,所以没有自定义函数,如果有defun语句的出现,这里就不是1了。

82:代表包括字符串在内的所有初始化代码的长度,包括这一句(alert “hello world”),注意这里是十进制表示

4:代表字符串的个数,很奇怪,我只有三个字符串,而他确显示4个,如果有研究过的能否指出是否正确,注意这里是十进制表示

下面解读第四行:

00000048   20 24 13 FF 73 54 E7 4B  31 6F 15 38 7E 15 43 4A    $.T鏚1o.8~.CJ

第一个字节是20,表示流的开始(流的概念我也说的不是很清楚,感觉这样表述比较贴切,也就是说一段代码的开始),后面是我们需要的代码,而现在看起来什么都看不出来,不急,我们待会再来讲怎么解码的。那么这段代码有多长呢才在第三行我们看到了:82是代码的长度,所以这段代码的长度是82个字节,我们从00000050开始选择82个字节长度的区域,复制下来得到如下:

Offset      0  1  2  3  4  5  6  7   8  9 10 11 12 13 14 15

00000048         13 FF 73 54 E7 4B  31 6F 15 38 7E 15 43 4A     .T鏚1o.8~.CJ

00000064   4B 52 49 4E 28 64 3F 58  CF 43 55 E7 2C 30 5D 0F   KRIN(d螩U].

00000080   12 26 67 27 77 66 68 69  6D 63 30 32 07 FE 76 55   .&g’wfhimc02.U

00000096   ED 78 6D 5D 07 51 47 14  42 11 0D 1A 4E 0F 62 31   韝m].QG.B…N.b1

00000112   71 1B EA 73 55 E7 79 38  5E 07 18 4E 16 43 24 06   q.阺U鐈8^..N.C$.

00000128   1A 0D 08 74                                        …t

最后一个字节是74,看一下后面跟的是:字节15 ,注意这里是16进制表示,0x15=21(整数),这个表示解码密码的长度,也就是说后面长度0x15的流是密码,得到如下(用来解码刚才那82个字节长度的流):

4A4DB3C194730A3B66617334206372756E63680A3B

后面$是一个结束标志,十六进制为24,然后跟的是fas文件编译的年月日

有一点要说明一下:这个密码是随机的,大家编译得到的和我的略有不同,所以被加密后的代码上可能和我的不同,这不妨碍我们研究,

今天先写到这里,大家慢慢看,收工下班^_^

未经允许不得刊载

相关资源:win10,win11可用,智尊宝纺服装CAD制版软件,win7可用最新版9.74…

来源:weixin_39969340

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年11月18日
下一篇 2020年11月18日

相关推荐