系统安全文件格式

2024-06-29

系统安全文件格式(精选五篇)

系统安全文件格式 篇1

1 NTFS文件系统分析

1.1 DBR

DBR (DOS BOOT RECORD, DOS引导记录) , 位于柱面0, 磁头1, 扇区1, 即逻辑扇区0。DBR分为两部分:DOS引导程序和BPB (BIOS参数块) 。其中DOS引导程序完成DOS系统文件 (IO.SYS, MSDOS.SYS) 的定位与装载, 占用固定的446字节, 而BPB用来描述本分区的磁盘信息, 位于DBR偏移0BH处。

1.2 MFT

主文件表 (MFT) 是分区卷上每一个文件的索引。MFT为每一个文件保存着一组称为“属性”的记录, 每个属性存储了不同类型的信息, 为主文件表 (MFT) 保留适当的空间。

2 文件的删除

删除文件“子目录1file.txt”的过程如下:

步骤1:读取文件系统第一个扇区的一道扇区, 获取簇大小、MFT起始位置以及每个MFT项的大小。

步骤2:读取$MFT文件的第一项, 通过它的$DATA属性获取其他的MFT位置。

步骤3:访问5号MFT项, 即根目录, 通过索引根属性 (S—IN-DEX_ROOT) 和索引分配属性 (S—INDEX_ALLOCATION) 找到“子目录1”项, 它的MFT项为200号, 跟新目录的最后访问时间。

步骤4:访问200号MFT项的索引根属性 (S—INDEX_ROOT) 并寻找file.txt的条目, 找到它的MFT项为400号。

步骤5:从索引中移除文件的项, 移动节点中的项覆盖了原来的项, 跟新目录的最后写入时间, 最后修改时间和最后访问时间。

步骤6:通过清除使用中标志取消400号MFT项的分配。访问—SBitmap文件的SDATA属性, 并将项的相应位置设置为0。

步骤7:访问400号MFT项的非常驻属性, 从S—DATA属性中得到数据内容所在的簇号, 将S—Bitmap文件中相应簇的bit设置为0, 即取消了722, 723号簇的分配。

步骤8:前面的每一步, 都将在文件系统日志—SLog File中产生项并将改变计入S—ExtendS—Usr Jrnl。如果设置了磁盘配额管理, 将在S—ExtendS—Quota中, 把回收的容量从用户已使用的磁盘空间量中减去。

3 软件技术特点

3.1 修正MFT偏移

MFT主文件表偏移指的是, 在BPB中指定的MFT的位置与其实际存在的偏移地址不相符, 经我们实验检测, MFT起始地址偏移基本不会超过前后一个扇区, 而每一个MFT占用的大小为2个扇区。在NTFS结构下, 每一个MFT的前4个字节都是固定的为:46 49 4C 45, 代表的意思是FILE, 是NTFS存储格式特有的标志, 不会变化。该修正算法就是通过扫描获取到的MFT起始地址的前后两个扇区, 找到包含这4个字节的数据区, 46的偏移就是我们要找的MFT的真正偏移地址, 再通过与之前获取的MFT起始地址进行比较判断MFT不规则偏移量的大小, 利用CopyFile () 函数复制实际MFT起始地址开始的后面2个扇区的内容, 粘贴到MFT实际所在位置, 就成功解决了MFT文件偏移的问题。

3.2 软件流程

软件实现具体流程如图1所示。

结束语

根据NTFS文件系统的特征分析结果, 设计了一种改进的NTFS文件系统数据恢复方案, 用以解决现有NTFS数据恢复技术中存在的MFT偏移修正难题。通过大量的实验研究、验证, 解决了MFT偏移修正难题, 并找出了最佳修正参数。同时, 系统中采用了优化的文件搜索算法, 大大提高了数据恢复的处理速度, 并提高了文件恢复成功率。

随着信息技术的日益普及, 信息安全问题得到了越来越多的重视, 数据恢复技术作为最后一道安全屏障, 其地位日益突出。而现有的数据恢复技术尚不尽人意, 存在很多亟待解决的难题, 如恢复成功率低, 无法处理物理损伤等等。

本系统采用的恢复技术是基于MFT表, 应用有很大的局限性, 无法处理MFT被彻底破坏或被覆盖等问题, 这一问题只能使用更有效的磁盘文件搜索算法来解决, 我们这一研究设想已获得我校科技部门的大力支持, 相关的研究也正在进行中, 我们有信心会继续这一研究, 继续完善这一安全工具。

参考文献

[1]刘伟.数据恢复深度揭秘[M].北京:电子工业出版社, 2010

[2]戴士剑, 涂彦晖.数据恢复技术[M].2版.北京:电子工业出版社, 2005.

[3]Mark Russinovich, David A Solomon.InsideMicrosoftWindows2000[M].US:Microsoft Press, 2004.

elf文件格式 2Unix系统 篇2

elf文件格式-- 2

=================== String Table 字符串表=========================

String table sections 保存着以NULL终止的一系列字符,一般我们称为字

符串。object文件使用这些字符串来描绘符号和section名。一个字符串的

参考是一个string table section的索引。第一个字节,即索引0,被定义保

存着一个NULL字符。同样的,一个string table的最后一个字节保存着一个

NULL字符,所有的字符串都是以NULL终止。索引0的字符串是没有名字或者说

是NULL,它的解释依靠上下文。一个空的string table section是允许的;

它的section header的成员sh_size将为0。对空的string table来说,非0的

索引是没有用的。

一个 settion 头的 sh_name 成员保存了一个对应于该 setion 头字符表部分

