CN110633073B - 基于Il2cpp编译的Unity代码混淆的方法 - Google Patents
基于Il2cpp编译的Unity代码混淆的方法 Download PDFInfo
- Publication number
- CN110633073B CN110633073B CN201910876245.3A CN201910876245A CN110633073B CN 110633073 B CN110633073 B CN 110633073B CN 201910876245 A CN201910876245 A CN 201910876245A CN 110633073 B CN110633073 B CN 110633073B
- Authority
- CN
- China
- Prior art keywords
- metadata
- character string
- global
- code
- name
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
- G06F8/434—Pointers; Aliasing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种基于Il2cpp编译的Unity代码混淆的方法,所述方法需要对global‑metadata.dat文件格式进行解析,然后对global‑metadata.dat文件部分数据混淆,再进行压缩加密的应用。还要对Unity编辑器内的Il2cpp项目代码进行修改,其中涉及对已混淆的global‑metadata.dat进行解密解压缩,还原混淆的数据;从而实现基于Il2cpp编译所生成的global‑metadata.dat文件进行代码混淆保护。
Description
技术领域
本发明涉及计算机通讯技术领域,特别是一种基于Il2cpp编译的Unity代码混淆的方法。
背景技术
目前游戏引擎Unity在电脑和手机端发布程序安装包时可选采用Il2cpp编译,其会将C#编写的文件转换成本地原生的二进制文件,同时会产生global-metadata.dat文件。该文件包含了静态文本和事件,方法,字段名称以及对应内存地址等数据,因此逆向应用通常解析global-metadata.dat文件格式并与Il2cpp二进制文件进行对应,从而达到人可理解,可阅读程序源代码,进而查找关键代码进行破解的目的。
逆向人员亦可通过解析global-metadata.dat内的静态文本内容,达到修改应用显示信息的目的,如进行翻译或改为非法文字。
现有外界虽然有加密Unity程序安装包的方案,但是在适用于基于Il2cpp编译的Unity程序安装包方面,仅做到了对Il2cpp的二进制文件进行加壳保护,并未对global-metadata.dat文件进行保护。
现有外界操作的方式,在实际项目实践中有以下缺点:
1、仅对Il2cpp编译出的二进制文件进行加壳保护。并未对global-metadata.dat进行混淆,从而暴露开发者的静态文本和事件,方法,字段名称以及对应内存地址等数据。
2、采用对C#代码进行混淆以后再进行Il2cpp编译生成二进制文件。其虽然进行了不可逆的代码混淆操作,但是要针对众多C#生成出的Dll文件进行一一混淆,操作繁琐,并在Dll互相调用的过程中因为名称意义不明,为开发者带来调试风险。
技术术语的解释:
发明内容
为克服上述问题,本发明的目的是提供一种基于Il2cpp编译的Unity代码混淆的方法,能有效抵御现有逆向应用的静态分析,为破解增加难度。
本发明采用以下方案实现:一种基于Il2cpp编译的Unity代码混淆的方法,所述方法包括不分先后顺序的编写混淆应用阶段和修改Il2cpp项目阶段;
所述编写混淆应用阶段包括如下步骤:
步骤S11、对Il2cpp编译生成的global-metadata.dat文件进行解析获取常量字符串的数量和偏移地址,并对常量字符串的数据进行加密;
步骤S12、获取名称字符串的数量和偏移地址,对名称字符串的字符串内容进行不可逆的混淆;
步骤S13、对名称字符串的全部数据进行加密;
步骤S14、删除global-metadata.dat的固定签名信息和版本号信息;
步骤S15、对global-metadata.dat全文进行压缩再加密;
所述修改Il2cpp项目阶段包括如下步骤:
步骤S21、对Unity编辑器内的Il2cpp项目进行修改,即读取压缩再加密的global-metadata.dat文件的代码部分添加解密,解压缩代码;
步骤S22、获取常量字符串的代码部分添加解密常量字符串代码;
步骤S23、获取名称字符串的代码部分添加解密名称字符串的代码。
进一步的,所述步骤S11具体为:获取基于Il2cpp编译生成的Unity安装程序包里的global-metadata.dat文件,对global-metadata.dat文件进行分析,即获取global-metadata.dat文件的签名标记对其识别,然后根据版本号载入相对应的数据头格式;根据数据头格式,获取global-metadata.dat文件的各个模块数据的偏移地址,并分别读取各个模块的数据;获取global-metadata.dat文件的常量字符串的数量和偏移地址,得到StringLiteral,所述StringLiteral为常量字符串的数量和每个字符串的长度以及索引序号,对每个字符串的数据进行加密或者多次加密。
进一步的,所述步骤S12具体为:获取global-metadata.dat文件的名称字符串的数量和偏移地址,对名称字符串的字符串内容进行不可逆的混淆,即查找global-metadata.dat文件的事件Events,方法Methods,字段的数据块Fields,获取名称字符串的索引;然后根据索引到名称字符串数据块String里查找事件名,方法名,字段名的位置和字符串内容;最后对字符串内容在字符串长度不变的情况下对其进行字符随机乱序,或者无意义字符替换,或由用户指定字符进行替换操作。
进一步的,所述步骤S13具体为:得到String,所述String为名称字符串的数量和每个字符串的长度以及索引序号,对每个字符串的数据进行加密或者多次加密,所述加密采用简单异或、取反、AES、DES、TDEA或者RC5加密算法。
进一步的,所述步骤S21与步骤S22之间进一步包括:步骤S211、在MetadataCache::Initialize函数即Metadata(元数据)初始化的方法内,对global-metadata.dat文件的签名变量sanity,以及版本变量version的判断代码进行删除或者屏蔽,进而跳过该签名和版本检测;使Unity程序在运行时不会因为global-metadata.dat文件没有签名和版本号导致后续代码无法执行进而程序崩溃。
进一步的,所述步骤S21具体为:读取压缩再加密的global-metadata.dat文件,并还原压缩再加密的global-metadata.dat文件,以达到Unity程序运行时能正常执行代码和正常显示字符串的目的;在MetadataCache::Initialize函数即Metadata初始化的方法内,载入混淆后的global-metadata.dat文件,编写与混淆应用对应的解密和解压缩代码。
进一步的,所述步骤S22具体为:在MetadataCache::GetStringLiteralFromIndex函数即根据索引号获取某个常量字符串的方法内,添加与混淆应用对应的解密代码;使Unity程序在运行时能正常执行或显示常量字符串。
进一步的,所述步骤S23具体为:在MetadataCache::InitializeGCSafe函数即初始化申请内存的方法内,添加与MetadataCache::InitializeStringLiteralTable函数即初始化常量字符串表方法相似的初始化名称字符串表方法,所述初始化名称字符串表方法为:MetadataCache::InitializeStringTable函数;之后在MetadataCache::GetStringFromIndex函数即根据索引号获取某个名称字符串的方法内,添加与混淆应用对应的解密代码。
本发明的有益效果在于:本发明在实际项目操作中得到了很好实践检验。对基于Il2cpp编译的Unity程序内的global-metadata.dat文件内的名称字符串进行不可逆的混淆以及加密,逆向应用解析崩溃;但是在经过修改后的Il2cpp项目编译出的Unity程序又能正常执行。
本发明在Unity生成的包含但不限于Mac,Linux,Windows,ios,android系统的基于Il2cpp编译的程序安装包上均可适用。
本发明应用于基于Il2cpp编译的Unity程序中的,能有效抵御现有逆向应用的静态分析,其混淆后的代码有效保护开发者原先所定义的名称,为破解增加难度。其加密步骤能保护静态文本不被逆向人员轻易修改,保护程序的正常显示。并且因为其直接修改Unity编辑器内的Il2cpp项目,因此该编辑器生成的所有程序安装包都赋有混淆功能,安装包经过混淆应用混淆以后,可以通过现有应用进行再次加固。
本发明采用程序发布后进行混淆的操作,因此在开发过程中不存在Dll互相调用时名称意义不明所带来的开发调试风险。
附图说明
图1是本发明的方法流程示意图。
图2是本发明的global-metadata.dat文件格式主要结构图。
图3是本发明应用于一实施例中的混淆保护前后在逆向应用里的效果图。
图4是本发明应用于一实施例的使用流程图。
具体实施方式
下面结合附图对本发明做进一步说明。
本发明需要对global-metadata.dat文件格式进行解析,然后对global-metadata.dat文件部分数据混淆,再进行压缩加密的应用。还要对Unity编辑器内的Il2cpp项目代码进行修改,其中涉及对已混淆的global-metadata.dat进行解密解压缩,还原混淆的数据;从而实现基于Il2cpp编译所生成的global-metadata.dat文件进行代码混淆保护。
请参阅图1所示,本发明的一种基于Il2cpp编译的Unity代码混淆的方法,所述方法包括不分先后顺序的编写混淆应用阶段和修改Il2cpp项目阶段;
所述编写混淆应用阶段包括如下步骤:
步骤S11、对Il2cpp编译生成的global-metadata.dat文件进行解析获取常量字符串的数量和偏移地址,并对常量字符串的数据进行加密;
步骤S12、获取名称字符串的数量和偏移地址,对名称字符串的字符串内容进行不可逆的混淆;
步骤S13、对名称字符串的全部数据进行加密;
步骤S14、删除global-metadata.dat的固定签名信息和版本号信息;其中,删除或替换签名标记为空字节,将版本号置为0。该不可逆的步骤能使逆向应用在解析global-metadata.dat文件时因签名和版本错误而无法正常解析,进而崩溃。
步骤S15、对global-metadata.dat全文进行压缩再加密;该操作能使逆向应用无法通过输入关键字符搜索到常量字符串以及名称字符串里的信息,其中不可逆的混淆操作导致部分名称字符串代码无法被正常阅读,以此达到保护程序的目的。
所述修改Il2cpp项目阶段包括如下步骤:
步骤S21、对Unity编辑器内的Il2cpp项目进行修改,即读取压缩再加密的global-metadata.dat文件的代码部分添加解密,解压缩代码;
步骤S22、获取常量字符串的代码部分添加解密常量字符串代码;
步骤S23、获取名称字符串的代码部分添加解密名称字符串的代码。该操作能使Unity应用在运行时能正常加载方法和属性并正确执行代码,正常显示和执行常量字符串。
在本发明中,所述步骤S11具体为:获取基于Il2cpp编译生成的Unity安装程序包里的global-metadata.dat文件,对global-metadata.dat文件进行分析,即获取global-metadata.dat文件的签名标记对其识别,然后根据版本号载入相对应的数据头格式;根据数据头格式,如图2所示,获取global-metadata.dat文件的各个模块数据的偏移地址,并分别读取各个模块的数据;获取global-metadata.dat文件的常量字符串的数量和偏移地址,得到StringLiteral,所述StringLiteral为常量字符串的数量和每个字符串的长度以及索引序号,对每个字符串的数据进行加密或者多次加密。其中加密可以使用简单异或,或者取反等自定义的加密算法,也可以使用公开的现有技术,如AES,DES,TDEA,RC5等高级对称加密算法。该步骤能使逆向应用无法通过输入关键字符搜索到常量字符串,从而定位要修改的代码块的位置。并且能防止逆向应用修改静态文本内容。
所述步骤S12具体为:获取global-metadata.dat文件的名称字符串的数量和偏移地址,对名称字符串的字符串内容进行不可逆的混淆,即查找global-metadata.dat文件的事件Events,方法Methods,字段的数据块Fields,获取名称字符串的索引;然后根据索引到名称字符串数据块String里查找事件名,方法名,字段名的位置和字符串内容;最后对字符串内容在字符串长度不变的情况下对其进行字符随机乱序,或者无意义字符替换,或由用户指定字符进行替换操作。该步骤由于使用采用不可逆的操作,能防止逆向应用对代码破解后进行还原。同时因为使用将原字符串进行无意义化,即混淆操作,能使逆向工具在显示该段代码时其事件名,方法名,字段名无法被直观理解,为破解带来难度。
进一步的,所述步骤S13具体为:得到String,所述String为名称字符串的数量和每个字符串的长度以及索引序号,对每个字符串的数据进行加密或者多次加密,所述加密采用简单异或、取反、AES、DES、TDEA或者RC5加密算法。该步骤能使逆向应用无法通过输入关键字符搜索到方法或者事件名称,从而定位要修改的方法或者事件代码的位置。
对整个global-metadata.dat文件的内容进行压缩,可使用公开的现有技术,如zip,7z,lz4,rar等压缩算法进行压缩。最后对压缩后的数据进行简单异或,或者取反等自定义的加密算法,也可以使用公开的现有技术,如AES,DES,TDEA,RC5等高级对称加密算法进行加密或者多次加密。
该加密步骤能使逆向应用无法在不破解Il2cpp二进制文件的情况下分析出global-metadata.dat文件的数据内容,而对文件的压缩步骤会减少程序安装包的尺寸和加快解密速度。
所述步骤S21具体为:nity编辑器中通常附带Il2cpp项目的部分源码和工程文件。主要修改项目中的MetadataCache.cpp文件里的代码,读取压缩再加密的global-metadata.dat文件,并还原压缩再加密的global-metadata.dat文件,以达到Unity程序运行时能正常执行代码和正常显示字符串的目的;在MetadataCache::Initialize函数即Metadata初始化的方法内,载入混淆后的global-metadata.dat文件,编写与混淆应用对应的解密和解压缩代码。其中,解密和解压缩代码即为:步骤S15中对global-metadata.dat全文进行压缩再加密对应的解密方式和解压缩方式;(比如使用者可以在混淆应用里选用以下的ZIP算法来当做压缩算法,即采用ZIP算法来压缩global-metadata.dat全文,则在修改IL2CPP项目的时候,解压缩代码的解压缩算法也是使用ZIP算法。同样的,global-metadata.dat文件在混淆应用里加密。然后再IL2CPP项目里用对应的解密算法,比如使用者在混淆应用里用AES加密算法。那么在IL2CPP项目里就要编写AES解密算法)
该步骤能使Unity程序在运行时能正常获取到global-metadata.dat文件原始的格式。
所述步骤S21与步骤S22之间进一步包括:步骤S211、在MetadataCache::Initialize函数即Metadata(元数据)初始化的方法内,对global-metadata.dat文件的签名变量sanity,以及版本变量version的判断代码进行删除或者屏蔽,进而跳过该签名和版本检测;使Unity程序在运行时不会因为global-metadata.dat文件没有签名和版本号导致后续代码无法执行进而程序崩溃。
进一步的,所述步骤S22具体为:在MetadataCache::GetStringLiteralFromIndex函数即根据索引号获取某个常量字符串的方法内,添加与混淆应用对应的解密代码;使Unity程序在运行时能正常执行或显示常量字符串。其中,解密代码为:步骤S11中对常量字符串的数据进行加密对应的解密方式(比如使用者在步骤S11中采用DES算法加密。那么此处的对应的解密代码就是为DES算法,即IL2CPP项目的解密代码是混淆应用加密代码的逆过程,他们互相对应的);该步骤能使Unity程序在运行时能正常执行或显示常量字符串。
所述步骤S23具体为:在MetadataCache::InitializeGCSafe函数即初始化申请内存的方法内,添加与MetadataCache::InitializeStringLiteralTable函数即初始化常量字符串表方法相似的初始化名称字符串表方法,所述初始化名称字符串表方法为:MetadataCache::InitializeStringTable函数;之后在MetadataCache::GetStringFromIndex函数即根据索引号获取某个名称字符串的方法内,添加与混淆应用对应的解密代码。其中,解密代码为:步骤S13中对名称字符串的全部数据进行加密对应的解密方式(比如使用者在步骤S13中采用DES算法加密。那么此处的对应的解密代码就是为DES算法,即IL2CPP项目的解密代码是混淆应用加密代码的逆过程,他们互相对应的);该步骤能使Unity程序在运行时能正常执行内部代码和导入外部代码,而不会因为名称不一致导致代码载入失败进而程序崩溃。
下面结合一具体实施对本发明作进一步说明:
先修改Unity编辑器的Il2cpp项目,在MetadataCache.cpp文件里添加解密和解压缩代码,然后删除或屏蔽签名和版本检测的代码,然后添加解密常量字符串和解密名称字符串的代码。
然后将开发者的工程项目用该Unity编辑器进行编译,并发布程序安装包。其生成的程序安装包已经是经过修改,内含的Il2cpp二进制文件可以正常执行混淆后的global-metadata.dat文件。但是其生成的程序安装包内的global-metadata.dat文件还未被混淆,需要经过混淆保护。
编写代码混淆应用,具体为应用允许用户传入一个经过修改的Unity程序安装包,应用自动判断其是否为Il2cpp编译的程序,然后在包内寻找未被混淆保护的global-metadata.dat文件。对global-metadata.dat文件进行解析,获取常量字符串数据块进行加密;获取名称字符串数据块,对其中的事件,方法,字段进行不可逆的混淆;然后再对名称字符串数据块进行加密。之后删除版本号和签名标记,最后对整个文件进行压缩加密处理。将混淆保护后的global-metadata.dat文件替换原来的文件。
在广泛应用的场景中,程序的项目工程文件经过已修改的Unity编辑器进行编译,生成程序安装包后,再经过混淆工具进行混淆,即可完成代码混淆保护和正常运行程序,如图3和图4所示。
而逆向应用因global-metadata.dat文件被混淆,而导致程序崩溃。而针对Il2cpp二进制文件进行逆向的应用因内部名称乱序无意义,无法被人轻易理解而带来破解上的难度,有效保护程序开发者的权益相关权益。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (7)
1.一种基于Il2cpp编译的Unity代码混淆的方法,其特征在于:所述方法包括不分先后顺序的编写混淆应用阶段和修改Il2cpp项目阶段;
所述编写混淆应用阶段包括如下步骤:
步骤S11、对Il2cpp编译生成的global-metadata.dat文件进行解析获取常量字符串的数量和偏移地址,并对常量字符串的数据进行加密;所述步骤S11具体为:获取基于Il2cpp编译生成的Unity安装程序包里的global-metadata.dat文件,对global-metadata.dat文件进行分析,即获取global-metadata.dat文件的签名标记对其识别,然后根据版本号载入相对应的数据头格式;根据数据头格式,获取global-metadata.dat文件的各个模块数据的偏移地址,并分别读取各个模块的数据;获取global-metadata.dat文件的常量字符串的数量和偏移地址,得到StringLiteral,所述StringLiteral为常量字符串的数量和每个字符串的长度以及索引序号,对每个字符串的数据进行加密或者多次加密;
步骤S12、获取名称字符串的数量和偏移地址,对名称字符串的字符串内容进行不可逆的混淆;
步骤S13、对名称字符串的全部数据进行加密;
步骤S14、删除global-metadata.dat的固定签名信息和版本号信息;
步骤S15、对global-metadata.dat全文进行压缩再加密;
所述修改Il2cpp项目阶段包括如下步骤:
步骤S21、对Unity编辑器内的Il2cpp项目进行修改,即读取压缩再加密的global-metadata.dat文件的代码部分添加解密,解压缩代码;
步骤S22、获取常量字符串的代码部分添加解密常量字符串代码;
步骤S23、获取名称字符串的代码部分添加解密名称字符串的代码。
2.根据权利要求1所述的一种基于Il2cpp编译的Unity代码混淆的方法,其特征在于:所述步骤S12具体为:获取global-metadata.dat文件的名称字符串的数量和偏移地址,对名称字符串的字符串内容进行不可逆的混淆,即查找global-metadata.dat文件的事件Events,方法Methods,字段的数据块Fields,获取名称字符串的索引;然后根据索引到名称字符串数据块String里查找事件名,方法名,字段名的位置和字符串内容;最后对字符串内容在字符串长度不变的情况下对其进行字符随机乱序,或者无意义字符替换,或由用户指定字符进行替换操作。
3.根据权利要求1所述的一种基于Il2cpp编译的Unity代码混淆的方法,其特征在于:所述步骤S13具体为:得到String,所述String为名称字符串的数量和每个字符串的长度以及索引序号,对每个字符串的数据进行加密或者多次加密,所述加密采用简单异或、取反、AES、DES、TDEA或者RC5加密算法。
4.根据权利要求1所述的一种基于Il2cpp编译的Unity代码混淆的方法,其特征在于:所述步骤S21与步骤S22之间进一步包括:步骤S211、在MetadataCache::Initialize函数即Metadata元数据初始化的方法内,对global-metadata.dat文件的签名变量sanity,以及版本变量version的判断代码进行删除或者屏蔽,进而跳过该签名和版本检测;使Unity程序在运行时不会因为global-metadata.dat文件没有签名和版本号导致后续代码无法执行进而程序崩溃。
5.根据权利要求1所述的一种基于Il2cpp编译的Unity代码混淆的方法,其特征在于:所述步骤S21具体为:读取压缩再加密的global-metadata.dat文件,并还原压缩再加密的global-metadata.dat文件,以达到Unity程序运行时能正常执行代码和正常显示字符串的目的;在MetadataCache::Initialize函数即Metadata初始化的方法内,载入混淆后的global-metadata.dat文件,编写与混淆应用对应的解密和解压缩代码。
6.根据权利要求1所述的一种基于Il2cpp编译的Unity代码混淆的方法,其特征在于:所述步骤S22具体为:在MetadataCache::GetStringLiteralFromIndex函数即根据索引号获取某个常量字符串的方法内,添加与混淆应用对应的解密代码;使Unity程序在运行时能正常执行或显示常量字符串。
7.根据权利要求1所述的一种基于Il2cpp编译的Unity代码混淆的方法,其特征在于:所述步骤S23具体为:在MetadataCache::InitializeGCSafe函数即初始化申请内存的方法内,添加与MetadataCache::InitializeStringLiteralTable函数即初始化常量字符串表方法相同的初始化名称字符串表方法,所述初始化名称字符串表方法为:MetadataCache::InitializeStringTable函数;之后在MetadataCache::GetStringFromIndex函数即根据索引号获取某个名称字符串的方法内,添加与混淆应用对应的解密代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910876245.3A CN110633073B (zh) | 2019-09-17 | 2019-09-17 | 基于Il2cpp编译的Unity代码混淆的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910876245.3A CN110633073B (zh) | 2019-09-17 | 2019-09-17 | 基于Il2cpp编译的Unity代码混淆的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110633073A CN110633073A (zh) | 2019-12-31 |
CN110633073B true CN110633073B (zh) | 2022-11-15 |
Family
ID=68972725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910876245.3A Active CN110633073B (zh) | 2019-09-17 | 2019-09-17 | 基于Il2cpp编译的Unity代码混淆的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110633073B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111240654B (zh) * | 2020-01-03 | 2023-03-14 | 福建天晴在线互动科技有限公司 | 一种Python代码加固保护的方法及其系统 |
CN113625995A (zh) * | 2020-05-07 | 2021-11-09 | 武汉斗鱼网络科技有限公司 | 一种自适应获取数据的方法和装置 |
CN113591089B (zh) * | 2021-08-12 | 2024-06-11 | 上海观安信息技术股份有限公司 | 一种数据混淆加密方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335151A (zh) * | 2014-08-14 | 2016-02-17 | 优视科技有限公司 | 安装文件的保护方法及装置 |
CN107908933A (zh) * | 2017-11-08 | 2018-04-13 | 北京顶象技术有限公司 | 一种基于中间语言的字符串加密方法 |
CN109740314A (zh) * | 2018-12-27 | 2019-05-10 | 杭州当虹科技股份有限公司 | 一种swf混淆加密的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2759516C (en) * | 2011-11-24 | 2019-12-31 | Ibm Canada Limited - Ibm Canada Limitee | Serialization of pre-initialized objects |
-
2019
- 2019-09-17 CN CN201910876245.3A patent/CN110633073B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335151A (zh) * | 2014-08-14 | 2016-02-17 | 优视科技有限公司 | 安装文件的保护方法及装置 |
CN107908933A (zh) * | 2017-11-08 | 2018-04-13 | 北京顶象技术有限公司 | 一种基于中间语言的字符串加密方法 |
CN109740314A (zh) * | 2018-12-27 | 2019-05-10 | 杭州当虹科技股份有限公司 | 一种swf混淆加密的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110633073A (zh) | 2019-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102582580B1 (ko) | 악성 코드 분석을 위한 전자 장치 및 이의 방법 | |
CN110633073B (zh) | 基于Il2cpp编译的Unity代码混淆的方法 | |
KR101518420B1 (ko) | 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법 | |
CN104239757B (zh) | 应用程序防止逆向的方法及装置、运行方法及终端 | |
US20180260199A1 (en) | Method and apparatus for intermediate representation of applications | |
CN104965712B (zh) | 应用程序加固保护方法、装置及移动终端 | |
CN104573416B (zh) | 一种生成应用安装包、执行应用的方法及装置 | |
CN111240654B (zh) | 一种Python代码加固保护的方法及其系统 | |
CN106203006A (zh) | 基于dex与so文件动态执行的Android应用加固方法 | |
US20160203087A1 (en) | Method for providing security for common intermediate language-based program | |
CN105630659B (zh) | 应用崩溃日志的获取方法及装置 | |
CN108363911B (zh) | 一种Python脚本混淆、水印的方法及装置 | |
CN109657488A (zh) | 一种资源文件加密处理方法、智能终端及存储介质 | |
CN107273723B (zh) | 一种基于so文件加壳的Android平台应用软件保护方法 | |
CN107291485B (zh) | 动态链接库的加固方法、运行方法、加固装置和安全系统 | |
CN112231702B (zh) | 应用保护方法、装置、设备及介质 | |
CN105335151A (zh) | 安装文件的保护方法及装置 | |
CN109241707A (zh) | 应用程序的混淆方法、装置和服务器 | |
CN109740314A (zh) | 一种swf混淆加密的方法 | |
CN109840400B (zh) | 提供安全性的设备和方法以及针对通用中间语言执行安全性的设备和方法 | |
Graux et al. | Obfuscated android application development | |
Suk et al. | UnThemida: Commercial obfuscation technique analysis with a fully obfuscated program | |
CN112035803B (zh) | 一种基于Windows平台软件的保护方法及装置 | |
CN113282294A (zh) | 基于安卓平台Java字符串混淆的方法和装置 | |
JP6698775B2 (ja) | 共有オブジェクトのコード保護のための保安提供装置と方法、及び保安実行装置と方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |