CN103064687B - 一种程序入口点oep的确定方法及装置 - Google Patents
一种程序入口点oep的确定方法及装置 Download PDFInfo
- Publication number
- CN103064687B CN103064687B CN201210587608.XA CN201210587608A CN103064687B CN 103064687 B CN103064687 B CN 103064687B CN 201210587608 A CN201210587608 A CN 201210587608A CN 103064687 B CN103064687 B CN 103064687B
- Authority
- CN
- China
- Prior art keywords
- data rewriting
- memory
- data
- address
- region
- 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
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种程序入口点OEP的确定方法及装置,该方法包括:记录加壳程序运行过程中产生的数据改写信息,所述数据改写信息包括数据改写地址和数据改写时间;根据记录的数据改写信息确定所述加壳程序运行过程中进入后直到结束没有离开的内存区域;获取记录每条数据改写信息后所述内存区域中每个内存地址的数据,并根据获取的数据计算在对应的数据改写信息中包括的数据改写时间的所述内存区域的熵值;获取熵值开始大于等于设定阈值的数据改写时间对应的数据改写地址为所述加壳程序对应的原始程序的OEP。该方案可以适用于确定各种加壳程序对应的原始程序的OEP,方法简单,效率高。
Description
技术领域
本发明涉及计算机技术领域,尤指一种程序入口点OEP的确定方法及装置
背景技术
加壳是可执行程序资源压缩的简称,是保护文件的常用手段,其原理是利用特殊的算法,对可执行程序里的资源进行压缩、加密。加壳程序可以直接运行,但是不能获取原始程序,要经过脱壳才可以获取。脱壳的过程主要为三步:第一步,确定原始程序的入口点(OriginalEntryPoint,OEP);第二步,修复导入表和重定位表;第三步,将内存中的原始程序写入文件,更改程序的新入口地址为OEP,这一步通常称为转储(Dump)。确定原始程序的OEP是非常关键的步骤。
目前,在确定原始程序的OEP时,通常会采用特征定位法,根据已知类型壳的特征来确定加壳程序对应的原始程序的OEP,现有的产品有针对具体壳的脱壳脚本或自动脱壳机等。这种方法在确定OEP时成功率很高,但是一旦已知类型壳升级可能导致特征定位失效,并且对于确定使用未知类型壳的加壳程序对应的原始程序的OEP不能使用。因此,现有的确定程序OEP方法并不能普遍适用于确定各种加壳程度对应的原始程序的OEP。
发明内容
本发明实施例提供一种程序入口点OEP的确定方法及装置,用以解决现有的确定程序OEP的方法适用范围有限的问题。
一种程序入口点OEP的确定方法,包括:
记录加壳程序运行过程中产生的数据改写信息,所述数据改写信息包括数据改写地址和数据改写时间;
根据记录的数据改写信息确定所述加壳程序运行过程中进入后直到结束没有离开的内存区域;
获取记录每条数据改写信息后所述内存区域中每个内存地址的数据,并根据获取的数据计算在对应的数据改写信息中包括的数据改写时间的所述内存区域的熵值;
获取熵值开始大于等于设定阈值的数据改写时间对应的数据改写地址为所述加壳程序对应的原始程序的OEP。
一种程序入口点OEP的确定装置,包括:
记录单元,用于记录加壳程序运行过程中产生的数据改写信息,所述数据改写信息包括数据改写地址和数据改写时间;
确定单元,用于根据记录的数据改写信息确定所述加壳程序运行过程中进入后直到结束没有离开的内存区域;
计算单元,用于获取记录每条数据改写信息后所述内存区域中每个内存地址的数据,并根据获取的数据计算在对应的数据改写信息中包括的数据改写时间的所述内存区域的熵值;
获取单元,用于获取熵值开始大于等于设定阈值的数据改写时间对应的数据改写地址为所述加壳程序对应的原始程序的OEP。
本发明有益效果如下:
本发明实施例提供的程序入口点OEP的确定方法及装置,通过记录加壳程序运行过程中产生的数据改写信息,所述数据改写信息包括数据改写地址和数据改写时间;根据记录的数据改写信息确定所述加壳程序运行过程中进入后直到结束没有离开的内存区域;获取记录每条数据改写信息后所述内存区域中每个内存地址的数据,并根据获取的数据计算在对应的数据改写信息中包括的数据改写时间的所述内存区域的熵值;获取熵值开始大于等于设定阈值的数据改写时间对应的数据改写地址为所述加壳程序对应的原始程序的OEP。该方案可以适用于确定各种加壳程序对应的原始程序的OEP,方法简单,效率高。
附图说明
图1为本发明实施例中程序入口点OEP的确定方法的流程图;
图2为本发明实施例中的可执行程序的结构示意图;
图3为本发明实施例中程序入口点OEP的确定装置的结构示意图。
具体实施方式
针对现有中确定OEP的方法适用范围有限的问题,本发明实施例提供一种程序入口点OEP的确定方法,该方法的流程如图1所示,执行步骤如下:
S10:记录加壳程序运行过程中产生的数据改写信息,数据改写信息包括数据改写地址和数据改写时间。
可以使用虚拟机或者调试器等运行加壳程序,并记录运行过程中产生的数据改写信息。
S11:根据记录的数据改写信息确定加壳程序运行过程中进入后直到结束没有离开的内存区域。
加壳程序运行的过程中,运行到OEP后,原始程序已还原,后面的流程都是执行原始程序的流程。假设原始程序运行在内存区域A中,那么当到达原始程序的OEP后,即进入内存区域A,直到加壳程序运行结束再也不会离开内存区域A,则时刻T进入内存区域A的那个地址,就是OEP。因此,可以根据记录的数据改写信息确定加壳程序运行过程中进入后直到结束没有离开的内存区域。
S12:获取记录每条数据改写信息后内存区域中每个内存地址的数据,并根据获取的数据计算在对应的数据改写信息中包括的数据改写时间的内存区域的熵值。
在确定出内存区域A后,可以进一步确定到达OEP的数据改写地址和数据改写时间,因为到达内存区域A的时间不一定是到达OEP的时间。可以通过计算每次数据改写后内存区域的熵值来确定到达OEP的数据改写地址和数据改写时刻。
S13:获取熵值开始大于等于设定阈值的数据改写时间对应的数据改写地址为加壳程序对应的原始程序的OEP。
运行加壳程序时,如果在执行壳的代码,内存区域的熵值一般比较小,一旦还原了原始程序,开始执行原始程序的代码后,内存区域的熵值就会变大,并且在执行原始程序的过程中,内存区域的熵值基本不变,因此,可以预先确定一个设定阈值,当熵值开始大于等于设定阈值的数据改写时间对应的数据改写地址就可以认为是加壳程序对应的原始程序的OEP。设定阈值可以根据统计结果预先确定,例如可以为0.9。当然也可以根据统计确定为其他值,这里仅仅是举例进行说明。
该方案可以适用于确定各种加壳程序对应的原始程序的OEP,方法简单,效率高。
具体的,数据改写信息还包括数据改写执行地址时,上述S11中的根据记录的数据改写信息确定加壳程序运行过程中进入后直到结束没有离开的内存区域,具体包括:遍历记录的数据改写信息,获取在连续的数据改写时间对应的时间长度内,数据改写地址连续且连续的数据改写地址对应的内存地址范围大于等于设定长度的内存地址范围作为待选内存区域;根据所述数据改写信息中包括的数据改写执行地址,确定加壳程序运行过程中进入后直到结束没有离开的最后一个待选内存区域作为内存区域。
由于很多壳在还原原始程序的过程中,会连续改写,也就是说数据改写地址连续是连续的,当连续的数据改写地址的内存地址范围大于等于设定长度时,该内存地址范围可以作为待选内存区域,确定每个待选内存区域对应的时间长度内的数据改写执行地址,若所有的数据改写执行地址都落入对应的待选内存区域内,该待选内存区域为选定内存区域,按时间先后顺序将得到的选定内存区域中的最后一个作为内存区域。设定长度可以根据实际需要进行设定,例如设为512等等。
较佳的,上述程序OEP的确定方法,还包括:记录加壳程序运行过程中产生的模块加载信息,模块加载信息包括加壳程序映射到内存中的基地址和结束地址;以及根据记录的数据改写信息和模块加载信息确定加壳程序运行过程中进入后直到结束没有离开的内存区域。
还可以使用虚拟机或者调试器等运行加壳程序,并记录运行过程中产生的模块加载信息。
那么就可以根据记录的数据改写信息和模块加载信息共同确定加壳程序运行过程中进入后直到结束没有离开的内存区域。
具体的,上述根据记录的数据改写信息和模块加载信息确定加壳程序运行过程中进入后直到结束没有离开的内存区域,可以包括两种方式:
第一种方式,获取加壳程序运行过程中最后一条数据改写信息中包括的数据改写地址;将基地址与获取的最后一条数据改写信息中包括的数据改写地址之间的内存地址范围作为内存区域。
在windows上,可执行程序的格式为可移植执行(PortableExecute,PE)文件格式,常见的扩展名包括exe、dll、sys等。PE文件格式主要由PE头部、节表、节组成,PE文件格式的节保存了原始程序运行的代码节、数据节、资源节等,如图2所示为可执行程序映射到内存空间的示意图,代码节一般是在“基地址-----数据节”的内存地址范围之间,OEP在代码节中,所以可以将代码节与基地址之间的内存地址范围记为内存区域。图2所示为壳还原原始程序的过程,带箭头的实线表示写操作,箭头指向者表示被写的区域。带箭头的虚线表示跳转,箭头指向者表示跳转过去要执行的位置。
利用回溯法,找到加壳程序运行过程中最后一条数据改写信息中包括的数据改写地址,可以认为这次数据改写是加壳程序到达OEP之后才执行的,根据这次改写数据的数据改写地址,可以得到数据节的大致地址;将基地址与获取的最后一条数据改写信息中包括的数据改写地址之间的内存地址范围作为内存区域。
第二种方式,若模块加载信息中包括加壳程序对应的原始程序的资源节,确定资源节映射到内存中的最小内存地址;将基地址与最小内存地址之间的内存地址范围作为内存区域。
首先判断原始程序是否有资源节,若有,确定资源节映射到内存中的最小内存地址;将基地址与最小内存地址之间的内存地址范围作为内存区域。
由于壳很少更改PE文件的资源节,所以可以根据记录的模块加载信息,解析PE文件得到资源节映射到内存中的最小内存地址,设最小内存地址为X,从而得到一个“基地址-----X”的内存地址范围,将该内存地址范围作为内存区域。
具体的,上述S12中的根据获取的数据计算在对应的数据改写信息中包括的数据改写时间的内存区域的熵值,具体包括:确定内存地址中的数据可能的种类;根据获取的数据统计确定出的每种数据出现的次数,以及获取的数据的总个数;用每种数据出现的次数除以获取的数据的总个数得到对应数据出现的频率,计算得到的频率的均值;计算得到的频率的方差,方差作为在对应的数据改写信息中包括的数据改写时间的内存区域的熵值。
在计算机中,一个字节为8位,所以每个字节可以有28=256种数据,统计获取的内存中的字节有相同数据出现的次数,由于还原原始程序后很多内存地址中的数据为0,可以不用统计数据为0出现的次数,也就相当于数据可能的种类是255,用每种数据出现的次数除以获取的数据的总个数即可得到对应数据出现的频率,假设每种数据出现的次数分别为X1、X2……Xn,获取的数据的总个数为N,那么每种数据出现的频率x1=X1/N、x2=X2/N……xn=Xn/N。
计算这些频率的均值x=(x1+x2+……+xn)/255,再计算这些频率的方差s2=[(x1-x)2+(x2-x)2+……+(xn-x)2]/255,此方差作为在对应的数据改写信息中包括的数据改写时间的内存区域的熵值,次方差是恒小于1,也就是说内存区域的熵值恒小于1。
当内存地址中的数据的位数变化时,计算过程是类似的,这里不再赘述。
基于同一发明构思,本发明实施例提供一种程序入口点OEP的确定装置,该装置的结构如图3所示,包括:
记录单元30,用于记录加壳程序运行过程中产生的数据改写信息,数据改写信息包括数据改写地址和数据改写时间。
确定单元31,用于根据记录的数据改写信息确定加壳程序运行过程中进入后直到结束没有离开的内存区域。
计算单元32,用于获取记录每条数据改写信息后内存区域中每个内存地址的数据,并根据获取的数据计算在对应的数据改写信息中包括的数据改写时间的内存区域的熵值。
获取单元33,用于获取熵值开始大于等于设定阈值的数据改写时间对应的数据改写地址为加壳程序对应的原始程序的OEP。
具体的,数据改写信息好包括数据改写执行地址时,上述确定单元31,具体用于:遍历记录的数据改写信息,获取在连续的数据改写时间对应的时间长度内,数据改写地址连续且连续的数据改写地址对应的内存地址范围大于等于设定长度的内存地址范围作为待选内存区域;根据所述数据改写信息中包括的数据改写执行地址,确定加壳程序运行过程中进入后直到结束没有离开的最后一个待选内存区域作为内存区域。
较佳的,上述记录单元30,还用于记录加壳程序运行过程中产生的模块加载信息,模块加载信息包括加壳程序映射到内存中的基地址和结束地址。
上述确定单元31,还用于根据记录的数据改写信息和模块加载信息确定加壳程序运行过程中进入后直到结束没有离开的内存区域。
具体的,上述确定单元31,具体用于:获取加壳程序运行过程中最后一条数据改写信息中包括的数据改写地址;将基地址与获取的最后一条数据改写信息中包括的数据改写地址之间的内存地址范围作为内存区域。
具体的,上述确定单元31,具体用于:若模块加载信息中包括加壳程序对应的原始程序的资源节,确定资源节映射到内存中的最小内存地址;将基地址与最小内存地址之间的内存地址范围作为内存区域。
具体的,上述计算单元32,具体用于:确定内存地址中的数据可能的种类;根据获取的数据统计确定出的每种数据出现的次数,以及获取的数据的总个数;用每种数据出现的次数除以获取的数据的总个数得到对应数据出现的频率,计算得到的频率的均值;计算得到的频率的方差,方差作为在对应的数据改写信息中包括的数据改写时间的内存区域的熵值。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种程序入口点OEP的确定方法,其特征在于,包括:
记录加壳程序运行过程中产生的数据改写信息,所述数据改写信息包括数据改写地址和数据改写时间;
根据记录的数据改写信息确定所述加壳程序运行过程中进入后直到结束没有离开的内存区域;
获取记录每条数据改写信息后所述内存区域中每个内存地址的数据,并根据获取的数据计算在对应的数据改写信息中包括的数据改写时间的所述内存区域的熵值;
获取熵值开始大于等于设定阈值的数据改写时间对应的数据改写地址为所述加壳程序对应的原始程序的OEP。
2.如权利要求1所述的方法,其特征在于,所述数据改写信息还包括数据改写执行地址,根据记录的数据改写信息确定所述加壳程序运行过程中进入后直到结束没有离开的内存区域,具体包括:
遍历记录的数据改写信息,获取在连续的数据改写时间对应的时间长度内,数据改写地址连续且连续的数据改写地址对应的内存地址范围大于等于设定长度的内存地址范围作为待选内存区域;
根据所述数据改写信息中包括的数据改写执行地址,确定所述加壳程序运行过程中进入后直到结束没有离开的最后一个待选内存区域作为所述内存区域。
3.如权利要求1所述的方法,其特征在于,还包括:
记录所述加壳程序运行过程中产生的模块加载信息,所述模块加载信息包括所述加壳程序映射到内存中的基地址和结束地址;以及
根据记录的数据改写信息和模块加载信息确定所述加壳程序运行过程中进入后直到结束没有离开的内存区域。
4.如权利要求3所述的方法,其特征在于,根据记录的数据改写信息和模块加载信息确定所述加壳程序运行过程中进入后直到结束没有离开的内存区域,具体包括:
获取所述加壳程序运行过程中最后一条数据改写信息中包括的数据改写地址;
将所述基地址与获取的最后一条数据改写信息中包括的数据改写地址之间的内存地址范围作为所述内存区域。
5.如权利要求1所述的方法,其特征在于,根据记录的数据改写信息和模块加载信息确定所述加壳程序运行过程中进入后直到结束没有离开的内存区域,具体包括:
若模块加载信息中包括加壳程序对应的原始程序的资源节,确定所述资源节映射到内存中的最小内存地址;
将基地址与所述最小内存地址之间的内存地址范围作为所述内存区域。
6.如权利要求1-5任一所述的方法,其特征在于,根据获取的数据计算在对应的数据改写信息中包括的数据改写时间的所述内存区域的熵值,具体包括:
确定内存地址中的数据可能的种类;
根据获取的数据统计确定出的每种数据出现的次数,以及获取的数据的总个数;
用每种数据出现的次数除以获取的数据的总个数得到对应数据出现的频率,计算得到的频率的均值;
计算得到的频率的方差,所述方差作为在对应的数据改写信息中包括的数据改写时间的所述内存区域的熵值。
7.一种程序入口点OEP的确定装置,其特征在于,包括:
记录单元,用于记录加壳程序运行过程中产生的数据改写信息,所述数据改写信息包括数据改写地址和数据改写时间;
确定单元,用于根据记录的数据改写信息确定所述加壳程序运行过程中进入后直到结束没有离开的内存区域;
计算单元,用于获取记录每条数据改写信息后所述内存区域中每个内存地址的数据,并根据获取的数据计算在对应的数据改写信息中包括的数据改写时间的所述内存区域的熵值;
获取单元,用于获取熵值开始大于等于设定阈值的数据改写时间对应的数据改写地址为所述加壳程序对应的原始程序的OEP。
8.如权利要求7所述的装置,其特征在于,所述数据改写信息还包括数据改写执行地址,所述确定单元,具体用于:
遍历记录的数据改写信息,获取在连续的数据改写时间对应的时间长度内,数据改写地址连续且连续的数据改写地址对应的内存地址范围大于等于设定长度的内存地址范围作为待选内存区域;
根据所述数据改写信息中包括的数据改写执行地址,确定所述加壳程序运行过程中进入后直到结束没有离开的最后一个待选内存区域作为所述内存区域。
9.如权利要求7所述的装置,其特征在于,所述记录单元,还用于记录所述加壳程序运行过程中产生的模块加载信息,所述模块加载信息包括所述加壳程序映射到内存中的基地址和结束地址;
所述确定单元,还用于根据记录的数据改写信息和模块加载信息确定所述加壳程序运行过程中进入后直到结束没有离开的内存区域。
10.如权利要求7所述的装置,其特征在于,所述确定单元,具体用于:
获取所述加壳程序运行过程中最后一条数据改写信息中包括的数据改写地址;
将基地址与获取的最后一条数据改写信息中包括的数据改写地址之间的内存地址范围作为所述内存区域。
11.如权利要求7所述的装置,其特征在于,所述确定单元,具体用于:
若模块加载信息中包括加壳程序对应的原始程序的资源节,确定所述资源节映射到内存中的最小内存地址;
将基地址与所述最小内存地址之间的内存地址范围作为所述内存区域。
12.如权利要求7-11任一所述的装置,其特征在于,所述计算单元,具体用于:
确定内存地址中的数据可能的种类;
根据获取的数据统计确定出的每种数据出现的次数,以及获取的数据的总个数;
用每种数据出现的次数除以获取的数据的总个数得到对应数据出现的频率,计算得到的频率的均值;
计算得到的频率的方差,所述方差作为在对应的数据改写信息中包括的数据改写时间的所述内存区域的熵值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210587608.XA CN103064687B (zh) | 2012-12-28 | 2012-12-28 | 一种程序入口点oep的确定方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210587608.XA CN103064687B (zh) | 2012-12-28 | 2012-12-28 | 一种程序入口点oep的确定方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103064687A CN103064687A (zh) | 2013-04-24 |
CN103064687B true CN103064687B (zh) | 2016-02-24 |
Family
ID=48107325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210587608.XA Active CN103064687B (zh) | 2012-12-28 | 2012-12-28 | 一种程序入口点oep的确定方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103064687B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107784204B (zh) * | 2016-08-31 | 2021-10-22 | 百度在线网络技术(北京)有限公司 | 应用脱壳方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184103A (zh) * | 2011-05-12 | 2011-09-14 | 电子科技大学 | 软件保护壳的壳特征提取方法 |
-
2012
- 2012-12-28 CN CN201210587608.XA patent/CN103064687B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184103A (zh) * | 2011-05-12 | 2011-09-14 | 电子科技大学 | 软件保护壳的壳特征提取方法 |
Non-Patent Citations (2)
Title |
---|
Generic Unpacking using Entropy Analysis;Guhyeon Jeong等;《Malicious and Unwanted Software(MALWARE),2010》;20101020;第98-105页 * |
基于代码与壳互动技术的软件保护方法研究;陈勤等;《计算机工程与科学》;20061231;第28卷(第12期);第36-37页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103064687A (zh) | 2013-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110377226B (zh) | 基于存储引擎bluestore的压缩方法、装置及存储介质 | |
CN105487987B (zh) | 一种处理并发顺序读io的方法及装置 | |
US20130198148A1 (en) | Estimating data reduction in storage systems | |
CN104750620A (zh) | 一种内存迁移方法及装置 | |
US9977598B2 (en) | Electronic device and a method for managing memory space thereof | |
WO2020220971A1 (zh) | 一种文件加载方法、装置、电子设备及存储介质 | |
CN102087604A (zh) | 可获取硬件配置信息的计算机及其方法 | |
CN104346194A (zh) | 一种启动文件加载方法、装置及电子设备 | |
CN103577278A (zh) | 用于数据备份的方法和系统 | |
CN105446975A (zh) | 一种文件打包方法及装置 | |
WO2018210080A1 (zh) | 一种数据同步方法、装置、设备及计算机可读存储介质 | |
CN101546321B (zh) | 一种移动存储设备的断点续传的方法 | |
CN101546250A (zh) | 实现移动存储设备断点续传的系统 | |
CN103064687B (zh) | 一种程序入口点oep的确定方法及装置 | |
CN103019739B (zh) | 重定位表的修复方法、程序脱壳方法及相关装置 | |
US20140258247A1 (en) | Electronic apparatus for data access and data access method therefor | |
US11755540B2 (en) | Chunking method and apparatus | |
CN111209257A (zh) | 一种文件系统碎片化的方法及装置 | |
CN104700030A (zh) | 一种病毒数据查找方法、装置及服务器 | |
CN101546251B (zh) | 断点续传的移动存储设备 | |
CN104375871B (zh) | 一种基于eMMC加速系统开机的方法和装置 | |
CN108491483B (zh) | 一种远程监控程序运行状态的方法和装置 | |
CN115460196A (zh) | 文件传输方法及装置、存储介质、电子设备 | |
CN104778101A (zh) | 移动终端系统备份和还原方法、移动终端、计算机及系统 | |
CN201188221Y (zh) | 断点续传的移动存储设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100089 Beijing city Haidian District Road No. 4 North wa Yitai three storey building Patentee after: NSFOCUS Technologies Group Co.,Ltd. Patentee after: NSFOCUS TECHNOLOGIES Inc. Address before: 100089 Beijing city Haidian District Road No. 4 North wa Yitai three storey building Patentee before: NSFOCUS INFORMATION TECHNOLOGY Co.,Ltd. Patentee before: NSFOCUS TECHNOLOGIES Inc. |
|
CP01 | Change in the name or title of a patent holder |