的索引(就象ELF头的 e_shstrndx 成员所特指的那样。下表列出了一个有 25 字节

的字符串表(这些字符串和不同的索引相关联):

Index +0 +1 +2 +3 +4 +5 +6 +7 +8 +9

===== == == == == == == == == == ==

0 n a m e . V a r

10 i a b l e a b l e

20 x x

+ Figure 1-15: String Table Indexes

Index String

===== ======

0 none

1 “name.”

7 “Variable”

11 “able”

16 “able”

24 null string

如上所示,一个字符串表可能涉及该 section 中的任意字节。一个字符串可能

引用不止一次;引用子串的情况是可能存在的;一个字符串也可能被引用若干次;而

不被引用的字符串也是允许存在的。

==================== Symbol Table 符号表=========================

一个object文件的符号表保存了一个程序在定位和重定位时需要的定义和引用的信息。

一个符号表索引是相应的下标。0表项特指了该表的第一个入口,就象未定义的符号

索引一样。初始入口的内容在该 section 的后续部分被指定。

Name Value

==== =====

STN_UNDEF0

一个符号表入口有如下的格式:

+ Figure 1-16: Symbol Table Entry

typedef struct {

Elf32_Word st_name;

Elf32_Addr st_value;

Elf32_Word st_size;

unsigned char st_info;

unsigned char st_other;

Elf32_Half st_shndx;

} Elf32_Sym;

* st_name

该成员保存了进入该object文件的符号字符串表入口的索引(保留了符号名的表达字符)。

如果该值不为 0 ,则它代表了给出符号名的字符串表索引。否则,该符号无名。

注意:External C 符号和object文件的符号表有相同的名称。

* st_value

该成员给出了相应的符号值。它可能是绝对值或地址等等(依赖于上下文);

细节如下所述。

* st_size

许多符号和大小相关。比如,一个数据对象的大小是该对象所包含的字节数目。

如果该符号的大小未知或没有大小则这个成员为 0 。

* st_info

成员指出了符号的类型和相应的属性。相应的列表如下所示。下面的代码说明了

如何操作该值。

#define ELF32_ST_BIND(i) ((i)>>4)

#define ELF32_ST_TYPE(i) ((i)&0xf)

#define ELF32_ST_INFO(b, t) (((b)<<4)+((t)&0xf))

* st_other

该成员目前为 0 ,没有含义。

* st_shndx

每一个符号表的入口都定义为和某些 section 相关;该成员保存了相关的 section

头索引。就象 Figure 1-8 和相关的文字所描述的那样,某些 section 索引

指出了特殊的含义。

一个符号的属性决定了可链接性能和行为。

+ Figure 1-17: Symbol Binding, ELF32_ST_BIND

Name Value

==== =====

STB_LOCAL 0

STB_GLOBAL1

STB_WEAK 2

STB_LOPROC 13

STB_HIPROC 15

* STB_LOCAL

在包含了其定义的object文件之外的局部符号是不可见的。不同文件中的具有相同

名称的局部符号并不相互妨碍。

* STB_GLOBAL

全局符号是对所有的object目标文件可见的。一个文件中的全局符号的定义可以

满足另一个文件中对(该文件中)未定义的全局符号的引用。

* STB_WEAK

弱符号相似于全局符号,但是他们定义的优先级比较低一些。

* STB_LOPROC through STB_HIPROC

其所包含范围中的值由相应的处理器语义所保留。

全局符号和弱符号的区别主要在两个方面。

* 当链接器链接几个可重定位的目标文件时,它不允许 STB_GLOBAL 符号的同名

多重定义。另一方面,如果一个全局符号的定义存在则具有相同名称的弱符号名不会

引起错误。链接器将认可全局符号的定义而忽略弱符号的定义。与此相似,如果有一个

普通符号(比如,一个符号的 st_shndx 域包含 SHN_COMMON),则一个同名的弱符号

不会引起错误。链接器同样认可普通符号的定义而忽略弱符号。

* 当链接器搜索档案库的时候,它选出包含了未定义的全局符号的存档成员。该成员

的定义或者是全局的或者是一个弱符号。链接器不会为了解决一个未定义的弱符号

选出存档成员。未定义的弱符号具有 0 值。

在每一个符号表中,所有具有 STB_LOCAL 约束的符号优先于弱符号和全局符号。

就象上面 “sections” 中描述的那样,一个符号表部分的 sh_info 头中的成员

保留了第一个非局部符号的符号表索引。

符号的类型提供了一个为相关入口的普遍分类。

+ Figure 1-18: Symbol Types, ELF32_ST_TYPE

Name Value

==== =====

STT_NOTYPE 0

STT_OBJECT 1

STT_FUNC 2

STT_SECTION3

STT_FILE 4

STT_LOPROC13

STT_HIPROC15

* STT_NOTYPE

该符号的类型没有指定。

* STT_OBJECT

该符号和一个数据对象相关,比如一个变量、一个数组等。

* STT_FUNC

该符号和一个函数或其他可执行代码相关。

* STT_SECTION

该符号和一个 section 相关。这种类型的符号表入口主要是为了重定位,一般的

具有 STB_LOCAL 约束。

* STT_FILE

按惯例而言,该符号给出了和目标文件相关的源文件名称。一个具有 STB_LOCAL

约束的文件符号,其 section 索引为 SHN_ABS ,并且它优先于当前对应该文件的

其他 STB_LOCAL 符号。

* STT_LOPROC through STT_HIPROC

该范围中的值是为处理器语义保留的。

共享文件中的函数符号(具有 STT_FUNC 类型)有特殊的意义。当其他的目标文件

从一个共享文件中引用一个函数时,链接器自动的为引用符号创建一个链接表。除了

STT_FUNC 之外,共享的目标符号将不会自动的通过链接表引用。

如果一个符号涉及到一个 section 的特定定位,则其 section 索引成员 st_shndx

将保留一个到该 section 头的索引。当该 section 在重定位过程中不断

移动一样,符号的值也相应变化,而该符号的引用在程序中指向同样的定位。某些

特殊的 section 索引有其他的语义。

* SHN_ABS

该符号有一个不会随重定位变化的绝对值。

* SHN_COMMON

该符号标识了一个没有被分配的普通块。该符号的值给出了相应的系统参数,就象

一个 section 的 sh_addralign 成员。也就是说,链接器将分配一个地址给

该符号,地址的值是 st_value 的倍数。该符号的大小指出了需要的字节数。

* SHN_UNDEF

该 section 表索引表明该符号是未定义的。当链接器将该目标文件和另一个定义

该符号的文件相装配的时候,该文件内对该符号的引用将链接到当前实际的定义。

如上所述,符号表的 0 索引(STN_UNDEF)是保留的,它包含了如下内容:

+ Figure 1-19: Symbol Table Entry: Index 0

Name Value Note

==== ===== ====

st_name 0No name

st_value0Zero value

st_size 0No size

st_info 0No type, local binding

st_other0

st_shndx SHN_UNDEF No section

Symbol Values(符号值)

符号表入口对于不同的目标文件而言对 st_value 成员有一些不同的解释。

* 在可重定位文件中, st_value 保存了 section 索引为 SHN_COMMON 符号

的强制对齐值。

* 在可重定位文件中, st_value 保存了一个符号的 section 偏移。也就是说,

st_value 是从 st_shndx 定义的 section 开头的偏移量。

* 在可执行的和可共享的目标文件中, st_value 保存了一个虚拟地址。为了使

这些文件符号对于动态链接器更为有效,文件层面上的 section 偏移让位于内存

层面上的虚拟地址( section 编号无关的)。

尽管符号表值对于不同的目标文件有相似的含义,相应的程序还是可以有效地访问数据。

====================== Relocation (重定位)==========================

重定位是连接符号引用和符号定义的过程。比如,当一个程序调用一个函数的时候,

相关的调用必须在执行时把控制传送到正确的目标地址。换句话说,重定位文件应当

包含有如何修改他们的 section 内容的信息,从而允许可执行文件或共享目标文件

为一个进程的程序映像保存正确的信息。重定位入口就是这样的数据。

+ Figure 1-20: Relocation Entries

typedef struct {

Elf32_Addr r_offset;

Elf32_Word r_info;

} Elf32_Rel;

typedef struct {

Elf32_Addr r_offset;

Elf32_Word r_info;

Elf32_Sword r_addend;

} Elf32_Rela;

* r_offset

该成员给出了应用重定位行为的地址。对于一个重定位文件而言,该值是从该

section 开始处到受到重定位影响的存储单位的字节偏移量。对一个可执行文件

或一个共享目标而言,该值是受到重定位影响的存储单位的虚拟地址。

* r_info

该成员给出了具有受重定位影响因素的符号表索引和重定位应用的类型。比如,

一个调用指令的重定位入口应当包含被调用函数的符号索引。如果该索引是

STN_UNDEF (未定义的符号索引),重定位将使用 0 作为该符号的值。重定位

类型是和处理器相关的。当正文(text)引用到一个重定位入口的重定位类型或符

号表索引,它表明相应的应用 ELF32_R_TYPE或 ELF32_R_SYM 于入口的 r_info

成员。

#define ELF32_R_SYM(i) ((i)>>8)

#define ELF32_R_TYPE(i) ((unsigned char)(i))

#define ELF32_R_INFO(s, t) ((s)<<8+(unsigned char)(t))

* r_addend

该成员指定一个常量加数(用于计算将要存储于重定位域中的值)。

如上所述,只有 Elf32_Rela 入口包含一个明确的加数。Elf32_Rel 类型

的入口在可以修改的地址中存储一个隐含的加数。依赖于处理器结构,一种形式

或其他形式也许是必须的或更为方便的。因此,特定机器的应用应当使用一种排他

性的形式或依赖于上下文的另一种形式。

一个重定位 section 关联了两个其他的 section :一个符号表和一个可修改

的 section 。该 section 头的成员 sh_info 和 sh_link (在上文中的

“ section ”部分中有描述)指示了这种关系。重定位入口中的成员 r_offset

对于不同的目标文件有少许差异。

* 在可重定位文件中,r_offset 表示了一个 section 偏移。也就是说,重定位

section自己描述了如何修改其他在文件中的其他section; 重定位偏移量指

明了一个在第二个section中的存储器单元。

* 在可执行和共享的目标文件中,r_offset 表示一个虚拟地址。为了使得这些

文件的重定位入口更为有用(对于动态链接器而言),该 section 偏移(文件

中)应当让位于一个虚拟地址(内存中的)。

尽管为了允许相关的程序更为有效的访问而让 r_offset 的解释对于不同的目标

文件有所不同,重定位类型的含义是相同的。

Relocation Types(重定位类型)

重定位入口描述了怎样变更下面的指令和数据域(位数在表的两边角下)。

+ Figure 1-21: Relocatable Fields

+---------------------------+

| word32 |

31---------------------------0

* word32

指定一个以任意字节对齐方式占用 4 字节的 32 位域。这些值使用与 32 位 Intel

体系相同的字节顺序。

3------2------1------0------+

0x01020304 | 01 | 02 | 03 | 04 |

31------+------+------+------0

下面的计算假设正在将一个可重定位文件转换为一个可执行或共享的目标文件。

从概念上来说,链接器合并一个或多个可重定位文件来组成输出。它首先决定

怎样合并、定位输入文件,然后更新符号值,最后进行重定位。对于可执行文件

和共享的目标文件而言,重定位过程是相似的并有相同的结果。下面的描述使用

如下的约定符号。

* A

表示用于计算可重定位的域值的加数。

* B

表示了在执行过程中一个共享目标被加载到内存时的基地址。一般情况下,一个

共享object文件使用的基虚地址为0,但是一个可执行地址就跟共享object文件

不同了。

* G

表示了在执行过程中重定位入口符号驻留在全局偏移表中的偏移。请参阅

第二部分中的“ Global Offset Table (全局偏移表)”获得更多

的信息。

* GOT

表示了全局偏移表的地址。请参阅第二部分中的“ Global Offset Table

(全局偏移表)”获得更多的信息。

* L

表示一个符号的过程链接表入口的位置( section 偏移或地址)。一个过程

链接表入口重定位一个函数调用到正确的目的单元。链接器创建初始的链接表,

而动态链接器在执行中修改入口。

请参阅第二部分中的“ Procedure Linkage Table (过程链接表)”获得更多

的信息

* P

表示(section 偏移或地址)被重定位的存储单元位置(使用 r_offset 计算的)。

* S

表示索引驻留在重定位入口处的符号值。

一个重定位入口的 r_offset 值指定了受影响的存储单元的首字节的偏移

或虚拟地址。重定位类型指定了哪一位(bit)将要改变,以及怎样计算它们的值。

在 SYSTEM V 体系中仅仅使用 Elf32_Rel 重定位入口,将要被重定位的域中

保留了加数。在所有的情况下,加数和计算结果使用相同字节顺序。

+ Figure 1-22(表 1-22): Relocation Types(重定位类型)

NameValue Field Calculation

========= ===== ===========

R_386_NONE 0 none none

R_386_32 1 word32 S + A

R_386_PC32 2 word32 S + A - P

R_386_GOT32 3 word32 G + A - P

R_386_PLT32 4 word32 L + A - P

R_386_COPY 5 none none

R_386_GLOB_DAT 6 word32 S

R_386_JMP_SLOT 7 word32 S

R_386_RELATIVE 8 word32 B + A

R_386_GOTOFF 9 word32 S + A - GOT

R_386_GOTPC 10 word32 GOT + A - P

有的重定位类型有不同于简单计算的语义。

* R_386_GOT32

这种重定位类型计算全局偏移表基地址到符号的全局偏移表

入口之间的间隔。这样另外通知了 link editor 建立一个全局偏移表 。

* R_386_PLT32

这种重定位类型计算符号的过程链接表入口地址,并另外通知链接器建立一个

过程链接表。

* R_386_COPY

链接器创建该重定位类型用于动态链接,

它的偏移成员涉及一个可写段中的一个

位置。符号表索引指定一个可能存在于当前 object file 或在一个shared object

中的符号。在执行过程中,动态链接器把和 shared object 符号相关的数据

拷贝到该偏移所指定的位置。

* R_386_GLOB_DAT

这种重定位类型用于设置一个全局偏移表入口为指定符号的地址。该特定的重定位

类型允许你决定符号和全局偏移表入口之间的一致性。

* R_386_JMP_SLOT

链接器创建该重定位类型用于动态链接。其偏移成员给出了一个过程链接表入口的

位置。动态链接器修改该过程链接表入口以便向特定的符号地址传递控制。

[参阅第二部分中的 “Procedure Linkage Table(过程链接表)”]

* R_386_RELATIVE

链接器创建该重定位类型用于动态链接。其偏移成员给出了包含表达相关地址值

的一个 shared object 中的位置。动态链接器计算相应的虚拟地址(把该

shared object 装载地址和相对地址相加)。该类型的重定位入口必须为

符号表索引指定为 0 。

* R_386_GOTOFF

这种重定位类型计算符号值和全局偏移表地址之间的不同。另外还通知链接器

建立全局偏移表(GOT)。

* R_386_GOTPC

这种重定位类型类似于 R_386_PC32 ,不同的是它在计算中使用全局偏移表。

这种重定位中引用的符号通常是 _GLOBAL_OFFSET_TABLE_ ,该符号通知了

链接器建立全局偏移表(GOT)。

________________________________________________________________

2. PROGRAM LOADING AND DYNAMIC LINKING

程序装入和动态链接

________________________________________________________________

======================== Introduction(介绍) =========================

第二部分描述了 object file 信息和创建运行程序的系统行为。其中部分信息

适合所有的系统,其他信息是和特定处理器相关的。

可执行和共享的 object file 静态的描绘了程序。为了执行这样的程序,系统

用这些文件创建动态的程序表现,或进程映像。一个进程映像有用于保存其代码、

数据、堆栈等等的段。这个部分的主要章节讨论如下的内容。

* 程序头(Program header)。该章节补充第一部分,描述和程序运行相关的

object file 结构。即文件中主要的数据结构、程序头表、定位段映像,也

包含了为该程序创建内存映像所需要的信息。

* 载入程序(Program loading)。在给定一个 object file 时,系统为了

让它运行必须将它载入内存。

* 动态链接(Dynamic linking)。在载入了程序之后,系统必须通过解决组

成该进程的 object file之间的符号引用问题来完成进程映像的过程。

注意:指定了处理器范围的 ELF 常量是有命名约定的。比如,DT_ , PT_ ,

用于特定处理器扩展名,组合了处理器的名称(如 DT_M32_SPECIAL )。

没有使用这种约定但是预先存在的处理器扩展名是允许的。

Pre-existing Extensions

(预先存在的扩展名)

=======================

DT_JMP_REL

====================== Program Header(程序头) ======================

一个可执行的或共享的 object file 的程序头表是一个结构数组,每一个

结构描述一个段或其他系统准备执行该程序所需要的信息。一个 object file

段包含一个或多个部分(就象下面的“段目录”所描述的那样)。程序头仅仅对于

可执行或共享的 object file 有意义。一个文件使用 ELF 头的 e_phentsize

和 e_phnum 成员来指定其拥有的程序头大小。[参阅 第一部分中的 “ELF 头”]

+ Figure 2-1: Program Header

typedef struct {

Elf32_Word p_type;

Elf32_Off p_offset;

Elf32_Addr p_vaddr;

Elf32_Addr p_paddr;

Elf32_Word p_filesz;

Elf32_Word p_memsz;

Elf32_Word p_flags;

Elf32_Word p_align;

} Elf32_Phdr;

* p_type

该成员指出了这个数组的元素描述了什么类型的段,或怎样解释该数组元素的信息。

类型值和含义如下所述。

* p_offset

该成员给出了该段的驻留位置相对于文件开始处的偏移。

* p_vaddr

该成员给出了该段在内存中的首字节地址。

* p_paddr

在物理地址定位有关联的系统中,该成员是为该段的物理地址而保留的。由于

System V 忽略了应用程序的物理地址定位,该成员对于可执行文件和共享的

object 而言是未指定内容的。

* p_filesz

该成员给出了文件映像中该段的字节数;它可能是 0 。

* p_memsz

该成员给出了内存映像中该段的字节数;它可能是 0 。

* p_flags

该成员给出了和该段相关的标志。定义的标志值如下所述。

* p_align

就象在后面“载入程序”部分中所说的那样,可载入的进程段必须有合适的

p_vaddr 、p_offset 值,取页面大小的模。该成员给出了该段在内存和

文件中排列值。 0 和 1 表示不需要排列。否则, p_align 必须为正的 2 的幂,

并且 p_vaddr 应当等于 p_offset 模 p_align 。

某些入口描述了进程段;其他的则提供补充信息并且无益于进程映像。已经

定义的入口可以以任何顺序出现,除非是下面明确声明的。后面是段类型值;

其他的值保留以便将来用于其他用途。

+ Figure 2-2: Segment Types, p_type

Name Value

==== =====

PT_NULL 0

PT_LOAD 1

PT_DYNAMIC 2

PT_INTERP3

PT_NOTE 4

PT_SHLIB 5

PT_PHDR 6

PT_LOPROC 0x70000000

PT_HIPROC 0x7fffffff

* PT_NULL

该数组元素未使用;其他的成员值是未定义的。这种类型让程序头表忽略入口。

* PT_LOAD

该数组元素指定一个可载入的段,由 p_filesz 和 p_memsz 描述。文件中

字节被映射到内存段中。如果该段的内存大小( p_memsz )比文件大小( p_filesz )

要大,则多出的字节将象段初始化区域那样保持为 0 。文件的大小不会比内存大小值大。

在程序头表中,可载入段入口是以 p_vaddr 的升序排列的。

* PT_DYNAMIC

该数组元素指定动态链接信息。参阅 后面的“动态部分”以获得更多信息。

* PT_INTERP

该数组元素指定一个 null-terminated 路径名的位置和大小(作为解释程序)。

这种段类型仅仅对可执行文件有意义(尽管它可能发生在一个共享 object 上);

它在一个文件中只能出现一次。如果它出现,它必须先于任何一个可载入段入口。

参阅 后面的“程序解释器”(Program Interpreter)以获得更多的信息。

* PT_NOTE

该数组元素指定辅助信息的位置和大小。参阅 后面的“注意部分”以获得细节。

* PT_SHLIB

该段类型保留且具有未指定的语义。具有一个这种类型数组元素的程序并不

遵守 ABI 。

* PT_PHDR

该数组元素(如果出现),指定了程序头表本身的位置和大小(包括在文件中

和在该程序的内存映像中)。更进一步来说,它仅仅在该程序头表是程序内存映像

的一部分时才有效。如果它出现,它必须先于任何可载入段入口。参阅 后面的

“程序解释器”(Program Interpreter)以获得更多的信息。

* PT_LOPROC through PT_HIPROC

该范围中的值保留用于特定处理器的语义。

注意:除非在别处的特殊要求,所有的程序头的段类型是可选的。也就是说,

一个文件的程序头表也许仅仅包含和其内容相关的元素。

Base Address(基地址)

可执行和共享的 object file 有一个基地址,该基地址是与程序的 object file

在内存中映像相关的最低虚拟地址。基地址的用途之一是在动态链接过程中重定位

该程序的内存映像。

一个可执行的 object file 或 一个共享的 object file 的基地址是在

执行的时候从三个值计算而来的:内存载入地址、页面大小的最大值 和 程序可

载入段的最低虚拟地址。就象在“程序载入”中所描述的那样,程序头中的虚拟地址

也许和程序的内存映像中实际的虚拟地址并不相同。为了计算基地址,必须确定与

PT_LOAD 段 p_vaddr 的最小值相关的内存地址。获得基地址的方法是将内存

地址截去最大页面大小的最接近的整数倍。由于依赖载入内存中的文件类型,

该内存地址和 p_vaddr 值可能匹配也可能不匹配。

就象在第一部分中 “Section” 中描述的那样, .bss section 具有 SHT_NOBITS

的类型。尽管在文件中不占用空间,它在段的内存映像中起作用。通常,没有初始化

的数据驻留在段尾,因此使得在相关的程序头元素中的 p_memsz 比 p_filesz 大。

Note Section(注解部分)

有的时候供应商或系统设计者需要用特定的信息标记一个

object file 以便其他程序检查其兼容的一致性,等等此类。 SHT_NOTE

类型的 section 和 PT_NOTE 类型的程序头元素能够被用于此目的。 section

和程序头中的注解信息包含了任意数目的入口,每一个入口的格式都是对应于特定

处理器格式的 4-字节数组。下面的标签有助于解释注释信息的组织形式,但是这些

标签不是规格说明的一部分。

+ Figure 2-3: Note Information

namesz

descsz

type

name ...

desc ...

* namesz and name

名字中 namesz 的第一个字节包含了一个 null-terminated 字符

表达了该入口的拥有者或始发者。没有正式的机制来避免名字冲突。从

惯例来说,供应商使用他们自己的名称,比如 “XYZ Computer Company” ,

作为标志。如果没有提供名字, namesz 值为 0 。 如果有必要,确定

描述信息4-字节对齐。 这样的填充信息并不包含在namesz 中。

* descsz and desc

desc 中 descsz 的首字节包含了注解描述符。ABI 不会在一个描述符内容中

放入任何系统参数。如果没有描述符, descsz 将为 0 。 如果有必要,确定

描述信息4-字节对齐。 这样的填充信息并不包含在descsz中。

* type

该 word 给出了描述符的解释。每一个创造着(originator) 控制着自己的类型;

对于单单一个类型值的多种解释是可能存在的。因此,一个程序必须辨认出该名字

和其类型以便理解一个描述符。这个时候的类型必须是非负的。ABI 没有定义

描述符的含义。

为了举例说明,下面的解释段包含两个入口。

+ Figure 2-4: Example Note Segment

+0 +1 +2 +3

-------------------

namesz 7

descsz 0 No descriptor

type 1

name X Y Z spc

C o pad

namesz 7

descsz 8

type 3

name X Y Z spc

C o pad

desc word0

word1

注意:系统保留的注解信息没有名字 (namesz==0) ,有一个零长度的名字

(name[0]==‘‘) 现在还没有类型为其定义。所有其他的名字必须至少有

一个非空的字符。

注意:注解信息是可选的。注解信息的出现并不影响一个程序的 ABI 一致性,

前提是该信息不影响程序的执行行为。否则,该程序将不遵循 ABI 并将出现

未定义的行为。

===================== Program Loading(程序载入) =====================

当创建或增加一个进程映像的时候,系统在理论上将拷贝一个文件的段到一个虚拟

的内存段。系统什么时候实际地读文件依赖于程序的执行行为,系统载入等等。一个

进程仅仅在执行时需要引用逻辑页面的时候才需要一个物理页面,实际上进程通常会

留下许多未引用的页面。因此推迟物理上的读取常常可以避免这些情况,改良系统的

特性。为了在实践中达到这种效果,可执行的和共享的 object file 必须具有

合适于页面大小取模值的文件偏移和虚拟地址这样条件的段映像。

虚拟地址和文件偏移在 SYSTEM V 结构的段中是模 4KB(0x1000) 或大的 2 的幂。

由于 4KB 是最大的页面大小,因此无论物理页面大小是多少,文件必须去适合页面。

+ Figure 2-5: Executable File

File Offset FileVirtual Address

=========== ===================

0 ELF header

Program header table

Other information

0x100 Text segment 0x8048100

...

0x2be00 bytes 0x8073eff

0x2bf00 Data segment 0x8074f00

...

0x4e00 bytes 0x8079cff

0x30d00 Other information

...

+ Figure 2-6: Program Header Segments(程序头段)

Member Text Data

====== ==== ====

p_type PT_LOADPT_LOAD

p_offset 0x100 0x2bf00

p_vaddr 0x8048100 0x8074f00

p_paddr unspecified unspecified

p_filesz 0x2be00 0x4e00

p_memsz 0x2be00 0x5e24

p_flags PF_R+PF_X PF_R+PF_W+PF_X

p_align 0x1000 0x1000

尽管示例中的文件偏移和虚拟地址在文本和数据两方面都适合模 4KB ,但是还有

4 个文件页面混合了代码和数据(依赖于页面大小和文件系统块的大小)。

* 第一个文本页面包含了 ELF 头、程序头以及其他信息。

* 最后的文本页包含了一个数据开始的拷贝。

* 第一个数据页面有一个文本结束的拷贝。

* 最后的数据页面也许会包含与正在运行的进程无关的文件信息。

理论上,系统强制内存中段的区别;段地址被调整为适应每一个逻辑页面在地址空间

中有一个简单的准许集合。在上面的示例中,包含文本结束和数据开始的文件区域将

被映射两次:在一个虚拟地址上为文本而另一个虚拟地址上为数据。

数据段的结束处需要对未初始化的数据进行特殊处理(系统定义的以 0 值开始)。

因此如果一个文件包含信息的最后一个数据页面不在逻辑内存页面中,则无关的

数据应当被置为 0 (这里不是指未知的可执行文件的内容)。在其他三个页面中

“Impurities” 理论上并不是进程映像的一部分;系统是否擦掉它们是未指定的。

下面程序的内存映像假设了 4KB 的页面。

+ Figure 2-7: Process Image Segments(进程映像段)

Virtual Address ContentsSegment

=============== ===============

0x8048000 Header paddingText

0x100 bytes

0x8048100 Text segment

...

0x2be00 bytes

0x8073f00 Data padding

0x100 bytes

0x8074000 Text padding Data

0xf00 bytes

0x8074f00 Data segment

...

0x4e00 bytes

0x8079d00 Uninitialized data

0x1024 zero bytes

0x807ad24 Page padding

0x2dc zero bytes

可执行文件和共享文件在段载入方面有所不同。典型地,可执行文件段包含了

绝对代码。为了让进程正确执行,这些段必须驻留在建立可执行文件的虚拟地址

处。因此系统使用不变的 p_vaddr 作为虚拟地址。

另一方面,共享文件段包含与位置无关的代码。这让不同进程的相应段虚拟地址

各不相同,且不影响执行。虽然系统为各个进程选择虚拟地址,它还要维护各个

段的相对位置。因为位置无关的代码在段间使用相对定址,故而内存中的虚拟地址

的不同必须符合文件中虚拟地址的不同。下表给出了几个进程可能的共享对象虚拟

地址的分配,演示了不变的相对定位。该表同时演示了基地址的计算。

+ Figure 2-8: Example Shared Object Segment Addresses

Sourc Text Data Base Address

===== ==== ==== ============

File 0x200 0x2a400 0x0

Process 1 0x80000200 0x8002a400 0x80000000

Process 2 0x80081200 0x800ab400 0x80081000

Process 3 0x900c0200 0x900ea400 0x900c0000

Process 4 0x900c6200 0x900f0400 0x900c6000

系统安全文件格式 篇3

关键词:DVD系统;FAT文件系统;CD_RIPPING

中图分类号:TP37文献标识码:A文章编号:1009-3044(2007)16-31135-01

File Format Conversion and Storage based on the DVD System

CHEN Hua-li, WANG Da-hua

(Wuhan University of Science and Technology, Wuhan 430081, China)

Abstract:This thesis introduces a method of converting CD to MP3 and storing it to U-disk on the DVD system. This design makes use of the play of the DVD system to get PCM information from CD, converting it to MP3 with the DVD HW decoder, and transmitting it to the U-disk with USB interface.

Key words:DVD system; FAT file system; CD_RIPPING

声音在我们的日常学习、交流中是不可或缺的。随着计算机技术的不断发展,数字声音也日新月异。要在计算机内播放或是处理音频文件,就要对声音进行数、模转换,将原始、自然的声音模拟信号转换为计算机可以识别的数字信号。这个过程由采样、量化和编码三步构成。常用来评价音频文件质量的标准为采样频率、量化位数和声道数。采样频率即在采样过程中每秒抽取声波幅度样本的次数。目前常用的采样频率有3个:11.025KHZ、22.05KHZ、44.1KHZ。采样频率越高音质越好。量化位数即每个采样点能够表示的数据范围。同样的,量化位数越高,音质越好。声道数即所使用的声音通道个数,它表明声音记录时产生的波形个数。多声道的声音质量当然比单声道的好。下面,就以上三个方面,介绍一下当前较流行的几种音频文件格式的优缺点。

1 三种格式声音优缺点的比较

CD,最早的数字音频格式,CD经过压缩之后,才产生了许多的数码随身听适用的音频格式。标准CD格式为44.1K的采样频率,速率88K/秒,16位量化位数。因为CD音轨可以说是近似无损的,因此它的声音基本上是忠于原声的。CD格式的文件是不能直复制到计算机的,需要使用抓音轨软件把CD格式的文件转换成WAV。

WAV是微软公司开发的一种声音文件格式,支持多种音频位数、采样频率和声道。标准格式的WAV文件和CD格式一样,也是44.1K的采样频率,速率88K/秒,16位量化位数。因此,所产生的WAV格式文件质量和CD相差无几,成为目前PC机上广为流行的声音文件格式,几乎所有的音频编辑软件都“认识”WAV格式。

MP3全称MPEG Audio Laye-3,目前MP3格式编码比特率最高可达320Kbps。MP3音频文件的压缩是一种有损压缩。MP3音频编码具有10:1-12:1的高压缩率,同时基本保持低音频部分不失真,但是牺牲了声音文件中12KHz到16KHz这部分音频的质量来换取文件的尺寸,相同长度的音乐文件,用*.mp3格式来储存,一般只有*.wav文件的1/10,当然音质要次于CD格式或WAV格式的声音文件。但由于其文件尺寸小,音质影响不大,所以一直受到消费者的好评。

本文在SPHE8202L组成的DVD系统硬件平台基础上,充分利用DVD系统自带的播放功能,IR功能,以及对MP3的硬解码和USB的支持,当外界有按键信息时,DVD系统响应用户的按键信息,启动相关的流程执行将正在播放的CD文件压缩成MP3文件,通过文件系统的管理经USB存入U盘。整个设计充分利用已有的系统资源,以系统的最小开销实现功能,且符合设计规范。

2 硬件平台简介

SPHE8202L处理器是由台湾凌阳科技设计[1],目前主要用在DVD上,是高度集成的SOC(将RISC处理器和MPEG解码处理器DSP以及IOP集成于单芯片上),配合少量的外围器件就可以流畅地播放多种格式的媒体文件。图1是SPHE8202L的系统结构框图。

SPHE8202L采用128PIN的LQFP(Low profile Quad Flat)封装[2],内部集成了32位的CPU、视频解码器、音频DSP处理器、CDDSP, Video DAC以及8位子CPU,RF处理器,同时携带USB,Card Reader和DivX等。支持双通道音频输出,16位SDRAM接口、USB1.1接口、MPEG4的解码。

图1 SPHE8202L Portable DVD系统架构

3 基本流程

本文充分利用DVD系统的播放功能和SPHE8202L芯片的CDDSP解码,读取当前正在播放的CD文件数据,并将其压缩成MP3格式,然后经USB的传输,通过FAT文件系统的管理,将数据信息写入U盘。基本的程序流程框图如图2所示。

图2 程序流程框图

本文的重点和关键是FAT文件系统的管理,即根据磁盘的FAT格式,利用FAT文件系统,管理当前磁盘的文件信息和内存空间,完成对读取的数据在磁盘上的写操作。客户化的界面完成系统对用户按键操作的响应,并把操作的内容在屏幕上的显示出来,达到交互的目的。在CD_RIPPING 中通过POLLING函数响应

外部用户的按键,设置不同的系统状态,并在UI界面上显示,完成交互式操作,达到对整个过程的控制。

4 FAT文件系统

本文利用FAT文件系统对磁盘读写的操作是基于FAT文件系统的标准协议。首先读取磁盘的第一个扇区[3],即读取MBR,根据MBR相关字节的记录获得磁盘分区地址和分区类型。根据得到的分区地址,即DBR的起始地址,读取DBR,获得磁盘的逻辑结构信息(扇区的大小,簇的大小,FAT表的位置、大小、FAT的类型,FDB的地址,数据区的地址,空闲簇的数目等等信息)。

获得磁盘的FDB和FAT表地址之后,就可以对文件和文件夹进行相应的操作了,首先根据文件名在FDB中查找对应的文件目录结构,获取文件的属性,大小以及文件起始簇号等重要信息。根据文件的起始簇号,在FAT表中依次获取文件的簇链关系,对应于data区读取相应的文件数据。图3为文件的读取与FAT表的关系。系统对文件的读写操作不是直接对磁盘的访问[4],而是先将磁盘的常用信息读入常驻内存,通过其自己定义的一整套用于文件系统管理的结构体来动态访问内存区域,当需要的时候就访问磁盘,读取数据存于一定的BUFFER空间,之后交给DSP进行相应的处理。由于文件系统的操作采用的是动态分配内存的方式,因此大大节约了系统的开销。写数据与之类似。

图3文件的读取

5 CD_RIPPING

CD_RIPPING完成的功能:根据用户的操作要求,读取CD上的文件,由CDDSP硬解码后压缩成MP3格式存放在一段BUFFER中,然后获取磁盘信息,再将BUFFER中的数据按照文件系统的存储管理方式写入U盘。CD_RIPPING的主要流程如图4所示:

初始化部分主要完成的工作包括Ripping时用户界面的设置,内存空间的初始化,系统状态变量的初始化等。当按SUB_TITLE键进入RIPPING流程时,首先做的就是这部分的初始化,这是CD_RIPPING的前提和基础。

图4 CD_RIPPING的主要流程

主要的系统状态函数为Polling,Client_Run,Server_run。其功能分别为:获取用户的按键信息;根据用户的按键相应的设置系统的状态变量;具体的执行CD数据的读取,编解码前的存放和解码后数据向U盘的写入操作。

在数据写的过程中,通过进度条动态显示当前音轨RIPPING的进度和总的进度,以及当前RIPPING的名称,并以倒计时的方式显示剩余多少时间。同时可以对整个过程进行控制:改变RIPPING速率或取消RIPPING。

数据写入U盘后,对相关内存空间的释放,RIPPING完成或是在此过程中发生的各种错误时的OSD显示,以及返回继续播放的相关设置等。

6 结束语

实现从CD格式转换成MP3格式的工具比较多,但绝大多数是通过电脑专用软件实现[5],这种操作具有一定的专业性,为这种消费方式的普及设置了门槛。而通过DVD系统实现文件格式的转换与存储,使得普通用户能够在友好的客户化界面下,以一种简捷的操作方式,实现复杂而专业的功能。这就为这种简捷消费方式的普及提供了一种轻松简单的实现途径,因而这种实现具有较高的应用价值。

参考文献:

[1]Sunplus.SPHE8202L H/W System Introduction[R]. 2006. 2-7.

[2]Microsoft Corporation. FAT: General Overview of On-Disk Format[P]. Version 1.02. 1999. 6-17.

[3]Microsoft Corporation. Microsoft Extensible Firmware Initiative FAT32 File System Specification[R]. Version 1.03. 2000. 6-23.

[4]Microsoft Corporation. Long Filename Specification[R]. Version 0.5. 1992.5-22.

系统安全文件格式 篇4

配网系统结构简单,但覆盖面广,涵盖了整个城市的每个角落。这就造成配网系统线路改造比主网频繁,比如环网柜/开关柜的改造、开关线路走向的改变、馈线10Kv供电开关的转变等。配网线路改造导致配网数据模型的改变,必须对改造的部分进行重新建模。而电网系统由很多子系统构成,如EMS、PAS、DMS等,这将使DMS与其他系统间的模型交互频繁,如何准确、高效地导入电网数据模型是配网系统必须解决的问题。

1 CIM XML/RDF模型文件

1.1 CIM模型概述

公用信息模型CIM是电力企业应用集成的重要工具,它包括公用类、属性、关系等,其类(Class)及对象(Object)是抽象的,可以用于许多电力系统应用,它是逻辑数据结构的灵魂,可定义信息交换模型。CIM提供了一个关于电力能量管理系统信息的全面逻辑视图,是一个代表电力企业所有主要对象的抽象模型,包括了这些对象的公有类和属性,以及它们之间的关系。

类间的关系揭示了它们相互之间是如何构造的。CIM类之间的关系主要分为:泛化、简单关联和聚集。

1)泛化

