CN103886095B - 跨平台目标文件复用方法 - Google Patents

跨平台目标文件复用方法 Download PDF

Info

Publication number
CN103886095B
CN103886095B CN201410133527.1A CN201410133527A CN103886095B CN 103886095 B CN103886095 B CN 103886095B CN 201410133527 A CN201410133527 A CN 201410133527A CN 103886095 B CN103886095 B CN 103886095B
Authority
CN
China
Prior art keywords
file
name
symbol
file destination
destination
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410133527.1A
Other languages
English (en)
Other versions
CN103886095A (zh
Inventor
孙吉平
韩勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Senseshield Technology Co Ltd
Original Assignee
Beijing Senseshield Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Senseshield Technology Co Ltd filed Critical Beijing Senseshield Technology Co Ltd
Priority to CN201410133527.1A priority Critical patent/CN103886095B/zh
Publication of CN103886095A publication Critical patent/CN103886095A/zh
Application granted granted Critical
Publication of CN103886095B publication Critical patent/CN103886095B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种跨平台目标文件复用方法,包括以下步骤:S1:读取第一目标文件,并解析其文件结构;S2:根据解析结果,将所述第一目标文件以符号为单位,分解为各符号及其数据、重定位信息;S3:对第一目标文件的符号名进行更新处理;S4:按照第二目标文件的文件格式将分解第一目标文件得到的各符号及其数据、重定位信息构造为第三目标文件。本发明的跨平台目标文件复用方法,无需改动编译器,仅对目标文件进行处理,使不同编译器生成的目标文件可以复用。

Description

跨平台目标文件复用方法
技术领域
本发明涉及计算机领域,尤其涉及一种跨平台目标文件复用方法。
背景技术
同一编程语言不同编译器之间甚至不同语言之间的目标文件进行共享/复用,如C语言目标文件有elf格式、coff格式和omf格式。软件保护中,使用自定编译器(一般使用开源编译器以节省时间和成本)对部分源文件进行编译和处理生成加密的代码是一种有效的方法。软件开发需要一整套的开发工具,包括文本编辑器、编译器、汇编器、链接器等,对于软件保护工具开发者而言,开发这样一套工具是不经济也不必要的,用户使用其惯用的开发工具而配以软件保护工具是一种实用的方法。例如Microsoft Visual Studio是一套常用的商用软件开发工具,可以以开源的GCC(GNU Compiler Collection)或clang编译器为基础开发软件保护工具配合VC编译器使用,保护C/C++语言开发的软件。但是,不同编译器的目标文件格式不同,不能兼容。更改结构复杂,源代码冗长的编译器是一种代价较大的方法。
COFF(Common Object File Format,通用对象文件格式)是一种很流行的对象文件格式。比如,Visual Studio编译器所产生的目标文件(*.obj)就是这种格式。其它的编译器,如GCC、ICL(Intel C/C++Compiler)、VectorC,也使用这种格式的目标文件。不仅仅是C/C++,很多其它语言也使用这种格式的对象文件。
COFF文件的整体结构如下:
COFF文件一共有8种数据,自上而下分别为:
1.文件头(File Header)
2.可选头(Optional Header)
3.段落头(Section Header)
4.段落数据(Section Data)
5.重定位表(Relocation Directives)
6.行号表(Line Numbers)
7.符号表(Symbol Table)
8.字符串表(String Table)。
其中,除了段落头可以有多个节(因为可以有多个段落)以外,其它的所有类型的节只能有一个。
文件头:COFF文件的头,它用来保存COFF文件的基本信息,如文件标识,各个表的位置等等。
可选头:在目标文件中,基本上都没有这个头;但在其它的文件中(如:可执行文件)这个段用来保存在文件头中没有描述到的信息。
段落头:用来描述段落信息,每个段落都有一个段落头来描述。段落的数目在文件头中会指出。
段落数据:通常是COFF文件中最大的数据段,每个段落真正的数据就保存在这个位置。
重定位表:通常只存在于目标文件中,用来描述COFF文件中符号的重定位信息。
符号表:用来保存COFF文件中所用到的所有符号的信息,连接多个COFF文件时,这个表帮助我们重定位符号。调试程序时也要用到它。
字符串表:用来保存字符串的。符号表是以记录的形式来描述符号信息的,但它只为符号名称留置了8个字符的空间,在现在的程序中,一个符号名动不动就数十个字符,8个字符空间的不够,因此需将这些名称存在字符串表中。而符号表中只记录这些字符串的位置。
ELF格式简介如下:
ELF(Executable and Linkable Format,可执行连接格式)是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface,ABI)而开发和发布的。
ELF头位于文件的开始,描述了该文件的组织情况。sections保存着object文件的信息,较为常见的section包括指令、数据、符号表、字符串表、重定位信息等等。section头表(section header table)包含了描述文件sections的信息。每个section在这个表中有一个入口;每个入口给出了该section的名字,大小,等等信息。各部分分布如下表所示:
现有的编译器其目标文件格式大多数是公开的,如Microsoft Visual C++的目标文件格式为COFF格式;CLANG、GCC的目标文件格式为ELF格式(也可输出其它格式,如COFF,但有很多不同,不能兼容);C++Builder、Delphi的目标文件格式为OMF格式。虽然上述几种目标文件格式不同,但其要素相似,其基本构成为:节区/段(section/segment)、符号(symbol)、重定位(relocation/fixup)。
不同目标文件格式有着不同的符号名命名方式。一般C语言函数、变量名未加修饰或加“_”前缀(例如:用户在源代码中编辑的函数“Func”,ELF格式中该函数的符号名仍为“Func”,而COFF格式中该函数的符号名为“_Func”),而C++语言函数、变量符号名中都包含了类名、命名空间、类型等信息。
发明内容
本发明提供一种跨平台目标文件复用方法,无需改动编译器,仅对目标文件进行处理,使不同编译器生成的目标文件可以复用。
为了解决上述技术问题,本发明提供了一种跨平台目标文件复用方法,包括以下步骤:
S1:读取第一目标文件,并解析其文件结构;
S2:根据解析结果,将第一目标文件的以符号为单位,分解为各符号及其数据、重定位信息;
S3:对第一目标文件的符号名进行更新处理;
S4:按照第二目标文件的文件格式将分解第一目标文件得到的各符号及其数据、重定位信息构造为第三目标文件。
作为优选,所述第一目标文件和第二目标文件分别为通过第一编译器和第二编译器编译生成的格式不同的目标文件。
作为优选,第二编译器及其链接器配置为能够复用所述第三目标文件。
作为优选,所述符号包括函数、变量、常量。
作为优选,所述步骤S3具体包括:
S31:根据所述第一目标文件所属文件类型的符号名命名格式解析第一目标文件的符号名信息,符号名信息包括名字、类型,其中:
对于面向对象语言可选地包括命名空间、类名;
对于函数可选地包括调用约定、参数列表;
对于模板可选地包括模板参数类型;
S32:根据所述符号名信息和所述第二目标文件的符号名命名规则构造新的符号名。
作为优选,在对微软的COFF文件符号名信息进行解析的情况下,步骤S31具体包括:
S311:读取第一目标文件符号名的第一个字段,如果该字段不为‘?’,判定第一目标文件符号名为根据C语言命名的符号名;
S312:根据第一目标文件符号名的第二个字段解析函数或者变量名;
S313:根据第一目标文件符号名的第三个字段解析类名/命名空间;
S314:解析第一目标文件符号名的第四个字段表示的是函数还是变量,如果是函数则根据后续字段解析函数调用约定和作用域,然后解析返回值及各参数的类型;如果是变量则根据后续字段解析变量的作用域,然后解析变量类型,再解析变量所在内存空间的访问属性。
作为优选,在构造微软的COFF文件符号名的情况下,步骤S32具体包括:
S321:添加C++符号标识‘?’;
S322:添加函数或者变量名;
S323:依次添加类名/命名空间的标识;
S324:如果是函数则添加调用约定标识和作用域标识,然后依次添加返回值和各参数的类型字符串及结束标识,再添加默认的异常规范标识;如果是变量则添加变量作用域字符串,然后添加变量类型字符串,再添加变量所在内存空间的访问属性标识。
作为优选,所述步骤S4具体包括:
S41:构造所述第三目标文件的段;
S42:添加数据,构造所述第三目标文件的符号表;
S43:添加所述第三目标文件的重定位;
S44:继续添加与所述第三目标文件格式及运行时的库有关的必要要素信息。
与现有技术相比,本发明的跨平台目标文件复用方法的有益效果在于:通过对异构目标文件格式进行符号和结构转换,构造匹配用户所用开发工具的新的目标文件,无需改动编译器,使不同编译器生成的目标文件可以复用。可以提高不同编译器目标文件格式不同的兼容性、简化操作、节省成本。
附图说明
图1为本发明的实施例的跨平台目标文件复用方法的流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明的实施例的跨平台目标文件复用方法作进一步详细描述,但不作为对本发明的限定。
图1为本发明的实施例的跨平台目标文件复用方法的流程示意图。本发明的实施例的跨平台目标文件复用方法,包括以下步骤:
S1:读取第一目标文件,并解析其文件结构(段、符号、重定位);
S2:根据解析结果,将第一目标文件的以符号为单位,分解为各符号及其数据、重定位信息;
S3:对第一目标文件的符号名进行更新处理;
S4:按照第二目标文件的文件格式将分解第一目标文件得到的各符号及其数据、重定位信息构造为第三目标文件。
其中,步骤S2中符号包括函数、变量、常量等信息。
本发明的方法通过对异构目标文件格式进行符号和结构转换,构造匹配用户所用开发工具的新的目标文件,无需改动编译器,使不同编译器生成的目标文件可以复用。可以提高不同编译器目标文件格式不同的兼容性、简化操作、节省成本。
作为本发明的一个改进,第一目标文件和第二目标文件为分别通过编译器编译生成的格式不同的目标文件。作为本实施例的优选方案,采用的具体方式为,第一目标文件为通过第一编译器编译生成的目标文件,而进一步的,第二目标文件为通过第二编译器编译生成的与第一目标文件格式不同的目标文件。第一编译器和第二编译器均为现有的编译器,如GCC(GNU编译器集合)、Clang编译器等,其区别在于,两个编译器编译生成的目标文件格式不同。
作为进一步的改进,第二编译器及其链接器配置为可以复用第三目标文件,以使得第三目标文件与第二目标文件具有相同的文件格式。本实施例中,第三目标文件与第二目标文件具有相同的文件格式,即第二编译器及其链接器可以复用第三目标文件。
作为更进一步的改进,步骤S3具体包括:
S31:根据第一目标文件所属文件类型的符号名命名格式解析第一目标文件的符号名信息,符号名信息包括名字、类型。对面向对象语言(如C++)还可能包括命名空间、类名,对函数,可能包括调用约定、参数列表等,对于模板则可选地包括模板参数类型。
具体的,例如对于C++函数“void Calculate::add(int,int)”,在MicrosoftVisual C++编译后的目标文件中其符号名为“?add@Calculate@@YAHHH@Z”,其中?表示该符号是C++符号而非C符号;add为函数名;第一个@为命名空间/类名的起始标识;Calculate@表示函数包含在Calculate类/命名空间中;第三个@为命名空间/类名的结束标识;YA表示该符号为cdecl类型的全局函数;HHH表示函数的依次表示返回值和各参数的类型,H表示int类型;第四个@为参数结束标识;最后一个字母Z表示默认的异常规范;总之,该函数除了函数体外的所有信息都包含在符号名中,从而可以解析和重构。作为一种实施方式,在对微软的COFF文件符号名信息进行解析的情况下,以Microsoft Visual C++所用的COFF格式为例,步骤S31具体包括:a.读取符号名第一个字符,如果不为‘?’,表示其为C语言而来的符号;b.解析函数/变量名;c.解析类名/命名空间;d.解析该符号是函数还是变量,如果是函数则跳转到e,否则跳转到g;e.解析函数调用约定和作用域;f.解析返回值及各参数的类型;g.解析变量的作用域;h.解析变量类型;i.解析变量所在内存空间的访问属性。
S32:根据符号名信息和第二目标文件的符号名命名规则构造新的符号名。
作为一种实施方式,在构造微软的COFF文件符号名的情况下,以MicrosoftVisual C++所用的COFF格式为例,构造该格式符号名的过程包括:a.添加C++符号标识‘?’;b.添加函数/变量名;c.依次添加类名/命名空间开始标识‘@’、类名/命名空间及分隔符‘@’(如果不在任何类或命名空间中则省略此项)、类名/命名空间结束标识‘@’;d.如果是函数则跳转到e,否则跳转到h;e.添加调用约定标识和作用域标识;f.依次添加返回值和各参数的类型字符串及结束标识‘@’;g.添加默认的异常规范标识‘Z’;h.添加变量作用域字符串;i.添加变量类型字符串;j.添加变量所在内存空间的访问属性标识。
作为更进一步的改进,步骤S4具体包括:
S41:构造第三目标文件的段;
S42:添加数据,构造第三目标文件的符号表;
S43:添加第三目标文件的重定位;
S44:继续添加要素信息,例如其他与目标文件格式及运行时库有关的必要要素信息。
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
实施例1
本实施例中,目标文件1为elf格式,目标文件2为coff格式,编程语言为C语言。在具体实现上,本实施例采用了中间结构对符号、重定位进行描述和转换。
1.解析目标文件1各个要素,解析结果用各中间结构表示。以如下结构描述ELF文件:
文件载入及基本构成解析是基于ELF文件格式的技术常识,不再赘述。
2.分解目标文件1。
从ElfObjectFile结构中提取各要素并转换为VmObject表,如下所示:
3.更新符号名。
不同目标文件格式有着不同的符号名命名方式,一般函数、变量符号名中都包含了类名、命名空间、类型等信息,可解析这些信息,并根据新规则重命名符号。可分两个步骤完成:
1)根据目标文件1的符号命名格式解析名字、类型等信息。
2)根据名字、类型等信息和目标文件2的符号命名规则构造新符号名。由于在具体实现上重定位直接使用了符号名作为重定位目标(而不是符号索引),所以应同时刷新重定位的目标符号名。
C语言的命名较为简单,ELF文件中对符号名未加修饰,即为其函数或变量名,COFF文件中,一般为函数或变量名前面加“_”。其实现如下述的RenameELFName所示:
//解析并重命名从ELF文件中解析出来的VmObject
//参数:List,从ELF文件中解析出来的所有VmObject列表
//参数:obj,要重命名的VmObject
//本函数需将所有List中的重定位的符号名VmRelocation::symname由就名字换为新名字。
4.构造新目标文件。
以如下结构表示段、符号重定位和coff文件:
1)、创建代码段、数据段、未初始化数据段等。具体实现完全是基于目标文件格式的技术常识,不赘述。
2)、添加数据,构造符号表。其实现如CoffObjectFile::AddVmSymbol所示:
3)、添加重定位,其实现如CoffObjectFile::AddVmRelocation所示。
4)、添加其它与目标文件格式及运行时库有关的必要要素。对COFF而言需要添加.drectve段以指定链接选项,加入__fltused符号以指定浮点运算。其实现如MakeFltVmObject函数所示。
本发明的跨平台目标文件复用方法的有益效果在于:通过对异构目标文件格式进行符号和结构转换,构造匹配用户所用开发工具的新的目标文件,无需改动编译器,使不同编译器生成的目标文件可以复用。通过本发明提供的方法,可以解决不同编译器目标文件格式不同,不能兼容的问题,具有可以提高兼容性、简化操作、节省成本的有益效果。
以上实施例仅为本发明的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。

