CN110032425A - 一种动态链接库文件虚拟化方法、系统及存储介质 - Google Patents
一种动态链接库文件虚拟化方法、系统及存储介质 Download PDFInfo
- Publication number
- CN110032425A CN110032425A CN201910221992.3A CN201910221992A CN110032425A CN 110032425 A CN110032425 A CN 110032425A CN 201910221992 A CN201910221992 A CN 201910221992A CN 110032425 A CN110032425 A CN 110032425A
- Authority
- CN
- China
- Prior art keywords
- file
- dynamic link
- link library
- library file
- bitcode
- 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.)
- Granted
Links
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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种动态链接库文件虚拟化方法、系统及存储介质,使用编译器开启嵌入bitcode选项,将C/C++代码编译成带有bitcode信息的动态链接库文件,并加入APP中签名打包成APK文件;将APK文件上传至云平台,对解压后的动态链接库文件提取所包含的bitcode文件及编译信息;选择函数进行虚拟化保护,将bitcode文件进行虚拟化处理,将虚拟化处理后的bitcode文件加上编译信息,生成多个目标文件,将目标文件加上链接参数生成新的动态链接库文件;将生成的动态链接库文件替换之的并重新签名打包。本发明简化了代码虚拟化流程,使大规模面向所有开发者提供代码虚拟化安全防护成为可能。
Description
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种Android动态链接库文件虚拟化方法、系统及存储介质。
背景技术
虚拟机保护技术是移动信息安全领域一种新的软件保护技术,其实现原理是:定义一套指令集,将要被保护的源代码翻译为人类难于理解的虚拟机字节码,在程序运行时再由虚拟机解释器对这些字节码进行解释执行。
传统的Android 动态链接库文件虚拟化技术,一般是基于C/C++源码实现的,这种实现方式需要将定制的LLVM编译器直接提供给客户使用,对于客户来说需要记下一些编译参数,使用门槛较高。对于厂家来说需要将虚拟机解释器(软件程序,即一段执行虚拟字节码的程序,功能上相当于虚拟CPU)提供给客户,可能有安全隐患,最主要的是这种方式出了问题不方便排查。
因此,现有技术还有待于改进和发展。
发明内容
本发明的主要目的在于提供一种动态链接库文件虚拟化方法、系统及存储介质,旨在通过最新的clang编译器打开-fembed-bitcode编译选项,生成包含bitcode的动态链接库文件,把包含bitcode的SO库或者整个apk上传到服务器,就可以将动态链接库中的bitcode以及对应的编译参数提取出来,通过对bitcode进行代码虚拟化,生成bitcode文件,再配合之前提取出来的编译参数,用clang编译器生成最终的动态链接库文件,替换掉原动态链接库文件再重新签名打包即可,简化了Android系统代码虚拟化流程,使大规模面向所有开发者提供代码虚拟化安全防护成为可能。
为实现上述目的,本发明提供一种动态链接库文件虚拟化方法,所述动态链接库文件虚拟化方法包括如下步骤:
使用编译器开启嵌入bitcode选项,将C/C++代码编译成带有bitcode信息的动态链接库文件,并加入APP中签名打包成APK文件;
将生成的包含bitcode的APK文件上传至云平台,云平台将APK文件进行解压,对解压后的动态链接库文件通过工具提取所包含的bitcode文件及相关的编译信息;
云平台列出动态链接库文件中的所有函数,选择一个或者多个函数进行虚拟化保护,并将每个bitcode文件进行虚拟化处理;
云平台将虚拟化处理后的bitcode文件,加上已提取的编译信息,编译生成多个目标文件,将多个目标文件加上链接参数生成新的动态链接库文件;
将生成的动态链接库文件替换之前解压文件夹中的动态链接库文件,并重新签名打包,在云平台中提供APK文件的下载途径。
所述的动态链接库文件虚拟化方法,其中,通过clang编译器将C/C++代码编译成动态链接库文件。
所述的动态链接库文件虚拟化方法,其中,云平台将每个bitcode文件进行虚拟化处理的步骤,之后还包括:
扫描每个LLVM模块获取选择的函数;
逐条指令遍历被保护函数,将被保护函数中需要用的全局变量和全局函数的地址保存到全局地址表中。
所述的动态链接库文件虚拟化方法,其中,所述逐条指令遍历被保护函数,将被保护函数中需要用的全局变量和全局函数的地址保存到全局地址表中的步骤,之后还包括:
如果被保护函数中需要调用本地函数,则根据调用的本地函数的返回值和参数类型的不同,创建包装函数,并将包装函数的地址保存到包装函数表中。
所述的动态链接库文件虚拟化方法,其中,所述如果被保护函数中需要调用本地函数,则根据调用的本地函数的返回值和参数类型的不同,创建包装函数,并将包装函数的地址保存到包装函数表中的步骤,之后还包括:
逐条指令遍历被保护函数,将LLVM IR指令翻译为等价的虚拟机指令,并将新生成的虚拟机字节码保存到字节码表中。
所述的动态链接库文件虚拟化方法,其中,所述逐条指令遍历被保护函数,将LLVMIR指令翻译为等价的虚拟机指令,并将新生成的虚拟机字节码保存到字节码表中的步骤,之后还包括:
记录每个被保护函数在字节码表中的起始位置,将被保护函数的序号和在字节码表中的位置保存到字节码索引表中。
所述的动态链接库文件虚拟化方法,其中,所述记录每个被保护函数在字节码表中的起始位置,将被保护函数的序号和在字节码表中的位置保存到字节码索引表中的步骤,之后还包括:
根据被保护函数参数类型和返回值的不同,动态创建虚拟机桥接函数,桥接函数主要用来向虚拟机传递参数以及调用完成后从虚拟机向本地函数传送返回值。
所述的动态链接库文件虚拟化方法,其中,所述根据被保护函数参数类型和返回值的不同,动态创建虚拟机桥接函数,桥接函数主要用来向虚拟机传递参数以及调用完成后从虚拟机向本地函数传送返回值的步骤,之后还包括:
将被保护函数的函数体抽空,替换成等价的虚拟机桥接函数的调用。
此外,为实现上述目的,本发明还提供一种动态链接库文件虚拟化系统,其特征在于,所述动态链接库文件虚拟化系统包括智能终端和云平台;
所述智能终端用于使用编译器开启嵌入bitcode选项,将C/C++代码编译成带有bitcode信息的动态链接库文件,并加入APP中签名打包成APK文件;
所述智能终端还用于将生成的包含bitcode的APK文件上传至云平台;
所述云平台用于将APK文件进行解压,对解压后的动态链接库文件通过工具提取所包含的bitcode文件及相关的编译信息;
所述云平台用于列出动态链接库文件中的所有函数,选择一个或者多个函数进行虚拟化保护,并将每个bitcode文件进行虚拟化处理;
所述云平台用于将虚拟化处理后的bitcode文件,加上已提取的编译信息,编译生成多个目标文件,将多个目标文件,加上链接参数生成新的动态链接库文件;
所述云平台还用于将生成的动态链接库文件替换之前解压文件夹中的动态链接库文件,并重新签名打包,提供APK文件的下载途径。
此外,为实现上述目的,本发明还提供一种存储介质,其中,所述存储介质存储有动态链接库文件虚拟化程序,所述动态链接库文件虚拟化程序被处理器执行时实现如上所述的动态链接库文件虚拟化方法的步骤。
本发明通过最新的clang编译器,打开-fembed-bitcode编译选项,就可生成包含bitcode的动态链接库文件,用户把包含bitcode的动态链接库或者整个apk上传到服务器,就可以将动态链接库中的bitcode以及对应的编译参数提取出来,通过对bitcode进行代码虚拟化,生成bitcode文件,再配合之前提取出来的编译参数,用clang编译器生成最终的动态链接库文件,并去掉bitcode信息,替换掉原动态链接库文件再重新签名打包即可。
附图说明
图1是本发明动态链接库文件虚拟化方法的较佳实施例的流程图;
图2是本发明动态链接库文件虚拟化方法的较佳实施例中云平台将每个bitcode文件进行虚拟化处理的流程示意图;
图3为本发明动态链接库文件虚拟化系统的较佳实施例的运行环境示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,所述动态链接库文件虚拟化方法包括以下步骤:
步骤S10、使用编译器开启嵌入bitcode选项,将C/C++代码编译成带有bitcode信息的动态链接库文件,并加入APP中签名打包成APK文件。
具体地,动态链接库文件是Linux下的程序函数库,即编译好的可以供其他程序使用的代码和数据,都是C或C++编译出来的。
Android开发者使用Clang(4.0以上版本)将C/C++代码编译成动态链接库文件,编译的时候开启-fembed-bitcode参数(开启编译器的嵌入bitcode参数选项),就会生成带有bitcode(bitcode是被编译程序的一种中间形式的代码。包含bitcode配置的程序将会在App store上被编译和链接)信息的动态链接库文件,然后开发者将APP签名打包成APK文件。
其中,Clang是一个C语言、C++、Objective-C语言的轻量级编译器,源代码发布于BSD协议下,Clang将支持其普通lambda表达式、返回类型的简化处理以及更好的处理constexpr关键字。
步骤S20、将生成的包含bitcode的APK文件上传至云平台,云平台将APK文件进行解压,对解压后的动态链接库文件通过工具提取所包含的bitcode文件及相关的编译信息。
具体地,开发者将步骤S10中生成的包含bitcode的APK文件上传至云平台,云平台将APK文件解压缩,对解压后的动态链接库文件使用工具(例如ebcutl工具)提取所包含的bitcode文件及相关的编译信息。
步骤S30、云平台列出动态链接库文件中的所有函数,选择一个或者多个函数进行虚拟化保护,并将每个bitcode文件进行虚拟化处理。
具体地,云平台列出动态链接库文件中的所有函数,开发者选择一个或者多个函数进行虚拟化保护。
进一步地,云平台将每个bitcode文件进行虚拟化处理,如图2所示,具体包括:
S31、扫描每个LLVM(Low Level Virtual Machine)模块获取选择的函数;
其中,LLVM模块用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本;
S32、逐条指令遍历被保护函数,将被保护函数中需要用的全局变量和全局函数的地址保存到全局地址表中;
S33、如果被保护函数中需要调用本地函数,则根据调用的本地函数的返回值和参数类型的不同,创建包装函数,并将包装函数的地址保存到包装函数表中;
S34、逐条指令遍历被保护函数,将LLVM IR指令(就是LLVM中间表示,IR,intermediaterepresentation)翻译为等价的虚拟机指令,并将新生成的虚拟机字节码保存到字节码表中;
S35、记录每个被保护函数在字节码表中的起始位置,将被保护函数的序号和在字节码表中的位置保存到字节码索引表中;
S36、根据被保护函数参数类型和返回值的不同,动态创建虚拟机桥接函数,桥接函数主要用来向虚拟机传递参数以及调用完成后从虚拟机向本地函数传送返回值;
S37、将被保护函数的函数体抽空,替换成等价的虚拟机桥接函数的调用。
步骤S40、云平台将虚拟化处理后的bitcode文件,加上已提取的编译信息,编译生成多个目标文件,将多个目标文件加上链接参数生成新的动态链接库文件。
具体地,云平台将步骤S30中虚拟化处理后的bitcode文件,加上步骤S20提取的编译参数,编译生成多个目标文件;动态链接库文件一般是由一个或者多个目标文件链接而成。
步骤S50、将生成的动态链接库文件替换之前解压文件夹中的动态链接库文件,并重新签名打包,在云平台中提供APK文件的下载途径。
具体地,将生成的动态链接库文件替换步骤S20中的解压文件夹中的动态链接库文件,重新签名打包,在云平台中提供下载;开发者下载生成的APK文件。
本发明通过在编译时打开的bitcode参数,生成带bitcode的动态链接库文件,然后对生成的包含bitcode的APK进行bitcode提取,并对提取后的bitcode进行代码虚拟化,最终生成加固后的APK包。用户按照正常的开发流程进行开发、打包,只需要把APK提交到云平台,云平台就会实时产出经虚拟化保护后的APK包。本发明的特点在于不需要依赖于开发者的源代码,在无源代码的情况下也可以进行安全防护,做到一键上传即可完成防护工作,同时,云平台上保存有相关的bitcode文件,不管是查找问题或者调试程序都更加方便。
进一步地,如图3所示,基于上述动态链接库文件虚拟化方法,本发明还相应提供了一种一种动态链接库文件虚拟化系统,其中,所述动态链接库文件虚拟化系统包括智能终端100和云平台200;
所述智能终端100用于使用编译器开启嵌入bitcode选项,将C/C++代码编译成带有bitcode信息的动态链接库文件,并加入APP中签名打包成APK文件;
所述智能终端100还用于将生成的包含bitcode的APK文件上传至云平台;
所述云平台用于将APK文件进行解压,对解压后的动态链接库文件通过工具提取所包含的bitcode文件及相关的编译信息;
所述云平台200用于列出动态链接库文件中的所有函数,选择一个或者多个函数进行虚拟化保护,并将每个bitcode文件进行虚拟化处理;
所述云平台200用于将虚拟化处理后的bitcode文件,加上已提取的编译信息,编译生成多个目标文件,将多个目标文件,加上链接参数生成新的动态链接库文件;
所述云平台200还用于将生成的动态链接库文件替换之前解压文件夹中的动态链接库文件,并重新签名打包,提供APK文件的下载途径。
本发明还提供一种存储介质,其中,所述存储介质存储有动态链接库文件虚拟化程序,所述动态链接库文件虚拟化程序被处理器执行时实现如上所述的动态链接库文件虚拟化方法的步骤。
综上所述,本发明提供一种动态链接库文件虚拟化方法、系统及存储介质,所述方法包括:使用编译器开启嵌入bitcode选项,将C/C++代码编译成带有bitcode信息的动态链接库文件,并加入APP中签名打包成APK文件;将生成的包含bitcode的APK文件上传至云平台,云平台将APK文件进行解压,对解压后的动态链接库文件通过工具提取所包含的bitcode文件及相关的编译信息;云平台列出动态链接库文件中的所有函数,选择一个或者多个函数进行虚拟化保护,并将每个bitcode文件进行虚拟化处理;云平台将虚拟化处理后的bitcode文件,加上已提取的编译信息,编译生成多个目标文件,将多个目标文件加上链接参数生成新的动态链接库文件;将生成的动态链接库文件替换之前解压文件夹中的动态链接库文件,并重新签名打包,在云平台中提供APK文件的下载途径。本发明通过最新的clang编译器打开-fembed-bitcode编译选项,生成包含bitcode的动态链接库文件,把包含bitcode的SO库或者整个apk上传到服务器,可以将so库中的bitcode以及对应的编译参数提取出来,通过对bitcode进行代码虚拟化,生成bitcode文件,再配合之前提取出来的编译参数,用clang编译器生成最终的动态链接库文件,并去掉bitcode信息,替换掉原动态链接库文件再重新签名打包即可,简化了Android系统代码虚拟化流程,使大规模面向所有开发者提供代码虚拟化安全防护成为可能。
当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的存储介质中,所述程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、光盘等。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (10)
1.一种动态链接库文件虚拟化方法,其特征在于,所述动态链接库文件虚拟化方法包括:
使用编译器开启嵌入bitcode选项,将C/C++代码编译成带有bitcode信息的动态链接库文件,并加入APP中签名打包成APK文件;
将生成的包含bitcode的APK文件上传至云平台,云平台将APK文件进行解压,对解压后的动态链接库文件通过工具提取所包含的bitcode文件及相关的编译信息;
云平台列出动态链接库文件中的所有函数,选择一个或者多个函数进行虚拟化保护,并将每个bitcode文件进行虚拟化处理;
云平台将虚拟化处理后的bitcode文件,加上已提取的编译信息,编译生成多个目标文件,将多个目标文件加上链接参数生成新的动态链接库文件;
将生成的动态链接库文件替换之前解压文件夹中的动态链接库文件,并重新签名打包,在云平台中提供APK文件的下载途径。
2.根据权利要求1所述的动态链接库文件虚拟化方法,其特征在于,通过clang编译器将C/C++代码编译成动态链接库文件。
3.根据权利要求1所述的动态链接库文件虚拟化方法,其特征在于,云平台将每个bitcode文件进行虚拟化处理的步骤,之后还包括:
扫描每个LLVM模块获取选择的函数;
逐条指令遍历被保护函数,将被保护函数中需要用的全局变量和全局函数的地址保存到全局地址表中。
4.根据权利要求3所述的动态链接库文件虚拟化方法,其特征在于,所述逐条指令遍历被保护函数,将被保护函数中需要用的全局变量和全局函数的地址保存到全局地址表中的步骤,之后还包括:
如果被保护函数中需要调用本地函数,则根据调用的本地函数的返回值和参数类型的不同,创建包装函数,并将包装函数的地址保存到包装函数表中。
5.根据权利要求4所述的动态链接库文件虚拟化方法,其特征在于,所述如果被保护函数中需要调用本地函数,则根据调用的本地函数的返回值和参数类型的不同,创建包装函数,并将包装函数的地址保存到包装函数表中的步骤,之后还包括:
逐条指令遍历被保护函数,将LLVM IR指令翻译为等价的虚拟机指令,并将新生成的虚拟机字节码保存到字节码表中。
6.根据权利要求5所述的动态链接库文件虚拟化方法,其特征在于,所述逐条指令遍历被保护函数,将LLVM IR指令翻译为等价的虚拟机指令,并将新生成的虚拟机字节码保存到字节码表中的步骤,之后还包括:
记录每个被保护函数在字节码表中的起始位置,将被保护函数的序号和在字节码表中的位置保存到字节码索引表中。
7.根据权利要求6所述的动态链接库文件虚拟化方法,其特征在于,所述记录每个被保护函数在字节码表中的起始位置,将被保护函数的序号和在字节码表中的位置保存到字节码索引表中的步骤,之后还包括:
根据被保护函数参数类型和返回值的不同,动态创建虚拟机桥接函数,桥接函数主要用来向虚拟机传递参数以及调用完成后从虚拟机向本地函数传送返回值。
8.根据权利要求7所述的动态链接库文件虚拟化方法,其特征在于,所述根据被保护函数参数类型和返回值的不同,动态创建虚拟机桥接函数,桥接函数主要用来向虚拟机传递参数以及调用完成后从虚拟机向本地函数传送返回值的步骤,之后还包括:
将被保护函数的函数体抽空,替换成等价的虚拟机桥接函数的调用。
9.一种动态链接库文件虚拟化系统,其特征在于,所述动态链接库文件虚拟化系统包括智能终端和云平台;
所述智能终端用于使用编译器开启嵌入bitcode选项,将C/C++代码编译成带有bitcode信息的动态链接库文件,并加入APP中签名打包成APK文件;
所述智能终端还用于将生成的包含bitcode的APK文件上传至云平台;
所述云平台用于将APK文件进行解压,对解压后的动态链接库文件通过工具提取所包含的bitcode文件及相关的编译信息;
所述云平台用于列出动态链接库文件中的所有函数,选择一个或者多个函数进行虚拟化保护,并将每个bitcode文件进行虚拟化处理;
所述云平台用于将虚拟化处理后的bitcode文件,加上已提取的编译信息,编译生成多个目标文件,将多个目标文件,加上链接参数生成新的动态链接库文件;
所述云平台还用于将生成的动态链接库文件替换之前解压文件夹中的动态链接库文件,并重新签名打包,提供APK文件的下载途径。
10.一种存储介质,其特征在于,所述存储介质存储有动态链接库文件虚拟化程序,所述动态链接库文件虚拟化程序被处理器执行时实现如权利要求1-8任一项所述的动态链接库文件虚拟化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910221992.3A CN110032425B (zh) | 2019-03-22 | 2019-03-22 | 一种动态链接库文件虚拟化方法、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910221992.3A CN110032425B (zh) | 2019-03-22 | 2019-03-22 | 一种动态链接库文件虚拟化方法、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110032425A true CN110032425A (zh) | 2019-07-19 |
CN110032425B CN110032425B (zh) | 2021-04-06 |
Family
ID=67236467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910221992.3A Active CN110032425B (zh) | 2019-03-22 | 2019-03-22 | 一种动态链接库文件虚拟化方法、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110032425B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110673929A (zh) * | 2019-09-29 | 2020-01-10 | 北京智游网安科技有限公司 | 一种保护异常机制的方法、智能终端及存储介质 |
CN111124527A (zh) * | 2019-10-24 | 2020-05-08 | 成都无糖信息技术有限公司 | 一种对动态链接库中虚表函数列表的提取方法 |
CN115268937A (zh) * | 2022-09-27 | 2022-11-01 | 中国空气动力研究与发展中心计算空气动力研究所 | 一种多相流流场初始化方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090257485A1 (en) * | 2008-04-15 | 2009-10-15 | Sony Corporation | Video data compression with integrated lossy and lossless compression |
CN106354630A (zh) * | 2016-08-23 | 2017-01-25 | 电子科技大学 | 一种基于动态符号执行的软件缺陷检测方法 |
CN107992723A (zh) * | 2017-11-29 | 2018-05-04 | 南京莱斯信息技术股份有限公司 | 一种基于动态链接库的Java源码保护方法 |
CN108932406A (zh) * | 2017-05-18 | 2018-12-04 | 北京梆梆安全科技有限公司 | 虚拟化软件保护方法和装置 |
-
2019
- 2019-03-22 CN CN201910221992.3A patent/CN110032425B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090257485A1 (en) * | 2008-04-15 | 2009-10-15 | Sony Corporation | Video data compression with integrated lossy and lossless compression |
CN106354630A (zh) * | 2016-08-23 | 2017-01-25 | 电子科技大学 | 一种基于动态符号执行的软件缺陷检测方法 |
CN108932406A (zh) * | 2017-05-18 | 2018-12-04 | 北京梆梆安全科技有限公司 | 虚拟化软件保护方法和装置 |
CN107992723A (zh) * | 2017-11-29 | 2018-05-04 | 南京莱斯信息技术股份有限公司 | 一种基于动态链接库的Java源码保护方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110673929A (zh) * | 2019-09-29 | 2020-01-10 | 北京智游网安科技有限公司 | 一种保护异常机制的方法、智能终端及存储介质 |
CN111124527A (zh) * | 2019-10-24 | 2020-05-08 | 成都无糖信息技术有限公司 | 一种对动态链接库中虚表函数列表的提取方法 |
CN115268937A (zh) * | 2022-09-27 | 2022-11-01 | 中国空气动力研究与发展中心计算空气动力研究所 | 一种多相流流场初始化方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110032425B (zh) | 2021-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6856749B2 (ja) | ブロックチェーン上のネイティブ契約を実施するためのシステムおよび方法 | |
CN109491695B (zh) | 一种集成安卓应用的增量更新方法 | |
CN108681457B (zh) | 基于代码下沉与残码解释的Android应用程序保护方法 | |
CN113872948A (zh) | 一种执行智能合约的方法、区块链节点和节点设备 | |
CN108279902B (zh) | 基于Lua脚本技术的多终端共享底层框架生成、应用方法 | |
KR20150052068A (ko) | 애플리케이션에 대한 중간 언어 코드로부터 네이티브 코드를 생성하는 기법 | |
CN110245467B (zh) | 基于Dex2C与LLVM的Android应用程序保护方法 | |
CN110032425A (zh) | 一种动态链接库文件虚拟化方法、系统及存储介质 | |
CN112835975B (zh) | 一种在区块链中部署、更新、调用智能合约的方法 | |
CN100492387C (zh) | 基于Keil C51的软件保护开发的方法和系统 | |
CN114816417B (zh) | 一种交叉编译方法、装置、计算设备及存储介质 | |
CN111768187A (zh) | 一种部署智能合约的方法、区块链节点和存储介质 | |
US20100218174A1 (en) | Dynamic compiling and loading at runtime | |
CN111815330A (zh) | 一种部署智能合约的方法、区块链节点和存储介质 | |
CN104134039A (zh) | 病毒查杀方法、客户端、服务器以及病毒查杀系统 | |
CN111770204A (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
CN112083968A (zh) | 一种宿主中插件加载方法及装置 | |
CN111770202B (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
CN115629971A (zh) | 一种应用的开发系统和开发方法 | |
CN111770116A (zh) | 一种执行智能合约的方法、区块链节点、存储介质 | |
US11188361B1 (en) | Cross-architecture software distribution using a virtual instruction set architecture | |
CN112667352A (zh) | 一种多cpu指令交叉编译统一构建方法、设备及介质 | |
CN116755713A (zh) | 应用程序的生成方法、装置、设备及存储介质 | |
CN111782334B (zh) | 一种动态链接库文件虚拟化方法、存储介质及终端设备 | |
CN114610364A (zh) | 应用程序更新、应用程序开发方法、装置及计算机设备 |
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 |