泛化是一种继承关系,是一个较一般的类和一个更具体的类之间的关系。泛化使具体的类可以从它上层所有更一般的类继承属性和关系。

2)简单关联

关联是类与类之间的一种概念上的联系。每一关联都有两个作用,而每一个作用表示了关联的一个作用方向。有向作用描述了相对于源类(即施加作用类),目标类(即被作用类)所受到的作用。作用赋以目标类的名,可带可不带动词。每一作用还有对象重数或称为对象基数,用来指明有多少对象可以参与到给定的关系中。在CIM中,关联是不命名的。

3)聚集

聚集是关联的一种特殊情况。聚集表明类间的关系是某种整体—部分的关系,整体类由各部分类“构成”或整体类“包含”部分类,而部分类是整体类的“一部分”。部分类不像一般化,部分类并不从整体类继承。

1.2 CIM模型分类

CIM模型文件按内容分为全网模型和增量模型。

1)全网模型

全网模型包括整个电网比较详尽的信息,包括:Company、SubControlArea、BaseVoltage、Substation、VoltageLevel、PowerTransFormer、BusbarSection、Breaker、ConnectivityNode、terminal等。

2)增量模型

配网的线路改造是比较频繁,如果每次线路改造都进行全网模型导入,工作量很大,不利系统的使用。增量模型的出现解决这个问题,每次线路改造只需导入相应的增量模型即可。增量模型又分为部分模型和差异模型。