Claims (7)

1.一种跨平台目标文件复用方法,其特征在于,包括以下步骤:
S1:读取第一目标文件,并解析其文件结构;
S2:根据解析结果,将所述第一目标文件以符号为单位,分解为各符号及其数据、重定位信息;
S3:对第一目标文件的符号名进行更新处理;
S4:按照第二目标文件的文件格式将分解第一目标文件得到的各符号及其数据、重定位信息构造为第三目标文件;
其中,所述第一目标文件和第二目标文件分别为通过第一编译器和第二编译器编译生成的格式不同的目标文件。
2.根据权利要求1所述的跨平台目标文件复用方法,其特征在于,第二编译器及其链接器配置为能够复用所述第三目标文件。
3.根据权利要求1所述的跨平台目标文件复用方法,其特征在于,所述符号包括函数、变量、常量。
4.根据权利要求3所述的跨平台目标文件复用方法,其特征在于,所述步骤S3具体包括:
S31:根据所述第一目标文件所属文件类型的符号名命名格式解析第一目标文件的符号名信息,符号名信息包括名字、类型,其中:
对于面向对象语言包括命名空间和类名中的至少一种;
对于函数包括调用约定和参数列表中的至少一种;
对于模板包括模板参数类型;
S32:根据所述符号名信息和所述第二目标文件的符号名命名规则构造新的符号名。
5.根据权利要求4所述的跨平台目标文件复用方法,其特征在于,在对微软的COFF文件符号名信息进行解析的情况下,步骤S31具体包括:
S311:读取第一目标文件符号名的第一个字段,如果该字段不为‘?’,判定第一目标文件符号名为根据C语言命名的符号名;
S312:根据第一目标文件符号名的第二个字段解析函数或者变量名;
S313:根据第一目标文件符号名的第三个字段解析类名/命名空间;
S314:解析第一目标文件符号名的第四个字段表示的是函数还是变量,如果是函数则根据后续字段解析函数调用约定和作用域,然后解析返回值及各参数的类型;如果是变量则根据后续字段解析变量的作用域,然后解析变量类型,再解析变量所在内存空间的访问属性。
6.根据权利要求5所述的跨平台目标文件复用方法,其特征在于,在构造微软的COFF文件符号名的情况下,步骤S32具体包括:
S321:添加C++符号标识‘?’;
S322:添加函数或者变量名;
S323:依次添加类名/命名空间的标识;
S324:如果是函数则添加调用约定标识和作用域标识,然后依次添加返回值和各参数的类型字符串及结束标识,再添加默认的异常规范标识;如果是变量则添加变量作用域字符串,然后添加变量类型字符串,再添加变量所在内存空间的访问属性标识。
7.根据权利要求4所述的跨平台目标文件复用方法,其特征在于,所述步骤S4具体包括:
S41:构造所述第三目标文件的段;
S42:添加数据,构造所述第三目标文件的符号表;
S43:添加所述第三目标文件的重定位;
S44:继续添加与所述第三目标文件格式及运行时的库有关的必要要素信息。
CN201410133527.1A 2014-04-03 2014-04-03 跨平台目标文件复用方法 Active CN103886095B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410133527.1A CN103886095B (zh) 2014-04-03 2014-04-03 跨平台目标文件复用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410133527.1A CN103886095B (zh) 2014-04-03 2014-04-03 跨平台目标文件复用方法

