CN104091100B - 一种基于编译中间结果的软件保护方法 - Google Patents
一种基于编译中间结果的软件保护方法 Download PDFInfo
- Publication number
- CN104091100B CN104091100B CN201410334357.3A CN201410334357A CN104091100B CN 104091100 B CN104091100 B CN 104091100B CN 201410334357 A CN201410334357 A CN 201410334357A CN 104091100 B CN104091100 B CN 104091100B
- Authority
- CN
- China
- Prior art keywords
- instruction
- data
- file
- function
- obj
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000006870 function Effects 0.000 claims abstract description 54
- 230000008569 process Effects 0.000 claims abstract description 36
- 238000012545 processing Methods 0.000 claims abstract description 10
- 238000005192 partition Methods 0.000 claims description 41
- 238000012546 transfer Methods 0.000 claims description 9
- 238000003780 insertion Methods 0.000 claims description 7
- 230000037431 insertion Effects 0.000 claims description 7
- 239000000284 extract Substances 0.000 claims description 6
- 238000005194 fractionation Methods 0.000 claims description 4
- 238000005457 optimization Methods 0.000 claims description 3
- 238000012216 screening Methods 0.000 claims description 3
- 235000013399 edible fruits Nutrition 0.000 claims 1
- 238000004134 energy conservation Methods 0.000 claims 1
- 230000000694 effects Effects 0.000 abstract description 4
- 230000006399 behavior Effects 0.000 description 3
- 239000006185 dispersion Substances 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000002513 implantation Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000001256 tonic effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Storage Device Security (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种针对编译中间结果的软件保护方法,包括以下步骤:S1:将软件源代码进行编译得到原始的目标OBJ文件;S2:分析原始OBJ文件,得到针对原始OBJ文件的分拆数据;S3:对S2的分析结果进行预处理;S4:进行系统函数调用的隐藏和冗余函数插入,以及对系统使用的全局字符串进行的加密;S5:进行针对普通指令的变形;S6:将上述过程处理后得到的分散数据进行重组成OBJ文件,然后通过链接器链接成可执行文件。本发明实现了针对OBJ文件的指令级的混淆和保护,同时能够避免错误的产生,提高混淆效果和混淆质量,防止软件遭到非法破解以及分析。
Description
技术领域
本发明属于软件保护领域,具体涉及一种基于编译中间结果的软件保护方法。
背景技术
应用程序的开发包括:源代码的编写,编译器的编译的OBJ文件,以及链接器对OBJ文件的链接这一系列组成。每一个源文件对应一个OBJ文件,OBJ文件是由系统编译器对高级语言进行汇编、符号处理、字符串处理之后的产物,OBJ文件符合相应平台的文档标准,如微软COFF文件标准等。OBJ文件相较于链接后的可执行文件来说,具有更加简单的结构,以及更加灵活的数据索引以及代码调用方式,因此处理起来更加灵活,可以进行多种方式的混淆,包括混淆函数导入导出表,字符串引用,增加冗余性等等。这种操作并不影响程序原有的功能。目前,针对软件保护的措施中,有针对源代码级的软件混淆,代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。其中一种方式是将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字。这样带来了一系列的问题,如被混淆的代码难于理解,因此调试出错也变得困难起来。还有一些针对可执行文件的代码保护,主要表现为对软件加壳。加壳技术是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作,这一部分的工作可以用来对原来的指令进行预处理,将原有的程序执行流程打乱,以做到防止软件被分析和破解。以上两种方式各有优劣,源代码级别的保护很局限,对于较为底层的语言的处理能力有限,而基于可执行文件的加壳种类不多,容易被脱壳,进而将原有程序暴露给分析者。
发明内容
本发明所要解决的技术问题是提供一种针对编译结果的软件保护方法,实现针对OBJ文件的指令级的混淆和保护,同时能够避免错误的产生,以及提高混淆效果和混淆质量,防止软件遭到非法破解以及分析。
本发明的技术方案为:一种针对编译中间结果的软件保护方法,包括以下步骤:
S1:将软件源代码进行编译得到原始的目标OBJ文件;
S2:分析原始OBJ文件,得到针对原始OBJ文件的分拆数据;
S3:对S2的分析结果进行预处理;
S4:进行系统函数调用的隐藏和冗余函数插入,以及对系统使用的全局字符串进行的加密;
S5:进行针对普通指令的变形;
S6:将上述过程处理后得到的分散数据进行重组成OBJ文件,然后通过链接器链接成可执行文件。
S2步骤中分拆数据的结构依据微软编译器或者GCC编译器的OBJ规范文档COFF标准来进行,并结合混淆功能需要进行设计,分拆数据存放在内存中,分拆数据与S1步骤中OBJ文件一一对应,且能够按照拆分的逆过程进行重组,生成原始OBJ文件。
S3步骤的预处理主要进行以下方面分析:
S31:该分拆数据是否满足进行混淆的基本条件,对不达标的执行跳过混淆步骤;
S32:针对S31得到的结果,搜集混淆操作需要的数据集合,存放到固定的内存位置,提供给混淆模块访问;
S33:针对S32得到的分拆数据结果,根据混淆功能需要,调整分拆数据内容,使得其既不影响后期S6步骤重组OBJ文件功能,又辅助完成S4和S5的功能。
S3具体所做的工作包括:
1>根据模块工作内容的可行性,对其中的各种信息进行筛选,进行一些行为的预处理,包括筛选OBJ中包含的函数节、数据节、重定位节,根据混淆的类型,筛选出OBJ文件中能够进行的混淆,不能够进行的混淆,并保存下来;
2>对函数节中包含的指令进行分析和处理,分析处理相对转移指令,对这部分指令进行预处理,同时还记录和处理OBJ中包含的编译器对一些高级语言中的特殊语句进行的优化,跳过或者用特殊的处理方式处理这部分数据;
3>分析高级语言源代码中包含的全局变量定义位置和大小,以及相关联的数据,对这部分数据进行存储,为后续的混淆做铺垫。
S4步骤具体为:
S41:根据S33提供的分拆数据,提取其中系统函数调用;
S42:根据配置对提取的调用进行筛选,对能够进行隐藏的系统调用则进行下一步操作;
S43:将S42得到的系统调用的命令进行解析,提取其中API名称和模块名称;
S44:根据两部分数据,在相应的地方将原始系统调用指令替换成动态调用指令;
S45:利用随机函数,在指令序列中随机添加冗余的系统调用;
S45:根据S33提供的分拆数据,找到其中代码引用的字符串存储位置以及引用位置,并且在S33得到的分拆数据中插入解密函数节;
S46:对字符串加密,相应的在引用位置插入解密函数调用。
S4步骤中系统调用混淆包含两个方面:
S411:针对传统系统调用的隐藏,将对系统API的直接静态调用变换为动态调用;
S422:人为添加冗余的函数调用,使得在最后生成的PE文件的导入表中能够看到这些冗余的系统API,并且这些API随机的分布在很多函数中;
S4步骤中字符串加密功能,主要针对源代码中的全局字符串进行加密,全局字符串主要包括已经初始化的字符串。
S5步骤中进行针对普通指令的变形的具体步骤如下:
S51:将S33得到的分拆数据作为输入,对其中每一条指令进行判断,并且作为下一步的输入;
S52:如果S51输出结果是常规指令,则根据配置对该常规指令进行替换,替换依据为一个包含常规指令和替换指令的模板,替换类型选择根据随机算法生成;
S53:如果S51输出结果是控制转移指令,根据能否处理,进行下一步操作:如果能够处理,则根据控制转移指令的类型,对S33得到的分拆数据进行修改,用能完成相同功能的指令替换原来的指令;如果不能处理,则直接跳过执行。
S6步骤具体为:按照COFF文件标准以及拆分时的步骤进行重组,重组成OBJ文件,交给同一平台的编译器配套使用的链接器,根据原始的链接参数进行链接,链接成可执行文件。
S1步骤中采用微软编译器或者GCC编译器进行针对源代码的编译到原始的目标OBJ文件。
本发明与现有技术相比具有如下优点:
本发明实现了针对OBJ文件的指令级的混淆和保护,同时能够避免错误的产生,提高混淆效果和混淆质量,防止软件遭到非法破解以及分析。
附图说明
图1为本发明方法的流程图。
具体实施方式
根据图1的流程图,以下进行针对本发明工作流程的具体描述,但是不作为本发明的限定。
S1:使用微软提供的或者GCC等源代码编译器将软件源代码编译成中间结果,得到原始的目标OBJ文件。原始的OBJ文件能够经过同一平台链接器的链接生成原始的PE文件。
S2:分析原始OBJ文件,得到针对原始OBJ文件的分拆数据。分拆数据的结构依据微软编译器或者GCC编译器的OBJ规范文档,并结合混淆功能需要进行设计,分拆数据存放在内存中。分拆数据与上一步骤的OBJ文件一一对应,且能够按照拆分的逆过程进行重组,生成原始OBJ文件。
S3:对S2的分析结果进行预处理,为后续代码混淆做准备工作,确保混淆处理不会出现无法处理的异常。进行预处理,对S2得到的分拆数据进行预处理,获取后期混淆操作的更多确切信息,并且能够减少无法预知错误的发生。
作为该步骤的预处理分析功能,主要进行以下几方面分析:
S31:该分拆数据是否满足进行混淆的基本条件,对不达标的执行跳过混淆步骤。
S32:针对S31得到的结果,搜集混淆操作需要的数据集合,存放到固定的内存位置,提供给混淆模块访问,这部分数据是后期S5步骤必需的要素。
S33:针对S32得到的分拆数据结果,根据混淆功能需要,调整分拆数据内容,使得其既不影响后期S6步骤重组OBJ文件功能,又辅助完成S4和S5的功能。这部分数据为后期S4和S5需要的第二阶段的分拆数据。
S4:进行第一步的混淆,利用S33提供的第二阶段的分拆数据,进行系统函数调用的隐藏和冗余函数插入,以及对系统使用的全局字符串进行的加密。
具体步骤为:
S41:根据S33提供的分拆数据,提取其中系统函数调用。
S42:根据配置对提取的调用进行筛选,对能够进行隐藏的系统调用则进行下一步操作。
S43:将S42得到的系统调用的命令进行解析,提取其中API名称和模块名称。
S44:根据两部分数据,在相应的地方将原始系统调用指令替换成动态调用指令。
S45:利用随机函数,在指令序列中随机添加冗余的系统调用。
S45:根据S33提供的分拆数据,找到其中代码引用的字符串存储位置以及引用位置。并且在S33得到的分拆数据中插入解密函数节。
S46:对字符串加密,相应的在引用位置插入解密函数调用。
S5:进行针对S4过程处理结果的进一步混淆,主要进行针对普通指令的变形,这部分涉及到常规指令以及控制转移指令。
具体步骤如下:
S51:将S33得到的分拆数据作为输入,对其中每一条指令进行判断,并且作为下一步的输入。
S52:如果S51输出结果是常规指令,则根据配置对该常规指令进行替换,替换依据可以是一个包含常规指令和替换指令的模板,替换类型选择根据随机算法生成。
S53:如果S51输出结果是控制转移指令,根据能否处理,进行下一步操作:如果能够处理,则根据控制转移指令的类型,对S33得到的分拆数据进行修改,用能完成相同功能的指令替换原来的指令;如果不能处理,则直接跳过执行。
S6:将上述过程处理后得到的分散数据进行重组,按照COFF文件标准以及拆分时的步骤进行重组,重组成OBJ文件,交给同一平台的编译器配套使用的链接器,根据原始的链接参数进行链接,链接成可执行文件。
S6步骤的关键步骤是利用由S3步骤提供,经过S4和S5步骤处理后的分拆数据,解析分拆数据中包含的重组OBJ需要的数据和辅助数据,根据辅助数据修改相应的分拆数据中包含的符号表和指令。
实施例1
本发明是针对编译中间结果OBJ文件的软件混淆保护方法,包含以下步骤:
S1步骤可以直接利用微软编译器或者GCC编译器进行针对源代码的编译。
S2步骤主要包括一些基础的分析和处理工作,并且对OBJ文件按照一定的数据结构进行拆分。后期的处理都是针对这部分分拆的数据来进行的,因此,本步骤是主功能的第一步实现。
微软或者GCC提供的编译器的处理过程类似,对于中间文件的产生都是按照COFF标准来进行,之间存在极少的差异,这些差异可以通过一些兼容模块进行处理,来保证后期的分析和混淆能够正常执行。本方法只适用于C/C++语言,可以通过查找微软提供的官方文档和Windows SDK提供的一些头文件。目标文件的拆分和处理只是本发明的初始化步骤,这里就不再多余描述,具体方法可以参考以上文档。
S3步骤作为对OBJ文件处理的关键部分,S3主要做了一些能够大幅提高稳定性的工作,具体所做的工作包括:
1>根据模块工作内容的可行性,对其中的各种信息进行筛选,进行一些行为的预处理,包括筛选OBJ中包含的函数节、数据节、重定位节,根据混淆的类型,筛选出OBJ文件中能够进行的混淆,不能够进行的混淆,并保存下来。
2>对函数节中包含的指令进行分析和处理,分析处理相对转移指令,对这部分指令进行预处理。同时还记录和处理OBJ中包含的编译器对一些高级语言中的特殊语句进行的优化,跳过或者用特殊的处理方式处理这部分数据。
3>分析高级语言源代码中包含的全局变量定义位置和大小,以及相关联的数据,对这部分数据进行存储,为后续的混淆做铺垫。
S4步骤:作为对混淆的第一步实施方案,S4步骤中主要包含系统调用混淆和字符串加密两部分。
作为同一目的的两个方面,系统调用混淆包含两个方面:
S41:针对传统系统调用的隐藏,将对系统API的直接静态调用变换为动态调用。动态调用的调用过程只会留下API名称和动态库的名称,不会在最后生成的PE文件的导入表中留下痕迹。
S42:人为添加冗余的函数调用,使得在最后生成的PE文件的导入表中能够看到这些冗余的系统API,并且这些API随机的分布在很多函数中。
字符串加密功能,主要针对源代码中的全局字符串进行加密,全局字符串主要包括已经初始化的字符串,例如控制台输出的字符串、函数调用时的实参、动态调用的API名称和动态库名称等等。
S5步骤:对大量普遍存在的指令进行变形,这里的变形指令包括常规指令和控制转移指令,针对两者分别进行不同的变形模式如下:
S51:对常规指令的变形,对每一条常规指令设计多套变形模板,在不影响其他寄存器的前提下,对常规指令进行对应的替换。
S52:对控制转移指令的变形,分析控制转移类型,针对能够处理的指令类型进行变形。如下是几类变形方案:1、将CALL指令变换成RTN指令,2、将CALL指令变换成JMP指令,3、将JMP绝对跳转变成成RTN指令。变形中需要对这几类指令进行分析,搜集其中包含的符号表以及重定位信息,综合分析之后才能判断出能否进行变形。
S6步骤,对以上处理过的分拆数据进行重组,属于S2步骤的逆过程,重组过程主要的文档参照依据是微软COFF文件格式或者相应的编译器文档。
Claims (4)
1.一种针对编译中间结果的软件保护方法,其特征在于,包括以下步骤:
S1:将软件源代码进行编译得到原始目标OBJ文件;
S2:分析原始目标OBJ文件,得到针对原始目标OBJ文件的分拆数据;
S3:对S2的分析结果进行预处理;
S4:进行系统函数调用的隐藏和冗余函数插入,以及对系统使用的全局字符串进行的加密;
S5:进行针对普通指令的变形;
S6:将上述过程处理后得到的分拆数据进行重组成OBJ文件,然后通过链接器链接成可执行文件;
其中,S2步骤中分拆数据的结构依据微软编译器或者GCC编译器的OBJ规范文档COFF标准来进行,并结合混淆功能需要进行设计,分拆数据存放在内存中,分拆数据与S1步骤中原始目标OBJ文件一一对应,且能够按照分拆的逆过程进行重组,生成原始目标OBJ文件,
S3步骤的预处理主要进行以下方面分析:
S31:该分拆数据是否满足进行混淆的基本条件,对不达标的执行跳过混淆步骤;判断标准来源于后续变形操作是否能够处理;
S32:针对S31得到的结果,搜集混淆操作需要的数据集合,存放到固定的内存位置,提供给混淆模块访问;
S33:针对S32得到的分拆数据结果,根据混淆功能需要,调整分拆数据内容;
其中,S32和S33步骤的具体所做的工作包括:
1>根据模块工作内容的可行性,对其中的各种信息进行筛选,筛选的信息包括原始目标OBJ文件中包含的函数节、数据节、重定位节,同时,根据混淆的类型,筛选出原始目标OBJ文件中能够进行混淆的部分,不能够进行混淆的部分,并保存下来;
2>对函数节中包含的指令进行分析和处理,解析相对转移指令,对这部分指令进行预处理,记录其相对跳转位置,同时,还处理和记录原始目标OBJ中包含的编译器对一些高级语言中的特殊语句进行的优化,跳过或者用特殊的处理方式处理这部分数据;
3>分析高级语言源代码中包含的全局变量定义位置和大小,以及相关联的数据,对这部分数据进行存储,作为后续字符串加密的初始化数据。
2.根据权利要求1所述的一种针对编译中间结果的软件保护方法,其特征在于,S4步骤具体为:
S41:根据S33处理得到的分拆数据,提取其中系统函数调用的信息;
S42:对提取的调用进行筛选,保存下能够进行隐藏的系统调用,根据人的主动选择或者随机算法的选择,来确定要进行下一步需要隐藏的系统调用,进行下一步操作;
S43:将S42得到的系统调用的指令进行解析,提取其中API名称和模块名称;
S44:根据S43得到的两部分数据,在进行系统调用的指令位置,将原始系统调用指令替换成动态调用指令,动态调用方法为利用LoadLibrary加载该API所属动态库和利用GetProcAddress获得函数地址,然后跳转到该函数地址;
S45:利用随机函数,在指令序列中随机添加冗余的系统调用;
S46:根据S33提供的分拆数据,找到引用字符串的指令以及字符串的存储位置,对能够加密的字符串引用类型进行处理,该处理包括:1、找到字符串存储位置,对字符串加密,2、插入对应加密方式的解密函数节,该函数节能够对传入的加密字符串进行解密,返回解密的字符串,3、在引用该字符串的指令前插入对解密函数节的调用,使其在将字符串解密之后,继续之前的指令流程。
3.根据权利要求2所述的一种针对编译中间结果的软件保护方法,其特征在于,S5步骤中进行针对普通指令的变形的具体步骤如下:
S51:实现一个膨胀引擎,将S33得到的分拆数据作为输入,对其中每一条指令进行判断,并且作为下一步的输入;
S52:如果S51输出结果是常规指令,则根据配置对该常规指令进行替换,替换依据为一个事先定义好的模板,模板里包含了针对一条指令的膨胀方式,配置包括膨胀引擎如何选择模板以及运用几次模板;
S53:如果S51输出结果是控制转移指令,根据预处理得到的结果,进行下一步操作:如果能够处理,则根据控制转移指令的类型,用能完成相同功能的指令替换原来的指令;如果不能处理,则直接跳过执行。
4.根据权利要求3所述的一种针对编译中间结果的软件保护方法,其特征在于,S6步骤具体为:按照COFF文件标准以及拆分时的步骤进行重组,重组成OBJ文件,交给同一平台的编译器配套使用的链接器,根据原始的链接参数进行链接,链接成可执行文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410334357.3A CN104091100B (zh) | 2014-07-15 | 2014-07-15 | 一种基于编译中间结果的软件保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410334357.3A CN104091100B (zh) | 2014-07-15 | 2014-07-15 | 一种基于编译中间结果的软件保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104091100A CN104091100A (zh) | 2014-10-08 |
CN104091100B true CN104091100B (zh) | 2017-02-15 |
Family
ID=51638816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410334357.3A Expired - Fee Related CN104091100B (zh) | 2014-07-15 | 2014-07-15 | 一种基于编译中间结果的软件保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104091100B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104978525A (zh) * | 2014-11-18 | 2015-10-14 | 哈尔滨安天科技股份有限公司 | 一种基于结构化异常的启发式脚本检测方法及系统 |
CN105005718B (zh) * | 2015-06-23 | 2018-02-13 | 电子科技大学 | 一种利用马尔可夫链实现代码混淆的方法 |
CN108304187A (zh) * | 2016-08-24 | 2018-07-20 | 北京花甲科技有限公司 | 一种静态库的生成方法以及设备 |
CN106126981B (zh) * | 2016-08-30 | 2019-04-02 | 电子科技大学 | 基于虚拟函数表替换的软件安全防护方法 |
CN106650340B (zh) * | 2016-11-16 | 2019-12-06 | 中国人民解放军国防科学技术大学 | 一种采用动态细粒度代码隐藏与混淆技术的二进制软件保护方法 |
CN106682460B (zh) * | 2016-11-25 | 2019-05-31 | 西北大学 | 一种基于两次变换的代码混淆方法 |
CN106598882B (zh) * | 2016-12-09 | 2019-09-20 | 武汉斗鱼网络科技有限公司 | 一种安全的内存数据保护方法及装置 |
CN106548049A (zh) * | 2016-12-09 | 2017-03-29 | 武汉斗鱼网络科技有限公司 | 一种代码处理方法和装置 |
CN106951745B (zh) * | 2017-03-31 | 2019-10-18 | 北京深思数盾科技股份有限公司 | 一种指令重组方法和装置 |
CN107908933B (zh) * | 2017-11-08 | 2020-08-28 | 北京顶象技术有限公司 | 一种基于中间语言的字符串加密方法 |
CN108460254B (zh) * | 2018-03-13 | 2020-05-22 | 北京顶象技术有限公司 | 固件保护方法及装置 |
CN108595921B (zh) * | 2018-03-22 | 2020-11-13 | 北京奇艺世纪科技有限公司 | 一种源代码中字符串的混淆方法和装置 |
CN108897994B (zh) * | 2018-06-19 | 2022-07-08 | 广州华多网络科技有限公司 | 隐藏导入表的方法、装置、存储介质和计算机设备 |
CN111125644B (zh) * | 2018-11-01 | 2022-05-27 | 百度在线网络技术(北京)有限公司 | 应用产品的信息隐藏方法和装置 |
CN110717150A (zh) * | 2019-10-08 | 2020-01-21 | 北京顶象技术有限公司 | 代码保护方法、装置、保护设备及可读存储介质 |
CN111159662A (zh) * | 2019-12-25 | 2020-05-15 | 郑州阿帕斯数云信息科技有限公司 | 一种数据的处理方法和装置 |
CN111506437A (zh) * | 2020-03-31 | 2020-08-07 | 北京安码科技有限公司 | 基于windows原始调用接口的靶场应用程序调用方法、系统、电子设备及存储介质 |
CN112528342B (zh) * | 2020-12-29 | 2022-06-28 | 内蒙古工业大学 | 一种基于编译中间结果的软件保护方法 |
CN113282892A (zh) * | 2021-04-16 | 2021-08-20 | 南方电网数字电网研究院有限公司 | 代码混淆方法、装置、计算机设备和存储介质 |
TWI788240B (zh) * | 2022-03-11 | 2022-12-21 | 華邦電子股份有限公司 | 電子裝置及其資料傳輸方法 |
CN115643021B (zh) * | 2022-09-28 | 2023-07-21 | 深圳市财富趋势科技股份有限公司 | 基于动态编码的终端防护方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102890758A (zh) * | 2012-10-11 | 2013-01-23 | 北京深思洛克软件技术股份有限公司 | 一种保护可执行文件的方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7430670B1 (en) * | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
-
2014
- 2014-07-15 CN CN201410334357.3A patent/CN104091100B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102890758A (zh) * | 2012-10-11 | 2013-01-23 | 北京深思洛克软件技术股份有限公司 | 一种保护可执行文件的方法及系统 |
Non-Patent Citations (1)
Title |
---|
基于微软COFF平台的中间代码混淆技术研究;司斯;《中国优秀硕士学位论文全文数据库》;20131015;第4章 * |
Also Published As
Publication number | Publication date |
---|---|
CN104091100A (zh) | 2014-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104091100B (zh) | 一种基于编译中间结果的软件保护方法 | |
US7974942B2 (en) | Data masking system and method | |
CN100498712C (zh) | 用于生成受保护可执行程序的设备、存储介质和方法 | |
Agosta et al. | A code morphing methodology to automate power analysis countermeasures | |
CN106599628B (zh) | 一种基于模块钩子的Python字节码文件保护方法 | |
CN104680039B (zh) | 一种应用程序安装包的数据保护方法及装置 | |
CN106126981B (zh) | 基于虚拟函数表替换的软件安全防护方法 | |
CN105683990B (zh) | 用于保护动态库的方法和装置 | |
CN108363911B (zh) | 一种Python脚本混淆、水印的方法及装置 | |
CN103413073B (zh) | 一种保护java可执行程序的方法及设备 | |
CN105354449A (zh) | 一种面向Lua语言的加扰混淆方法和解密方法 | |
CN106203006A (zh) | 基于dex与so文件动态执行的Android应用加固方法 | |
KR101861341B1 (ko) | 애플리케이션 코드의 역난독화 장치 및 이를 이용한 애플리케이션 코드의 역난독화 방법 | |
CN101568927A (zh) | 混淆计算机程序代码 | |
CN108491235A (zh) | 结合动态加载和函数Native化的DEX保护方法 | |
KR101234591B1 (ko) | Jni를 이용한 안드로이드 난독화 방법 | |
US20110271350A1 (en) | method for protecting software | |
CN110096853A (zh) | 基于Mono的Unity安卓应用加固方法、存储介质 | |
CN104462990A (zh) | 字符串加解密方法和装置 | |
Balachandran et al. | Software code obfuscation by hiding control flow information in stack | |
CN104866734A (zh) | 一种dex文件的保护方法及装置 | |
CN105653905A (zh) | 一种基于api安全属性隐藏与攻击威胁监控的软件保护方法 | |
US10867017B2 (en) | Apparatus and method of providing security and apparatus and method of executing security for common intermediate language | |
CN109740314A (zh) | 一种swf混淆加密的方法 | |
JP2017509942A (ja) | 暗号アルゴリズムで使用されるときに秘密データを保護する方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170215 |