部分模型(拆分模型),顾名思义就是全网模型的一部分。按照拆分的条件不同可生成不同的部分模型。如按子控制区(SubControlArea)拆分,从一个大地区的模型中,分离出某一子控制区的数据模型(把子控制区包含的厂站分离出);按电压等级(VoltageLevel)拆分,把某区域里电压等级满足某一条件的信息分离出来(厂站的集合)。

差异模型是对部分模型的进一步简化,它只显示模型中变化的那部分。第一次导入全网模型之后,后续线路改造时只需导入变化的增量模型。差异模型描述了当前网络状态与全网模型间的差异。差异模型与全网模型合并之后即形成当前时刻完整的网络模型。

差异模型本身是类型为dm:DifferenCeModel的资源,它有如下几个特性:dm:forwardDifferenCeS,dm:reverseDifferenees,dm:preeonditions。DMS1000E系统中使用的特性为dm:forwardDifferenees和dm:reverseDifferenees。规定:

只在出现,表示新增。

只在出现,表示删除。

同时在两元素中出现,表示修改。

差异模型例子:

从模型中可以看出,”#111”为修改元件,修改后的名称为“开关A”;“#222”为新增元件;“#333”为删除元件,删除元件的子元素不需要给出。

1.3 CIM XML/RDF格式文件