Publications (2)

Publication Number Publication Date
CN103886095A CN103886095A (zh) 2014-06-25
CN103886095B true CN103886095B (zh) 2017-10-24

Family

ID=50954987

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410133527.1A Active CN103886095B (zh) 2014-04-03 2014-04-03 跨平台目标文件复用方法

Country Status (1)

Country Link
CN (1) CN103886095B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104881396A (zh) * 2015-06-05 2015-09-02 南京南瑞继保电气有限公司 图形化程序的编译文件形成方法
CN105426226B (zh) * 2015-11-24 2018-07-06 无锡江南计算技术研究所 一种异构代码融合的编译和生成方法
CN107908392B (zh) * 2017-11-13 2020-12-22 平安科技(深圳)有限公司 数据采集工具包定制方法、装置、终端和存储介质
CN112394906B (zh) * 2019-08-15 2022-10-25 华为技术有限公司 一种应用切换运行的方法及设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101968736A (zh) * 2010-09-13 2011-02-09 杭州元睿信息技术有限公司 一种应用于Java到C++语言程序翻译中外部引用的翻译方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2194021A1 (en) * 1996-12-24 1998-06-24 Kevin Paul Hickman Binary class library with debugging support
CN101826014B (zh) * 2010-04-20 2013-05-08 北京邮电大学 一种软件工程源代码的分割方法
CN103514027B (zh) * 2013-11-12 2017-04-26 北京深思数盾科技股份有限公司 一种增强软件保护易用性的方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101968736A (zh) * 2010-09-13 2011-02-09 杭州元睿信息技术有限公司 一种应用于Java到C++语言程序翻译中外部引用的翻译方法

