CN105608391A - 多elf文件保护方法及系统 - Google Patents
多elf文件保护方法及系统 Download PDFInfo
- Publication number
- CN105608391A CN105608391A CN201510955012.4A CN201510955012A CN105608391A CN 105608391 A CN105608391 A CN 105608391A CN 201510955012 A CN201510955012 A CN 201510955012A CN 105608391 A CN105608391 A CN 105608391A
- Authority
- CN
- China
- Prior art keywords
- file
- elf
- shell program
- files
- program file
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及数据安全领域,具体而言,本发明涉及多ELF文件保护方法及系统。其中,本发明的多ELF文件的保护方法,包括:将多个ELF文件并入一个壳程序文件中;对所述壳程序文件中的多个ELF文件进行加保护处理;接收至少一个ELF文件的调用请求,确定所述调用请求所对应的待调用对象;根据所确定的待调用对象,在所述壳程序文件处对所述至少一个ELF文件进行调用。本发明提供的多ELF文件的保护方法和系统,通过将多个Android动态链接库(*.SO)文件统一加壳保护,这样既实现了目标动态库隐藏的目的,防止第三方恶意调用,同时也有效降低了目标软件大小。
Description
技术领域
本发明涉及数据安全领域,具体而言,本发明涉及一种多ELF文件保护方法及系统。
背景技术
安卓(Android)是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。安卓平台发展迅速,已经逐渐成为了移动终端的最普及的操作系统,尤其是安卓平台已经深入到了各个领域,包括金融设备这种对安全性要求更高的产品。与其他终端操作系统相比,开放式的安卓系统为应用开发者提供了更多的功能接口,这些功能接口在提高了系统的可扩展性,但同时也为恶意软件提供了便利。针对安卓系统的木马等恶意软件可以通过伪装的方式保存在安卓安装包中,骗取用户安装并授予一定的权限,之后通过滥用权限在后台执行一些特定行为,包括窃取用户隐私、骗取资费等行为;不仅如此,对于一些正常的安卓系统应用,也存在通过非法拷贝、逆向工程、反编译、调试、破解、二次打包、内存截取等手段来威胁安卓系统的安全,不仅危害了使用者,也给正常应用开发者造成严重的损害。
基于以上问题,现有技术中出现了多种安卓应用的安全加固方法。目前,对ELF文件(Android平台主要是共享链接库文件,其扩展名为.so,因此也叫SO文件)的保护,主要通过加壳来进行保护。加壳的程序可以有效阻止对程序的反汇编分析,以保护软件版权,防止被软件破解。但现在对SO文件的保护方案,主要针对单个的SO文件进行保护,即对每一个SO文件都加壳一次。这样就会有很多被加壳的SO文件,比如银行的应用软件lib下会有很多的SO文件,对其进行保护就会生成很多加壳的SO文件。由于SO文件的数量较多,势必造成最终应用包的体积较大,很占空间;此外,所有的SO文件没有任何隐藏,第三方可以很容易实现对其调用,存在安全隐患。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的多ELF文件保护方法和相应的系统。
依据本发明的一个方面,提供了一种多ELF文件的保护方法,该方法包括:
将多个ELF文件并入一个壳程序文件中;
对所述壳程序文件中的多个ELF文件进行加保护处理;
接收至少一个ELF文件的调用请求,确定所述调用请求所对应的待调用对象;
根据所确定的待调用对象,在所述壳程序文件处对所述至少一个ELF文件进行调用。
进一步地,所述将待保护的多个ELF文件并入一个壳程序文件中包括:
将所述多个ELF文件转换成二进制流,写入一个壳程序文件中,所述壳程序文件中至少包含所述多个ELF文件的头文件信息。
进一步地,所述对所述壳程序文件中的多个ELF文件进行加保护处理包括:去掉所述多个ELF文件的隐藏信息、对所述多个ELF文件进行分段加密处理、对所述多个ELF文件进行代码混淆处理、对所述多个ELF文件进行反调试处理中的至少一种。
进一步地,所述接收至少一个ELF文件的调用请求,确定所述调用请求所对应的待调用对象包括:
在所述壳程序文件外接收至少一个ELF文件的调用请求,确定所述调用请求所对应的待调用对象;
所述根据所确定的待调用对象,在所述壳程序文件处对所述至少一个ELF文件进行调用包括:
在所述壳程序文件处,接收所述待调用对象的确定结果,相应地对所述至少一个ELF文件进行调用。
更进一步地,在所述壳程序文件外接收至少一个ELF文件的调用请求,确定所述调用请求所对应的待调用对象包括:
在系统库文件中建立钩子;
利用所述钩子在第三方应用和所述壳程序文件之间接收第三方应用的调用请求,解析所述调用请求所对应的待调用对象。
根据本发明的另一个方面,提供了一种多ELF文件的保护系统,该系统包括:
合并写入单元,用于将多个ELF文件并入一个壳程序文件中;
请求对象确定单元,用于接收至少一个ELF文件的调用请求,确定所述调用请求所对应的待调用对象;
调用单元,用于根据所确定的待调用对象,在所述壳程序文件处对所述至少一个ELF文件进行调用。
进一步地,所述合并写入单元,用于将所述多个ELF文件转换成二进制流,写入一个壳程序文件中,所述壳程序文件中至少包含所述多个ELF文件的头文件信息;
进一步地,所述保护处理单元用于去掉所述多个ELF文件的隐藏信息;和/或,用于对所述多个ELF文件进行分段加密处理;和/或,用于对所述多个ELF文件进行代码混淆处理;和/或,用于对所述多个ELF文件进行反调试处理;
进一步地,所述请求对象确定单元用于在所述壳程序文件外接收至少一个ELF文件的调用请求,确定所述调用请求所对应的待调用对象;
所述调用单元用于在所述壳程序文件处,接收所述待调用对象的确定结果,相应地对所述至少一个ELF文件进行调用。
更进一步地,所述请求对象确定单元为系统库文件中建立的钩子,利用所述钩子在第三方应用和所述壳程序文件之间接收第三方应用的调用请求,解析所述调用请求所对应的待调用对象。
相比现有技术,本发明的方案具有以下优点:
本发明提供的多ELF文件的保护方法和系统,通过将多个Android动态链接库(*.so)文件统一加壳保护,这样既实现了目标动态库隐藏的目的,防止第三方恶意调用,同时也有效降低了目标软件大小。
显然,上述有关本发明优点的描述是概括性的,更多的优点描述将体现在后续的实施例揭示中,以及,本领域技术人员也可以本发明所揭示的内容合理地发现本发明的其他诸多优点。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明一种多ELF文件保护方法实施例的流程示意图。
图2为现有技术中SO文件正常的加载流程示意图;
图3为现有技术中使用常用的加固方法后的SO文件的加载流程示意图;
图4为基于本发明一种多ELF文件保护方法实施例的SO文件的加载流程示意图。
图5为本发明一种多ELF文件保护系统实施例的原理示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
需要指出的是,本发明的技术方案,理念上与操作系统的选型无关,对于windows、android、IOS等操作系统均适用。但为说明的便利,以下将主要以Android为例进行说明。
在安卓系统上,一个可以安装、运行的应用,需要打包成安卓安装包,即APK(Androidapplicationpackagefile)文件格式。(APK文件一般通过安卓应用市场下载、安装到手机上,也可以通过USB数据线等数据线接口或无线数据传输的方式从PC安装。安卓安装包其实是ZIP文件格式,但后缀名被修改成.apk,可以通过Unzip等工具解压看到其内部文件结构。
Android应用通常是用Java语言开发的,它用Android开发工具编译之后变成了二进制的字节码(bytecode),这些字节码被打包成classes.dex文件,由Android平台的Dalvik虚拟机来解释执行。为了能够调用Android系统功能,Android系统提供了一套运行环境(AndroidFramework),Android应用调用系统各功能都是通过调用AndroidFramework的库来实现的。另一方面,Android系统也支持应用程序通过JNI或者nativeexecutable直接运行。此时应用执行的是直接在CPU上运行的二进制机器码,不需要经过虚拟机解释,可以直接调用Android库如libc、WebKit、SQLite、OpenGL/ES等来调用系统各功能。如果Android应用要通过JNI或者nativeexecutable运行,就需要将要执行的代码编译成ELF文件格式。ELF是ExecutableandLinkableFormat的缩写,是Android/Linux操作系统中可执行程序、共享库的文件格式。
本申请中,Android平台中ELF文件主要是共享链接库文件,其扩展名为.so,因此也叫SO文件。SO文件的指令格式是ARM体系结构的ARM指令集或Thumb指令集。安卓的SO文件主要充当的角色是通过JNI与Java交互,所以主要是作为一个库存在(也有一些SO是可执行的),然后被AndroidRuntime加载,并能被Java层调用。SO文件一般存放在APK的lib目录的armeabi子文夹下。
图1示出了根据本发明一个实施例的一种多ELF文件的保护方法的流程示意图。如图1所示,该方法包括:
步骤S110,将多个SO文件并入一个壳程序文件中;
本步骤对待保护的多个SO文件进行统一加壳的过程,即将多个SO文件写入一个壳程序文件中的指定位置,壳程序文件会先于SO文件运行,取得优先权,保护SO文件不被非法修改或反编译。
加壳的全称是可执行程序资源的压缩和加密。加壳,其实就是给可执行文件加上个外衣。用户执行的只是这个外壳程序。当执行这个外壳程序的时候,它就会在内存中解压或者解密原程序,解压或解密后再把程序的执行权交还给真正的程序。所以,这些的工作只是在内存中执行的。
现有对SO文件的加壳方法一般是只针对单个SO文件加壳,即一个SO文件加壳一次,如果SO文件很多,就会进行多次加壳,势必造成最终安装包的体积很大。在本发明实施例中,通过将lib下的所有SO文件统一并入同一个壳中,即写入一个壳程序文件中的指定位置。通过检测发现,对所有的SO文件合并加壳后其所占空间缩小量一般在30%左右,而且SO文件数量越多,文件越大,其所占空间的缩小量就越大。
步骤S120,对壳程序文件中的多个SO文件进行加保护处理;
主要对统一加壳后的SO文件进一步的加固。
步骤S130,接收至少一个SO文件的调用请求,确定所述调用请求所对应的待调用对象;
步骤S140,根据所确定的待调用对象,在所述壳程序文件处对所述至少一个SO文件进行调用。
由于SO文件进行了统一加壳处理,所以当第三方对其进行调用时,要由所加的壳程序根据调用请求进行相应的加载,即帮助完成所请求的SO文件的加载。
在本发明的一个实施例中,图1所示的方法中的壳程序文件中包含能够对加保护处理后的SO文件进行解密处理的代码。在加载运行SO文件时,壳程序文件会先于SO文件运行,取得优先权,对加保护处理后的SO文件进行解密处理,使得SO文件的源代码恢复为完整的、代码排序正常的、无加密的、可完全还原的代码,进而在解壳后可以正常的加载运行。
图1所示的方法,通过将多个SO文件并入一个壳程序文件中,隐藏了SO的文件名和里面的函数,既实现了目标动态库隐藏的目的,防止第三方恶意调用,同时也有效降低了目标软件大小。
在本发明的一个实施例中,图1所示方法的步骤110中将多个SO文件并入一个壳程序文件中包括:
将所述多个SO文件转换成二进制流,写入一个壳程序文件中,所述壳程序文件中至少包含所述多个SO文件的头文件信息。
在本发明的一个实施例中,图1所示方法的步骤S120中对壳程序文件中的多个SO文件进行加保护处理可以是如下的一种或多种处理方式:
去掉多个SO文件的隐藏信息;
对多个SO文件进行分段加密处理;
对多个SO文件进行代码混淆处理;
对多个SO文件进行反调试处理。
在上述实施例中,去掉多个SO文件的隐藏信息,会导致SO文件信息缺失,即使有人对SO文件进行恶意解密或反编译,也无法得到完整的SO文件,很难做到静态工具分析;
在上述实施例中,对多个SO文件进行分段加密处理可以是:对多个SO文件的数据节和代码节分别进行加密,增加解密难度。
在上述实施例中,对多个SO文件进行代码混淆处理是不改变代码逻辑的情况下,在多个SO文件的代码中增加无用代码,或者对多个SO文件的代码进行重命名,使反编译后的源代码难以看懂,增加反编译后代码分析的难度。
在上述实施例中,对多个SO文件进行反调试是一个重要的保护功能,其反调试处理可以是:将可用于反调试的点插入到多个SO文件进行代码混淆后的代码中;代码混淆后,反调试的点就不容易找到,这样能给破解者进行调试的时候造成很多困扰,增加破解难度。
需要说明的是,对多个SO文件加保护不限于上述处理方式,对于本领域技术人员已知的任何对SO文件加保护处理方式都可以使用。
在本发明的一个实施例中,步骤130中接收至少一个SO文件的调用请求,确定所述调用请求所对应的待调用对象包括:
在壳程序文件外接收至少一个SO文件的调用请求,确定所述调用请求所对应的待调用对象;
所述根据所确定的待调用对象,在壳程序文件处对所述至少一个SO文件进行调用包括:
在壳程序文件处,接收所述待调用对象的确定结果,相应地对所述至少一个SO文件进行调用。
在本发明的一个实施例中,壳程序文件外接收至少一个SO文件的调用请求,确定所述调用请求所对应的待调用对象包括:
在系统库文件中建立钩子;
利用所述钩子在第三方应用和所述壳程序文件之间接收第三方应用的调用请求,解析所述调用请求所对应的待调用对象。
计算机安全技术中广泛采用Hook(钩子)技术对待监控的应用程序的各种函数进行挂钩拦截,以便实现对这些应用程序的事件行为的监控,对应不同事件行为调用不同的钩子函数进行处理,从而实现依据不同的行为做出相应的安全防护处理。
其中,Hook(钩子)是应用程序在Windows消息处理过程中设置的用来监控消息流并且处理系统中尚未到达目的窗口的某一类型消息过程的机制。如果Hook过程在应用程序中实现,若应用程序不是当前窗口时,该Hook就不起作用;如果Hook在DLL中实现,程序在运行中动态调用它,它能实时对系统进行监控。Hook的这个本领,使它能够将自身的代码“融入”被Hook住的程序的进程中,成为目标进程的一个部分。“钩子”涵盖了用于通过拦截在软件组件之间传递的函数调用、消息、或事件来改变或增加操作系统、应用程序、或其他软件组件的行为的技术。而处理这种被拦截的函数调用、事件或消息的代码就被称为钩子函数。钩子通常用于各种目标,包括对功能进行调试和对功能进行扩展。其示例可以包括在键盘或鼠标事件传递到应用程序之前拦截它们,或者拦截系统调用(systemcall)、或者系统函数行为、函数执行结果等,以监视或修改应用程序或其他组件的功能等等。
基于这一原理,本实施例采用钩子函数,拦截第三方对SO文件的调用函数,转而调用所加的壳程序,即由所加的外壳程序文件根据SO的文件名完成实际的SO文件的加载。
由于Android是基于Linux内核的开源系统,根据语言环境不同可以分为Java层、NativeC层、LinuxKernel层。如图2所示,正常情况下,第三方调用SO文件,必须通过Java层的LoadLibrary函数根据SO文件名进行相应的SO文件的加载。具体来说,LoadLibrary会调用libdvm.so里面的dlopen函数来最终加载SO文件。
现有技术中对SO文件的保护,一般都是针对每个SO文件分别进行加壳。如图3所示,当第三方调用SO文件时,通过Java层的LoadLibrary函数通过SO文件名来加载SO文件,由于每个SO文件都进行了加壳保护,所以具体实现时首先要进入外壳,然后外壳对SO文件进行加载。
在本发明的实施例中,通过对多个SO文件统一进行加壳,通过对系统库函数(libdvm.so)做了一个Hook(钩子),这样当Java层即APK调用SO时,会拦截dlopen函数,由所加的壳自己完成加载SO的工作。如图4所示,当java层调用SO的时候先进入外壳,不管加载哪个SO文件,都是进入统一的外壳,然后外壳根据SO的名字对相应的SO进行加载。
图5示出了根据本发明一个实施例的一种多ELF文件的保护系统的原理示意图。如图5所示,系统500包括:
合并写入单元510,用于将多个SO文件并入一个壳程序文件中;
本单元执行对多个SO文件进行统一加壳的过程,即将多个SO文件一并写入壳程序文件中的指定位置,壳程序文件会先于SO文件运行,取得优先权,保护SO文件不被非法修改或反编译。
保护处理单元520,用于对壳程序文件中的多个SO文件进行加保护处理。
本单元对加壳后的多个SO文件进一步加固。
请求对象确定单元530,用于接收至少一个SO文件的调用请求,确定所述调用请求所对应的待调用对象;
调用单元540,用于根据所确定的待调用对象,在所述壳程序文件处对所述至少一个SO文件进行调用。
本单元主要实现当第三方对SO文件进行调用时,要由所加的壳程序根据调用请求进行相应的加载,即由所加的壳程序文件帮助完成所请求的SO文件的加载。
在本发明的一个实施例中,图5所示的合并写入单元510,用于将多个SO文件转换成二进制流,写入一个壳程序文件中,所述壳程序文件中至少包含多个SO文件的头文件信息。
在本发明的一个实施例中,图5所示的保护处理单元520用于去掉多个SO文件的隐藏信息;和/或,用于对多个SO文件进行分段加密处理;和/或,用于对多个SO文件进行代码混淆处理;和/或,用于对多个SO文件进行反调试处理。
在上述实施例中,去掉多个SO文件的隐藏信息,会导致SO文件信息缺失,即使有人对SO文件进行恶意解密或反编译,也无法得到完整的SO文件,很难做到静态工具分析;
在上述实施例中,对多个SO文件进行分段加密处理可以是:对多个SO文件的数据节和代码节分别进行加密,增加解密难度。
在上述实施例中,对多个SO文件进行代码混淆处理是不改变代码逻辑的情况下,在多个SO文件的代码中增加无用代码,或者对多个SO文件的代码进行重命名,使反编译后的源代码难以看懂,增加反编译后代码分析的难度。
在上述实施例中,对多个SO文件进行反调试是一个重要的保护功能,图5所示系统的保护处理单元520的反调试处理可以是:将可用于反调试的点插入到多个SO文件进行代码混淆后的代码中;代码混淆后,反调试的点就不容易找到,这样能给破解者进行调试的时候造成很多困扰,增加破解难度。
在本发明的一个实施例中,图5所示请求对象确定单元530用于在所述壳程序文件外接收至少一个SO文件的调用请求,确定所述调用请求所对应的待调用对象;
所述调用单元540用于在所述壳程序文件处,接收所述待调用对象的确定结果,相应地对所述至少一个SO文件进行调用。
在本发明的一个实施例中,图5所示的请求对象确定单元为系统库文件中建立的钩子,利用所述钩子在第三方应用和所述壳程序文件之间接收第三方应用的调用请求,解析所述调用请求所对应的待调用对象。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种多ELF文件保护方法,其特征在于,包括:
将多个ELF文件并入一个壳程序文件中;
对所述壳程序文件中的多个ELF文件进行加保护处理;
接收至少一个ELF文件的调用请求,确定所述调用请求所对应的待调用对象;
根据所确定的待调用对象,在所述壳程序文件处对所述至少一个ELF文件进行调用。
2.根据权利要求1所述的方法,其特征在于,所述将多个ELF文件并入一个壳程序文件中包括:
将所述多个ELF文件转换成二进制流,写入一个壳程序文件中,所述壳程序文件中至少包含所述多个ELF文件的头文件信息。
3.根据权利要求1所述的方法,其特征在于,所述对所述壳程序文件中的多个ELF文件进行加保护处理包括:去掉所述多个ELF文件的隐藏信息、对所述多个ELF文件进行分段加密处理、对所述多个ELF文件进行代码混淆处理、对所述多个ELF文件进行反调试处理中的至少一种。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述接收至少一个ELF文件的调用请求,确定所述调用请求所对应的待调用对象包括:
在所述壳程序文件外接收至少一个ELF文件的调用请求,确定所述调用请求所对应的待调用对象;
所述根据所确定的待调用对象,在所述壳程序文件处对所述至少一个ELF文件进行调用包括:
在所述壳程序文件处,接收所述待调用对象的确定结果,相应地对所述至少一个ELF文件进行调用。
5.根据权利要求4所述的方法,在所述壳程序文件外接收至少一个ELF文件的调用请求,确定所述调用请求所对应的待调用对象包括:
在系统库文件中建立钩子;
利用所述钩子在第三方应用和所述壳程序文件之间接收第三方应用的调用请求,解析所述调用请求所对应的待调用对象。
6.一种多ELF文件保护系统,该系统包括:
合并写入单元,用于将多个ELF文件并入一个壳程序文件中;
保护处理单元,用于对所述壳程序文件中的多个ELF文件进行加保护处理;
请求对象确定单元,用于接收至少一个ELF文件的调用请求,确定所述调用请求所对应的待调用对象;
调用单元,用于根据所确定的待调用对象,在所述壳程序文件处对所述至少一个ELF文件进行调用。
7.根据权利要求6所述的系统,其特征在于,所述合并写入单元,用于将所述多个ELF文件转换成二进制流,写入一个壳程序文件中,所述壳程序文件中至少包含所述多个ELF文件的头文件信息。
8.根据权利要求6所述的系统,其特征在于,所述保护处理单元用于去掉所述多个ELF文件的隐藏信息;和/或,用于对所述多个ELF文件进行分段加密处理;和/或,用于对所述多个ELF文件进行代码混淆处理;和/或,用于对所述多个ELF文件进行反调试处理。
9.根据权利要求6-8中任一项所述的系统,其特征在于,所述请求对象确定单元用于在所述壳程序文件外接收至少一个ELF文件的调用请求,确定所述调用请求所对应的待调用对象;
所述调用单元用于在所述壳程序文件处,接收所述待调用对象的确定结果,相应地对所述至少一个ELF文件进行调用。
10.根据权利要求9所述的系统,其特征在于,所述请求对象确定单元为系统库文件中建立的钩子,利用所述钩子在第三方应用和所述壳程序文件之间接收第三方应用的调用请求,解析所述调用请求所对应的待调用对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510955012.4A CN105608391B (zh) | 2015-12-17 | 2015-12-17 | 多elf文件保护方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510955012.4A CN105608391B (zh) | 2015-12-17 | 2015-12-17 | 多elf文件保护方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105608391A true CN105608391A (zh) | 2016-05-25 |
CN105608391B CN105608391B (zh) | 2019-02-26 |
Family
ID=55988318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510955012.4A Active CN105608391B (zh) | 2015-12-17 | 2015-12-17 | 多elf文件保护方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105608391B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293852A (zh) * | 2016-08-19 | 2017-01-04 | 北京奇虎科技有限公司 | 一种加固安装包的资源文件的方法和装置 |
CN106681828A (zh) * | 2016-12-09 | 2017-05-17 | 北京奇虎科技有限公司 | 一种加固安卓安装包的动态链接库so文件的方法和装置 |
CN106708571A (zh) * | 2016-12-13 | 2017-05-24 | 北京奇虎科技有限公司 | 资源文件的加载方法、装置和加固资源文件的方法、装置 |
CN108460276A (zh) * | 2016-12-09 | 2018-08-28 | 北京奇虎科技有限公司 | 一种安卓安装包的动态链接库so文件的处理方法和装置 |
CN109766141A (zh) * | 2018-12-26 | 2019-05-17 | 北京思源互联科技有限公司 | 一种基于动态链接库的数据动态更新方法及其装置 |
CN109766717A (zh) * | 2018-12-26 | 2019-05-17 | 北京思源互联科技有限公司 | 一种基于动态链接库的静态资源保护方法及其装置 |
CN111258590A (zh) * | 2020-05-06 | 2020-06-09 | 华控清交信息科技(北京)有限公司 | 一种代码执行方法、装置和用于代码执行的装置 |
CN111967002A (zh) * | 2020-07-09 | 2020-11-20 | 国家计算机网络与信息安全管理中心 | 一种应用程序的加壳检测方法及装置 |
CN111967032A (zh) * | 2020-08-27 | 2020-11-20 | 长城计算机软件与系统有限公司 | 基于混淆处理的文件加密方法及解密方法 |
CN111984940A (zh) * | 2019-05-22 | 2020-11-24 | 北京奇虎科技有限公司 | So文件的加固方法、装置、电子设备和存储介质 |
CN112818359A (zh) * | 2020-12-31 | 2021-05-18 | 北京深思数盾科技股份有限公司 | 一种文件保护方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102860A (zh) * | 2014-08-11 | 2014-10-15 | 北京奇虎科技有限公司 | 安卓平台应用程序的保护方法、运行方法、装置及系统 |
CN104239786A (zh) * | 2014-10-13 | 2014-12-24 | 北京奇虎科技有限公司 | 免root主动防御配置方法及装置 |
CN104392181A (zh) * | 2014-11-18 | 2015-03-04 | 北京奇虎科技有限公司 | So文件的保护方法、装置及安卓安装包的加固方法和系统 |
-
2015
- 2015-12-17 CN CN201510955012.4A patent/CN105608391B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102860A (zh) * | 2014-08-11 | 2014-10-15 | 北京奇虎科技有限公司 | 安卓平台应用程序的保护方法、运行方法、装置及系统 |
CN104239786A (zh) * | 2014-10-13 | 2014-12-24 | 北京奇虎科技有限公司 | 免root主动防御配置方法及装置 |
CN104392181A (zh) * | 2014-11-18 | 2015-03-04 | 北京奇虎科技有限公司 | So文件的保护方法、装置及安卓安装包的加固方法和系统 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293852A (zh) * | 2016-08-19 | 2017-01-04 | 北京奇虎科技有限公司 | 一种加固安装包的资源文件的方法和装置 |
CN106681828A (zh) * | 2016-12-09 | 2017-05-17 | 北京奇虎科技有限公司 | 一种加固安卓安装包的动态链接库so文件的方法和装置 |
CN108460276A (zh) * | 2016-12-09 | 2018-08-28 | 北京奇虎科技有限公司 | 一种安卓安装包的动态链接库so文件的处理方法和装置 |
CN108460276B (zh) * | 2016-12-09 | 2022-01-25 | 北京奇虎科技有限公司 | 一种安卓安装包的动态链接库so文件的处理方法和装置 |
CN106708571A (zh) * | 2016-12-13 | 2017-05-24 | 北京奇虎科技有限公司 | 资源文件的加载方法、装置和加固资源文件的方法、装置 |
CN109766141A (zh) * | 2018-12-26 | 2019-05-17 | 北京思源互联科技有限公司 | 一种基于动态链接库的数据动态更新方法及其装置 |
CN109766717A (zh) * | 2018-12-26 | 2019-05-17 | 北京思源互联科技有限公司 | 一种基于动态链接库的静态资源保护方法及其装置 |
CN111984940A (zh) * | 2019-05-22 | 2020-11-24 | 北京奇虎科技有限公司 | So文件的加固方法、装置、电子设备和存储介质 |
CN111258590A (zh) * | 2020-05-06 | 2020-06-09 | 华控清交信息科技(北京)有限公司 | 一种代码执行方法、装置和用于代码执行的装置 |
CN111258590B (zh) * | 2020-05-06 | 2020-08-18 | 华控清交信息科技(北京)有限公司 | 一种代码执行方法、装置和用于代码执行的装置 |
CN111967002A (zh) * | 2020-07-09 | 2020-11-20 | 国家计算机网络与信息安全管理中心 | 一种应用程序的加壳检测方法及装置 |
CN111967032A (zh) * | 2020-08-27 | 2020-11-20 | 长城计算机软件与系统有限公司 | 基于混淆处理的文件加密方法及解密方法 |
CN111967032B (zh) * | 2020-08-27 | 2023-08-25 | 长城计算机软件与系统有限公司 | 基于混淆处理的文件加密方法及解密方法 |
CN112818359A (zh) * | 2020-12-31 | 2021-05-18 | 北京深思数盾科技股份有限公司 | 一种文件保护方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105608391B (zh) | 2019-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105608391A (zh) | 多elf文件保护方法及系统 | |
US9213826B2 (en) | System and method to protect Java bytecode code against static and dynamic attacks within hostile execution environments | |
CN105608346A (zh) | 基于arm指令虚拟化的elf文件保护方法及系统 | |
US9141787B2 (en) | Interlocked binary protection using whitebox cryptography | |
CN103620613A (zh) | 用于基于虚拟机监视器的反恶意软件安全的系统和方法 | |
EP1869606A1 (en) | Software protection | |
CN107430650B (zh) | 保护计算机程序以抵御逆向工程 | |
Shioji et al. | Code shredding: byte-granular randomization of program layout for detecting code-reuse attacks | |
Protsenko et al. | Dynamic self-protection and tamperproofing for android apps using native code | |
Lim et al. | Structural analysis of packing schemes for extracting hidden codes in mobile malware | |
Fleischer et al. | Memory corruption attacks within Android TEEs: a case study based on OP-TEE | |
CN105825085A (zh) | 应用程序的处理方法及装置 | |
Huang et al. | Return-oriented vulnerabilities in ARM executables | |
El-Harake et al. | Blocking advertisements on android devices using monitoring techniques | |
Willems et al. | Using memory management to detect and extract illegitimate code for malware analysis | |
Bogad et al. | Harzer roller: Linker-based instrumentation for enhanced embedded security testing | |
Mori et al. | A tool for analyzing and detecting malicious mobile code | |
Babar et al. | Generic unpacking techniques | |
Li et al. | Towards a generic framework for automating extensive analysis of android applications | |
Saıdi et al. | Experiences in malware binary deobfuscation | |
Aboughadareh et al. | Mixed-mode malware and its analysis | |
Rose et al. | IronNetInjector: Weaponizing. NET Dynamic Language Runtime Engines | |
US20170147798A1 (en) | Mobile Device And Method Of Operating Mobile Device | |
AU2002219852A1 (en) | Systems and methods for preventing unauthorized use of digital content | |
Xu et al. | A Dynamic Online Protection Framework for Android Applications. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220802 Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015 Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Patentee before: Qizhi software (Beijing) Co.,Ltd. |
|
TR01 | Transfer of patent right |