将电网CIM模型导出为CIM XML/RDF格式,使用XML XML/RDF规范表示电力系统数据。CIM XML/RDF格式文件为每个对象分配唯一的RDF,关联的对象的RDF前加#标识。

1)属性的表示方法

CIM/XML中属性采用<类名+“.”+属性名>的形式表示。若类名就是本类名,表示该属性是自身的;如类名非本类名,表示该属性继承自父类,“.”前的类名就是该属性所继承的父类名。

2)关联的表示方法

CIM/XML中关联采用<类名+“.”+关联名>的形式表示。若类名就是本类名,表示该关联是自身的;如类名非本类名,表示该关联继承自父类,“.”前的类名就是关联继承自哪个父类。

下面是个简单的CIM XML/RDF格式文件,可以看出一个VoltageLevel对象拥有三个属性:从Naming继承来的name及自身的两个属性:highVoltageLimit和lowVoltageLimit。同时每个VoltageLevel对象属于一个Substation对象,且与一个BaseVoltage对象关联。

1.4 CIM XML/RDF格式文件解析

本文采用SAX方式解析CIM XML/RDF格式文件。

对CIM XML/RDF格式文件解析之前为每个CIM类分配一个内存,用来记录解析的类对象。解析时首先判断是不是CIM元件类,如果是则记录元件类型,并到对应的内存中查找,如果找不到则创建。根据CIM模型的层次结构特点,对CIM对象属性和关联解析时先解析基类的属性和关联,再解析自己的属性和关联。下面介绍VoltageLevel对象元素的解析。