Also Published As

Publication number Publication date
CN103886095A (zh) 2014-06-25

Similar Documents

Publication Publication Date Title
Schulte et al. A multi-language computing environment for literate programming and reproducible research
EP2463771B1 (en) Method for translating a cobol source program into readable and maintainable program code in an object oriented second programming language
Burmako Scala macros: Let our powers combine! On how rich syntax and static types work with metaprogramming
Morandat et al. Evaluating the design of the R language: Objects and functions for data analysis
Van Den Brand et al. Term rewriting with traversal functions
CN101650651B (zh) 一种源代码级别程序结构的可视化方法
US20080221870A1 (en) System and method for revising natural language parse trees
CN103886095B (zh) 跨平台目标文件复用方法
Blindell Instruction Selection
Rabbani et al. Detecting source code plagiarism on. NET programming languages using low-level representation and adaptive local alignment
CN112379917A (zh) 浏览器兼容性提升方法、装置、设备及存储介质
CN103514027B (zh) 一种增强软件保护易用性的方法
Juričić Detecting source code similarity using low-level languages
US8516467B2 (en) Method and apparatus for enhancing comprehension of code time complexity and flow
CN100454244C (zh) 在标记中用于定义和使用子类说明的系统和方法
US20080141230A1 (en) Scope-Constrained Specification Of Features In A Programming Language
Fowler A pedagogical framework for domain-specific languages
JP2006011756A (ja) プログラム変換プログラム、プログラム変換装置およびプログラム変換方法
KR102614967B1 (ko) 자바스크립트의 중간 언어 기반 의미론 추출 자동화 시스템 및 방법
CN107577476A (zh) 一种基于模块划分的安卓系统源码差异性分析方法、服务器及介质
US20090037876A1 (en) Visible white space in program code
McNamara Rust in Action
Fraternali et al. Almost rerere: An approach for automating conflict resolution from similar resolved conflicts
Strolenberg ForestFIRE & FIREWood, A Toolkit & GUI for Tree Algorithms
Cepa et al. Language support for model-driven software development

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant after: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

Address before: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant before: BEIJING SHENSI SHUDUN TECHNOLOGY Co.,Ltd.

COR Change of bibliographic data
CB02 Change of applicant information

Address after: 100193 Beijing, Haidian District, East West Road, No. 10, East Hospital, building No. 5, floor 5, layer 510

Applicant after: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

Address before: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee after: Beijing Shendun Technology Co.,Ltd.

Address before: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.