CN107480476A - 一种基于ELF感染的Android本地层指令编译虚拟化加壳方法 - Google Patents
一种基于ELF感染的Android本地层指令编译虚拟化加壳方法 Download PDFInfo
- Publication number
- CN107480476A CN107480476A CN201710453423.2A CN201710453423A CN107480476A CN 107480476 A CN107480476 A CN 107480476A CN 201710453423 A CN201710453423 A CN 201710453423A CN 107480476 A CN107480476 A CN 107480476A
- Authority
- CN
- China
- Prior art keywords
- files
- code
- virtual machine
- encryption
- elf
- 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
- 238000000034 method Methods 0.000 title claims abstract description 42
- 208000015181 infectious disease Diseases 0.000 title claims abstract description 17
- 241001634817 Cydia Species 0.000 claims abstract description 13
- 239000000758 substrate Substances 0.000 claims abstract description 11
- 238000000605 extraction Methods 0.000 claims abstract description 7
- 230000006870 function Effects 0.000 claims description 25
- 238000013507 mapping Methods 0.000 claims description 20
- 238000009877 rendering Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 7
- 230000007246 mechanism Effects 0.000 claims description 5
- 230000009466 transformation Effects 0.000 claims description 3
- 230000004224 protection Effects 0.000 description 11
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 210000003811 finger Anatomy 0.000 description 1
- 230000004217 heart function Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000003014 reinforcing effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 210000003813 thumb Anatomy 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/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
Abstract
本发明公开了一种基于ELF感染的Android本地层指令编译虚拟化加壳方法,该方法对待保护的so文件进行Hex抽取和映射虚拟,形成虚拟机so文件,并对so文件的关键代码段进行加密,形成加密后的so文件;利用虚拟机so文件对加密后的so文件进行ELF感染,形成感染后的so文件;利用Cydia Substrate框架对加密后so文件进行Hook替换,使虚拟机so文件中的虚拟指令码替换加密后so文件中被加密的代码。本发明中使用的是编译时虚拟的思想,这一思想不涉及不同ARM平台版本的问题,因此具有良好的兼容性,能够防止内存Dump分析同时增大了攻击者的攻击成本。
Description
技术领域
本发明属于Android应用程序加固技术领域,具体涉及一种基于ELF感染的本地层so文件的编译时虚拟化加壳保护,并结合Cydia Substrate框架进行hook实现核心功能正常调用的保护技术。
背景技术
近年来,随着手机应用的蓬勃发展,每年的产量呈指数式的增长,据统计,目前我国主要的应用商店的APP已累计超过1000万。APP在给人们生活带来方便的同时,也给不法分子造就了可乘之机,严重影响APP产业的健康发展。
对于APP的保护由最初的dex的简单加固到目前对dex的抽取加固,保护的对象也由dex层转移到了本地层,同时开发者将APP很多的核心算法写到了本地层,从而保护本地层成为了Android APP代码保护的重要趋势。
现有的对于本地层文件的保护主要有UPX加壳、ELF文件Section段加密和OLLVM混淆,这些Android本地层保护方法只是能够从表面上起到阻止静态分析的作用,但都不能从本质上来应对动态分析和有经验的逆向攻击者。有经验的逆向攻击者进行动态分析调试,选择合适的时机对在内存中还原的so进行Dump;除此之外,现有的OLLVM混淆主要是针对源码级别的代码编译混淆,虽然保护力度大,但是可操作性弱。因此以上方法在Android本地层so保护时都存在一定的局限性,而Android本地层的so文件又通常是整个Android App中核心逻辑代码的重要实现部分,所以亟待一种既能够防止内存Dump分析同时又能够兼顾以上保护优点的方法。
发明内容
针对上述现有技术中存在的问题,本发明的目的在于,提供一种将ARM指令在编译时就进行虚拟化,以使得在增加逻辑复杂性的同时,也能够在编译的时候增加编译混淆方法。
为了实现上述任务,本发明采用以下技术方案:
一种基于ELF感染的Android本地层指令编译虚拟化加壳方法,包括以下步骤:
查找so文件中需要进行保护的关键代码段,对关键代码段进行指令Hex抽取和映射虚拟,形成虚拟机so文件;对所述的需要保护的关键代码段进行加密处理,得到关键代码段被加密后的so文件;
利用虚拟机so文件对加密后的so文件进行ELF感染,形成感染后的so文件;利用Cydia Substrate框架对加密后so文件进行Hook替换,使虚拟机so文件中的虚拟指令码替换加密后so文件中被加密的代码。
进一步地,所述的查找so文件中需要进行保护的关键代码段,对关键代码段进行指令Hex抽取和映射虚拟,形成虚拟机so文件,包括:
根据开发者提供的标签进行查找,定位到关键代码段,对关键代码段进行Hex抽取,将抽取后的结果使用自定义的映射规则进行映射变换,使关键代码段中的每一个代码按照映射规则对应一个虚拟指令码;与此同时,自定义用于指令读取以及解释所述虚拟指令码的解释引擎,该解释引擎根据虚拟指令码调用相应的处理函数以等同实现虚拟指令码对应的关键代码段中代码的功能;将虚拟指令码、解释引擎加入到so文件中进行编译,形成虚拟机so文件。
进一步地,利用虚拟机so文件对加密后的so文件进行ELF感染,形成感染后的so文件,包括:
对于加密后的so文件,修改该so文件的字符串表,添加所述的虚拟机so文件;在so文件的程序头表中添加程序加载时的内存映射信息;修改so文件中程序段表和动态段,使二者指向虚拟机so文件。
进一步地,利用Cydia Substrate框架对加密后的so文件进行Hook替换,使虚拟机so文件中的虚拟指令码替换加密后so文件中被加密的代码,包括:
在Cydia Substrate框架下,加载感染后的so文件,对该so文件中加密过的关键代码的方法名进行查找;利用框架提供的内联Hook机制,根据关键代码的方法的符号地址,在原so文件加载到内存中之后,在关键代码段的开始处完成跳转替换,跳转到虚拟机so文件中的虚拟指令码处;当执行完虚拟机so文件中虚拟指令码之后,跳回到原so文件。
本发明与现有技术相比具有以下技术特点:
1.本发明极大地增加了攻击者的攻击成本以及保护程序的复杂性;
2.由于对本地层so中的关键代码进行了加密操作,并且之后并没有内存中还原,故而本发明可以防止攻击者通过动态调试分析dump出还原后的so文件;于此同时,动态Hook修复,使得目标so利用dump永远是不可能正确的;
3.本发明中使用的是编译时虚拟的思想,这一思想不涉及不同ARM平台版本的问题,因此具有良好的兼容性,同时,其性能也明显优于其他方法。
附图说明
图1为本发明方法的流程图;
图2为实施例中libnative.so文件的保护过程;
图3为代码的原始指令到虚拟指令码的映射规则图;
图4中(a)和(b)分别是对待保护的so文件中的关键代码段加密前后的文件对比图;
图5为虚拟机so文件被注入后运行时优先加载虚拟机so文件的示意图;
图6是Hook修复的示意图;
具体实施方式
本发明提出了一种基于ELF感染的Android本地层指令编译虚拟化加壳方法,包括以下步骤:
步骤1,输入待保护的Android本地层动态链接库文件,通常为.so文件格式,称为so文件;查找so文件中需要进行保护的关键代码段,对关键代码段进行指令Hex抽取和映射虚拟,形成虚拟机so文件;
如图2所示,本实施例中,libnative.so为待保护的so文件,本发明首先根据开发者提供的标签进行查找定位到关键代码段,如图中虚线区域所示,对该部分代码进行HEX抽取,将抽取之后的结果使用自定义的映射规则进行映射变换。
所谓的自定义映射规则,指的是自行设置一套映射规则,使得能够对待保护的关键代码段中的每一条代码的原始arm指令都根据这一映射规则生成相应的虚拟指令码VCode。如图3所示,为一段关键代码映射为一段虚拟指令集的过程:
首先抽取出关键的ARM指令的HEX码,根据字节码的语义,E3 A0对应着A0 00;0001对应着10 00,最后真实的字节码E3 A0 00 01对应着虚拟字节码A0 00 10 00;其他的类似,最后就会生成对应的虚拟字节码。
与此同时,自定义用于指令读取以及解释所述的虚拟指令码VCode的解释引擎,该解释引擎就类似于一个CPU,是一个能够自动完成指令读取以及指令解释执行的调度器,其调度的过程具体如下:首先读取虚拟指令码VCode,根据VCode去调用相应的处理函数进行关键代码段中原代码的等同执行。在此之后,将包含有VCode,解释引擎等的虚拟新节加入原so文件中进行编译,生成虚拟机so文件libvm.so。
本发明是要对Android so文件中的关键代码进行指令虚拟化,因此需要自定义一套字节码,然后使用一个解释引擎完成指令的读取以及运行。
前面提到的关键代码段中的代码与虚拟指令码之间的映射规则的建立方法是多样的,不同的本领域技术人员完全可以自定义不同的映射规则;为了保证映射规则的健壮性,发明人提供了一种具体的映射规则以供参考:
(1-1)先将arm架构上的汇编指令进行分类,主要分为数据传送指令、算数指令、控制转移指令等;
(1-2)对于每一类指令分别建立如下映射规则,仅以几条关键指令为例:
a.数据传送指令:mov->0xa0
b.算数指令:add->0xa1
c.控制转移指令:return->0xa2
即,将每一类指令指定一个与其对应的虚拟指令。
(1-3)调度规则的设计:本方案根据以上映射规则进行功能替换,设置相应的处理函数去代替原指令的执行,即利用不同的处理处理函数来实现与原指令相同的功能;以mov指令来说,在读取其虚拟指令0xa0时,转而去调用其处理函数vm_mov(),该处理函数所实现的功能是与mov指令一致的,从而通过处理函数的组合来实现原代码的功能。处理函数的设置是现有的技术手段,在此不赘述。
(1-4)解释引擎的设计:在该函数中完成寄存器以及立即数的传送,其中建立Vcode和Handler的一个映射关系,对于不同代码的虚拟Vcode进行不同的方法的映射,一个个进行读取解释。
步骤2,针对于原so文件,对所述的需要保护的关键代码段进行加密处理,得到关键代码段被加密后的so文件;这里的加密主要是指对于so文件,根据其自身的ELF文件格式,找到其中待保护的关键代码段,然后选择一种加密方法,例如RSA算法、异或算法等进行加密处理,生成加密后的so文件。
如图2所示,本实例中,对待保护的原libnative.so的关键代码段进行加密处理,生成加密版本so文件libnative_cipher.so,该步骤旨在增加攻击者在静态分析时的逆向攻击的难度和复杂度。
(2-1)解析待加密libnative.so文件的ELF文件头,获取其中程序头表的程序头内容在整个so文件的偏移值以及段表描述符的大小的值和程序头表中程序头的个数这些字段的信息。
(2-2)根据so文件程序头部的结构中的段类型描述符得到ELF文件动态段的偏移值和大小;
(2-3)根据(2-2)中得到的动态段,遍历动态段找到动态符号表、动态符号字符串表、符号哈希表文件中的偏移和动态符号字符串表的大小;
(2-4)根据待保护的so文件中关键代码段中的函数的方法名,计算所对应的哈希值;
(2-5)根据(2-4)中的哈希值,找到哈希表中对应的ELF文件的解析规则找到对应的字符串值,然后与函数名进行比较,若不等,根据ELF解析规则找下一个符号值,直到找到为止;
(2-6)根据(2-5)中得到的结果使用异或算法操作对其进行加密处理。
步骤3,利用虚拟机so文件对加密后的so文件进行ELF感染,形成感染后的so文件;该步骤主要是在加密后的so文件中,注入虚拟机壳,即步骤1得到的虚拟机so文件,使得原so文件在实际加载运行时先去执行这个虚拟机壳,再执行原逻辑,以此实现关键代码段的保护和隐藏,具体步骤包括:
(3-1)对于加密后的so文件,修改该so文件的字符串表,添加所述的虚拟机so文件;为了防止因添加操作所引起的一系列文件偏移的改变,将添加过后的字符串表移至整个so文件的末尾;
(3-2)在so文件的程序头表中添加程序加载时的内存映射信息;用于完成新字符串表在内存的映射,与(3-1)中类似,把添加了数据的这部分表移至整个so文件末尾;
(3-3)修改so文件中程序段表和动态段,使二者指向虚拟机so文件。
在上面的操作完成后,等原so文件加载时的时候会优先指向注入的so文件,为下面的Hook步骤做好准备。
步骤4,利用Cydia Substrate框架对加密后的so文件进行Hook替换,在加密的so文件加载到内存中后,在此时利用内存也将编译形成的虚拟机so文件也加载到内存中,利用虚拟机so文件中的虚拟指令码替换加密后so文件中被加密的原关键代码段中的代码。等执行完Hook以后,此时上层调用的时候,调用的是虚拟机so文件的关键代码对应的虚拟指令码。
这一步是为了保证在程序动态执行时不还原原so文件关键代码的前提下,实现核心功能,具体是第一步是判断要Hook的位置点为ARM指令还是Thumb指令,第二步是构造跳转指令,也就是构造要跳转到自己要执行的函数处的指令。第三步是就是替换函数的逻辑的编写,比如上面提到的虚拟机so文件中的虚拟指令码,最后是完成指令的修正,等替换完以后要保证能够跳回去继续执行原有程序逻辑。本实施例的具体步骤如下:
(4-1)加载感染后的so文件,在Cydia Substrate框架下,编写Hook代码,通过dlopen系统函数加载被加密过关键代码段的libnative_cipher.so文件,通过dlsym系统函数对libnative_cipher.so中加密过的关键代码的方法名进行查找,为后面的Hook替换做好准备;
(4-2)通过Cydia Substrate框架提供的内联Hook机制,通过上一步中得到的关键函数的方法的符号地址,根据关键代码的方法的符号地址,在原so文件加载到内存中之后,在关键代码段的开始处完成跳转替换,跳转到虚拟机so文件libvm.so中的虚拟指令码处;当执行完虚拟机so文件中虚拟指令码之后,跳回到原so文件。继续执行接下来的原程序逻辑。
因此,在最终Java层调用关键方法时,函数替换会自动完成,并执行核心操作。
本发明中需要将待保护的so文件进行加密,但要同时不破坏APP原有的核心功能的实现,所以如何在不影响java层调用的情况下选择合适的时机对保护后的方法进行Hook替换是所必须考虑的一个难点。
本方案中Hook替换时间的选定,根据的是在java层调用函数的时机明显是晚于本地层函数的Hook替换这一机制设计的,具体的理解步骤为:
(1)开始时通过loadlibrary加载加密后的so文件到内存中,但这个so文件很明显方法是加密的不能运行的。
(2)通过前面ELF感染的方法,对加密过的so文件libnative_cipher.so进行感染,优先加载虚拟机libvm.so文件。
(3)这时候会优先的加载虚拟机so,此时加密过的so通过loadlibrary也加载到了内存中,这时候运用Cydia substrator的机制进行HOOK方法替换。
(4)java层进行调用本地层的重要方法时此时已经完成了HOOK替换,调用的不再是加密过的so文件libnative_cipher.so中加密处理过的方法,而是HOOK替换后的虚拟机中的方法。
通过以上的运行加载时机可以完美的解决Hook替换时间的选定问题。
仿真实验:
实验环境:
硬件:谷歌Nexus 5手机
软件:Android4.4.2
实验过程:
1.首先编写一个测试的APK,通过Toast显示在本地层进行某个算法得到的数值;
2.根据标签对待保护的so中的关键代码进行抽取、映射并进行虚拟,最后编译形成一个编译虚拟的libHookNative.cy.so;
3.对待保护的中的关键代码的进行加密处理,如图四所示(a)(b)分别是加密前后的文件对比。可见IDA对加密后的关键代码进行错误的解析。
4.对处理后的关键本地层文件进行ELF感染,使得Android Java层在调用本地层的函数时能够优先加载虚拟机libHookNative.cy.so,此时加密过的so已经通过java层载入进内存中。这里借助的是Cydia Substrator框架进行Hook,并修复。如图5所示是优先加载的虚拟so,和图6所示进行的Hook修复。
5.此时由于Java层的运行时机要慢很多,进行本地层方法调用时已经是替换回来的虚拟机方法,因此整个加壳系统可以完美的运行。
Claims (4)
1.一种基于ELF感染的Android本地层指令编译虚拟化加壳方法,其特征在于,包括以下步骤:
查找so文件中需要进行保护的关键代码段,对关键代码段进行指令Hex抽取和映射虚拟,形成虚拟机so文件;对所述的需要保护的关键代码段进行加密处理,得到关键代码段被加密后的so文件;
利用虚拟机so文件对加密后的so文件进行ELF感染,形成感染后的so文件;利用CydiaSubstrate框架对加密后so文件进行Hook替换,使虚拟机so文件中的虚拟指令码替换加密后so文件中被加密的代码。
2.如权利要求1所述的基于ELF感染的Android本地层指令编译虚拟化加壳方法,其特征在于,所述的查找so文件中需要进行保护的关键代码段,对关键代码段进行指令Hex抽取和映射虚拟,形成虚拟机so文件,包括:
根据开发者提供的标签进行查找,定位到关键代码段,对关键代码段进行Hex抽取,将抽取后的结果使用自定义的映射规则进行映射变换,使关键代码段中的每一个代码按照映射规则对应一个虚拟指令码;与此同时,自定义用于指令读取以及解释所述虚拟指令码的解释引擎,该解释引擎根据虚拟指令码调用相应的处理函数以等同实现虚拟指令码对应的关键代码段中代码的功能;将虚拟指令码、解释引擎加入到so文件中进行编译,形成虚拟机so文件。
3.如权利要求1所述的基于ELF感染的Android本地层指令编译虚拟化加壳方法,其特征在于,利用虚拟机so文件对加密后的so文件进行ELF感染,形成感染后的so文件,包括:
对于加密后的so文件,修改该so文件的字符串表,添加所述的虚拟机so文件;在so文件的程序头表中添加程序加载时的内存映射信息;修改so文件中程序段表和动态段,使二者指向虚拟机so文件。
4.如权利要求1所述的基于ELF感染的Android本地层指令编译虚拟化加壳方法,其特征在于,利用Cydia Substrate框架对加密后的so文件进行Hook替换,使虚拟机so文件中的虚拟指令码替换加密后so文件中被加密的代码,包括:
在Cydia Substrate框架下,加载感染后的so文件,对该so文件中加密过的关键代码的方法名进行查找;利用框架提供的内联Hook机制,根据关键代码的方法的符号地址,在原so文件加载到内存中之后,在关键代码段的开始处完成跳转替换,跳转到虚拟机so文件中的虚拟指令码处;当执行完虚拟机so文件中虚拟指令码之后,跳回到原so文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710453423.2A CN107480476B (zh) | 2017-06-15 | 2017-06-15 | 一种基于ELF感染的Android本地层指令编译虚拟化加壳方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710453423.2A CN107480476B (zh) | 2017-06-15 | 2017-06-15 | 一种基于ELF感染的Android本地层指令编译虚拟化加壳方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107480476A true CN107480476A (zh) | 2017-12-15 |
CN107480476B CN107480476B (zh) | 2020-05-19 |
Family
ID=60594822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710453423.2A Expired - Fee Related CN107480476B (zh) | 2017-06-15 | 2017-06-15 | 一种基于ELF感染的Android本地层指令编译虚拟化加壳方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107480476B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446552A (zh) * | 2018-03-13 | 2018-08-24 | 山东超越数控电子股份有限公司 | 一种国产操作系统平台下的软件安全性的实现方法 |
CN108804913A (zh) * | 2018-04-27 | 2018-11-13 | 北京奇艺世纪科技有限公司 | 应用程序的运行方法和装置 |
CN110245467A (zh) * | 2019-05-13 | 2019-09-17 | 西北大学 | 基于Dex2C与LLVM的Android应用程序保护方法 |
CN110348206A (zh) * | 2019-07-11 | 2019-10-18 | 网易(杭州)网络有限公司 | 应用于安卓安装包apk的保护方法、介质、装置和计算设备 |
CN110389753A (zh) * | 2019-06-06 | 2019-10-29 | 五八有限公司 | 原生应用的链式调用方法、装置、电子设备及存储介质 |
CN113536328A (zh) * | 2020-04-21 | 2021-10-22 | 中国移动通信集团重庆有限公司 | 链接库文件加密的方法、装置及计算设备 |
WO2021232311A1 (zh) * | 2020-05-20 | 2021-11-25 | 深圳市欢太科技有限公司 | 文件处理方法、文件处理装置、存储介质与电子设备 |
CN116483734A (zh) * | 2023-06-16 | 2023-07-25 | 荣耀终端有限公司 | 一种基于编译器的插桩方法、系统及相关电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1977551A2 (en) * | 2006-01-25 | 2008-10-08 | SafeNet, Inc. | Binding a protected application program to shell code |
CN105046117A (zh) * | 2015-06-30 | 2015-11-11 | 西北大学 | 一种具有指令集随机化的代码虚拟化软件保护系统 |
CN105608346A (zh) * | 2015-12-25 | 2016-05-25 | 北京奇虎科技有限公司 | 基于arm指令虚拟化的elf文件保护方法及系统 |
CN106096338A (zh) * | 2016-06-07 | 2016-11-09 | 西北大学 | 一种具有数据流混淆的虚拟化软件保护方法 |
-
2017
- 2017-06-15 CN CN201710453423.2A patent/CN107480476B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1977551A2 (en) * | 2006-01-25 | 2008-10-08 | SafeNet, Inc. | Binding a protected application program to shell code |
CN105046117A (zh) * | 2015-06-30 | 2015-11-11 | 西北大学 | 一种具有指令集随机化的代码虚拟化软件保护系统 |
CN105608346A (zh) * | 2015-12-25 | 2016-05-25 | 北京奇虎科技有限公司 | 基于arm指令虚拟化的elf文件保护方法及系统 |
CN106096338A (zh) * | 2016-06-07 | 2016-11-09 | 西北大学 | 一种具有数据流混淆的虚拟化软件保护方法 |
Non-Patent Citations (2)
Title |
---|
汤战勇、房鼎益等: "一种具有指令集随机化的代码虚拟化保护系统", 《华中科技大学学报》 * |
韩子诺、刘嘉勇: "基于Android平台的SO加固技术研究", 《现代计算机》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446552A (zh) * | 2018-03-13 | 2018-08-24 | 山东超越数控电子股份有限公司 | 一种国产操作系统平台下的软件安全性的实现方法 |
CN108804913A (zh) * | 2018-04-27 | 2018-11-13 | 北京奇艺世纪科技有限公司 | 应用程序的运行方法和装置 |
CN108804913B (zh) * | 2018-04-27 | 2021-04-06 | 北京奇艺世纪科技有限公司 | 应用程序的运行方法和装置 |
CN110245467A (zh) * | 2019-05-13 | 2019-09-17 | 西北大学 | 基于Dex2C与LLVM的Android应用程序保护方法 |
CN110389753A (zh) * | 2019-06-06 | 2019-10-29 | 五八有限公司 | 原生应用的链式调用方法、装置、电子设备及存储介质 |
CN110389753B (zh) * | 2019-06-06 | 2024-01-23 | 五八有限公司 | 原生应用的链式调用方法、装置、电子设备及存储介质 |
CN110348206A (zh) * | 2019-07-11 | 2019-10-18 | 网易(杭州)网络有限公司 | 应用于安卓安装包apk的保护方法、介质、装置和计算设备 |
CN113536328A (zh) * | 2020-04-21 | 2021-10-22 | 中国移动通信集团重庆有限公司 | 链接库文件加密的方法、装置及计算设备 |
WO2021232311A1 (zh) * | 2020-05-20 | 2021-11-25 | 深圳市欢太科技有限公司 | 文件处理方法、文件处理装置、存储介质与电子设备 |
CN116483734A (zh) * | 2023-06-16 | 2023-07-25 | 荣耀终端有限公司 | 一种基于编译器的插桩方法、系统及相关电子设备 |
CN116483734B (zh) * | 2023-06-16 | 2024-03-19 | 荣耀终端有限公司 | 一种基于编译器的插桩方法、系统及相关电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107480476B (zh) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107480476A (zh) | 一种基于ELF感染的Android本地层指令编译虚拟化加壳方法 | |
EP3682362B1 (en) | Call path dependent authentication | |
CN109643343B (zh) | 使用虚拟地址映射对目标应用功能的基于内核的检测 | |
US11687645B2 (en) | Security control method and computer system | |
EP3807797B1 (en) | Pointer authentication and dynamic switching between pointer authentication regimes | |
Kornau | Return oriented programming for the ARM architecture | |
CN106096338B (zh) | 一种具有数据流混淆的虚拟化软件保护方法 | |
CN102592082B (zh) | 通过操作码随机化的安全 | |
CN105260659B (zh) | 一种基于qemu的内核级代码重用型攻击检测方法 | |
Lu et al. | AutoD: Intelligent blockchain application unpacking based on JNI layer deception call | |
WO2016094840A2 (en) | System, method & computer readable medium for software protection via composable process-level virtual machines | |
CN107729725A (zh) | 一种基于虚拟机指令修改的Android应用加固系统及方法 | |
US20220382885A1 (en) | Cryptographic computing using encrypted base addresses and used in multi-tenant environments | |
CN108932406A (zh) | 虚拟化软件保护方法和装置 | |
Lu et al. | Research on intelligent detection of command level stack pollution for binary program analysis | |
CN110574009A (zh) | 用于管理对能力的使用的设备和方法 | |
CN107194246A (zh) | 一种用于实现动态指令集随机化的cpu | |
CN107577925B (zh) | 基于双重ARM指令虚拟的Android应用程序保护方法 | |
Kim et al. | Reinforcing meltdown attack by using a return stack buffer | |
CN109697339A (zh) | 一种基于动态虚拟指令变换的Android应用安全保护方法 | |
CN105989758B (zh) | 地址翻译方法和装置 | |
He et al. | Exploiting binary-level code virtualization to protect Android applications against app repackaging | |
Zhang et al. | SeBROP: blind ROP attacks without returns | |
US8935781B1 (en) | Native code module security for arm 64-bit instruction set architectures | |
CN112214266A (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 | ||
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: 20200519 Termination date: 20210615 |