由于VoltageLevel类继承了equipmentContainer类,所以先调用equipmentContainer类的解析函数把继承来的属性和关联解析出来,此处只有一个属性name。接着解析自己的属性和关联。解析属性时很简单就是把属性值转换为浮点数直接复制给对象属性,解析关联时,需要去掉RDF前的#再赋值。具体实现代码:

2 结论

CIM是电网系统间数据交互的基础,各个系统必须做到准确、高效地导入、导出CIM模型文件。配网自动化系统正处发展阶段,而且与其他系统的交互越来越多,所以做好配网系统的模型导入是很现实和必要的。文章最后给出如果运用SAX方式解析CIM XML/RDF格式文件。

参考文献

[1]IEC DRAFT,EMSAPI DOCUMENT1:COMMON INFORMATION MODEL(CIM),VERSION1[S].DECEMBER,1996.

[2]能量管理系统应用程序接口(EMS-API)第301篇:公共信息模型(CIM)基础[S].中华人民共和国电力行业标准,IEC61970-3011999.

[3]吴玉生,吴杏平.基于IEC6I970系列标准的数据库接口的研究[D].中国电力科学院,2003.

[4]林昌暖,吴健.基于RDF的CIM数据存储方案研究与实现[J].科学技术与工程,2007(12).

[5]朱见伟,丁巧林等.配电网CIM综合模型的构建与应用[J].继电器,2006(4).

系统安全文件格式 篇5

相关业务备案申请文件内容

与格式指南

为规范主办券商业务备案等申请文件的内容与格式,根据《全国中小企业股份转让系统业务规则(试行)》、《全国中小企业股份转让系统主办券商管理细则(试行)》,制定本指南。

一、申请在全国中小企业股份转让系统(以下简称“全国股份转让系统”)从事主办券商相关业务的证券公司以及已经开展相关业务的主办券商(以下简称“申请人”)应当按照本指南制作和报送申请文件。

二、本指南规定的申请文件目录是对主办券商相关业务备案申请文件的最低要求。根据审查需要,全国中小企业股份转让系统有限责任公司(以下简称“全国股份转让系统公司”)可要求申请人补充文件。

三、申请文件接收后,经全国股份转让系统公司同意,可以增加、撤回或者更换。

四、申请文件应提交书面文件以及与书面文件一致的电子文件(PDF格式)各一套,其中《证券公司基本情况申报表》和《业务实施方案》还须另附一套word格式的电子文件。电子文件以光盘形式提交,并须在盘面上标明申请人名称。

五、书面文件应为原件,如不能提供原件的,可提供复印件,由申请人律师提供鉴证意见或由申请人盖章,保证与原件一致。申请文件应加盖骑缝章,其中《证券公司基本情况申报表》、《业务实施方案》、《公司章程》还应在首页加盖公章。

六、申请书为申请人正式发文,须标明文号、签发人。

七、《证券公司基本情况申报表》、《证券公司参与全国股份转让系统业务协议书》及其附件自律承诺书,应采用全国股份转让系统公司提供的标准格式文本(可到全国股份转让系统公司网站()下载)。

八、申请文件所有需要签名处,均应为签名人亲笔签名,不要以名章、签名章等替代。

九、申请文件应包括封面、目录和内容。

申请文件的封面和侧面应标有“XX公司主办券商XX业务备案申请文件”字样,扉页应标明申请证券公司法定代表人、指定高管、联系人姓名、电话、传真等联系方式。

十、每份申请文件之间应有明显的分隔标识,文件中的页码应与目录中的页码相符。

十一、申请文件应采用标准A4纸张印刷(须提供原件的历史文件除外)。

申请人签署的业务协议书及其附件(一式四份),无需打孔,应单独装订。

附件:

1.全国中小企业股份转让系统证券公司申请主办券商相关业务备案文件目录 2.全国中小企业股份转让系统主办券商申请新增业务备案文件目录

3.全国中小企业股份转让系统主办券商申请终止从事相关业务备案文件目录

4.全国中小企业股份转让系统主办券商名称变更备案文件目录 附件1

全国中小企业股份转让系统证券公司申请主办券商相关业务备案文件目录

一、申请书

二、公司设立的批准文件复印件

三、证券公司基本情况申报表

四、《经营证券业务许可证》(副本)复印件

五、《企业法人营业执照》(副本)复印件

六、关于在全国中小企业股份转让系统从事XX业务

实施方案

申请推荐业务须提交如下附件:

附件1:推荐挂牌项目操作规程

附件2:尽职调查制度 附件3:内核工作制度 附件4:工作底稿制度 附件5:持续督导制度

附件6:项目组成员、内核成员资质证明文件 申请经纪业务须提交如下附件:

附件1:经纪业务操作规程 附件2:投资者适当性管理制度 附件3:技术系统准备情况说明

七、证券公司参与全国中小企业股份转让系统业务协

议书

附件1:推荐业务自律承诺书(申请推荐业务适用)

附件2:经纪业务自律承诺书(申请经纪业务适用)注:上述协议及承诺书均一式四份

八、最近一经审计的财务报告原件

九、最近一经审计的净资本计算表、风险控制指标监管报表、风险资本准备计算表原件

十、公司章程 附件2

全国中小企业股份转让系统主办券商

申请新增业务备案文件目录

一、申请书

二、《经营证券业务许可证》(副本)复印件

三、关于在全国中小企业股份转让系统从事XX业务实 施方案

附件同《全国中小企业股份转让系统证券公司申请主办券商相关业务备案文件目录》第六项

四、证券公司参与全国中小企业股份转让系统业务补充 协议书

附件同《全国中小企业股份转让系统证券公司申请主办券商相关业务备案文件目录》第七项 附件3

全国中小企业股份转让系统主办券商申请

终止从事相关业务备案文件目录

一、申请书

二、业务处置方案

附件4

全国中小企业股份转让系统主办券商

名称变更备案文件目录

一、申请书

二、主办券商名称变更的批准文件(复印件)

三、主办券商名称变更后的《经营证券业务许可证》(副 本)复印件

四、主办券商名称变更后的《企业法人营业执照》(副本)复印件

五、主办券商名称变更后的公司章程

上一篇:工业设计史下一篇:编制原则