Please wait a minute...
浙江大学学报(工学版)  2019, Vol. 53 Issue (3): 555-562    DOI: 10.3785/j.issn.1008-973X.2019.03.017
计算机技术     
函数Native化的Android APP加固方法
宋言言(),罗森林,尚海,潘丽敏*(),张笈
北京理工大学 信息与电子学院,北京 100081
Android APP reinforcement method with function Nativeization
Yan-yan SONG(),Sen-lin LUO,Hai SHANG,Li-min PAN*(),Ji ZHANG
School of Information and Electronics, Beijing Instutitute of Technology, Beijing 100081, China
 全文: PDF(878 KB)   HTML
摘要:

调研动态恢复攻击的逻辑思路和Android APP中函数调用执行流程. 通过对原DEX文件进行重构和加密,将其关键Java函数属性改为Native,并添加壳DEX文件;Android APP启动后首先执行壳DEX文件,然后对原DEX进行解密和动态加载,当调用被保护函数时,保持该函数在内存中的Native属性,通过Hook技术和反射机制隐式恢复并执行原Java函数. 实验和对比分析结果表明,该方法能够在较低资源损耗和无需反编译源码的前提下获取高强度的保护效果,可以有效抵御静态分析攻击、DEX动态恢复和动态脱壳攻击.

关键词: APP加固函数Native化Hook技术动态加载Android系统    
Abstract:

The logic of dynamic recovery attack and the function call execution flow in Android APP was investigated. The original DEX file was reconstructed and encrypted; its key Java function attribute was changed to Native, and the shell DEX file was added. When the Android APP was started, the shell DEX file was executed first, and then the original DEX was decrypted and loaded dynamically. When the protected function was called, the Native property of the function in memory was maintained, and the original Java function was implicitly restored and executed by the Hook technique and the reflection mechanism. The experimental results show that the method obtains high level of protection without Source decompilation at lower resource losses, and can effectively resist static analysis attacks, DEX dynamic recovery and dynamic shelling attacks.

Key words: APP reinforcement    function-Nativezation    Hook technology    dynamic loading    Android System
收稿日期: 2018-05-16 出版日期: 2019-03-04
CLC:  TP 399  
通讯作者: 潘丽敏     E-mail: songyanyan29@163.com;panlimin@bit.edu.cn
作者简介: 宋言言(1989—),女,硕士生,从事信息安全研究. orcid.org/0000-0001-9133-904X. E-mail: songyanyan29@163.com
服务  
把本文推荐给朋友
加入引用管理器
E-mail Alert
作者相关文章  
宋言言
罗森林
尚海
潘丽敏
张笈

引用本文:

宋言言,罗森林,尚海,潘丽敏,张笈. 函数Native化的Android APP加固方法[J]. 浙江大学学报(工学版), 2019, 53(3): 555-562.

Yan-yan SONG,Sen-lin LUO,Hai SHANG,Li-min PAN,Ji ZHANG. Android APP reinforcement method with function Nativeization. Journal of ZheJiang University (Engineering Science), 2019, 53(3): 555-562.

链接本文:

http://www.zjujournals.com/eng/CN/10.3785/j.issn.1008-973X.2019.03.017        http://www.zjujournals.com/eng/CN/Y2019/V53/I3/555

图 1  函数Native化的Android APP加固方法原理图
图 2  函数Native化流程示意图
图 3  DEX文件中的类结构描述图
名称 格式 说明
method_idx_diff uleb128 函数ID
access_flags uleb128 访问权限
code_off uleb128 函数代码偏移位置
表 1  类结构中的encoded_method结构体格式描述
名称 uleb128值 说明
method_idx_diff B2 6E(0x3732) 函数ID为0x3732
access_flags 01(0x01) 访问权限为ACC_PUBLIC
code_off C8 DB 22(0x8ADC8) 文件偏移为0x8ADC8
表 2  类结构中的encoded_method示例
图 4  加壳前、后的APK结构对比
图 5  内存中描述函数的Method结构体
图 6  函数特征值获取方法示意图
函数编号 函数名 函数声明 字节码(Byte)
Method-1 testMethod (Z)Z 1 490
Method-2 testMethod (B)Z 192
Method-3 testMethod IZ 264
Method-4 testMethod (D)Z 108
Method-5 testMethod (F)Z 1 104
Method-6 testMethod (I)Z 768
Method-7 testMethod (S)Z 490
Method-8 testMethod (String;)Z 28
表 3  样本APP中的测试函数信息表
图 7  反编译实验结果
图 8  010Editor静态分析结果
图 9  动态脱壳实验结果
图 10  动态恢复实验结果
图 11  函数执行平均消耗时间
保护方法 是否函数抽取 是否Native化 时延 是否需反编译
DDI[11] 常量
代码翻译[12]
DIVILAR[13] 8.9%
所提方法 常量
表 4  所提方法与现有方法对比结果
1 RASTOGI S, BHUSHAN K, GUPTA B B Android applications repackaging detection techniques for smartphone devices[J]. Procedia Computer Science, 2016, 78: 26- 32
2 阿里聚安全. 阿里聚安全2016年报[EB/OL]. (2017-03-09)[2017-08-23]. https://yq.aliyun.com/-articles/72037.
3 COLLBERG C. A taxonomy of obfuscating transformations [D]. New Zealand: University of Auckland, 1997.
4 LOW D. Java control flow obfuscation[D]. Auckland: University of Auckland, 1998.
5 TSAI K. Android APP copy protection mechanism with semi-trusted loader [C] // 17th International Conference on Advanced Communication Technology. Seoul: IEEE, 2015: 464–467.
6 Android Open Source. Dalvik可执行文件格式[EB/OL]. (2014-07-14)[2017-08-23]. https://sourc-e.android.google.cn/devices/tech/dalvik/dexformat?hl=zhcn.
7 SCHULZ P. Code protection in Android [R/OL]. Technical Report 110, Rheinische Friedrich-Wilhelms-Universitgt Bonn, Germany, 2012. http://net.cs.uni-bonn.de/fileadmin/user_upload/plohmann/2012-Schulz-Code_Protection_in_Android.pdf.
8 王泽华. Android软件安全加固技术研究与实现[D]. 成都: 电子科技大学, 2016.
WANG Ze-hua. Research and Implementation of the Android Software Security Reinforcement Technique[D]. Chengdu: University of Electronic Science and Technology of China, 2016.
9 加固脱壳及抽代码还原方法 [EB/OL]. (2016-04-15)[2018-02-15]. http://blog.csdn.net/justfwd/article/det-ails/51164281.
10 梆梆安全. 梆梆加固[EB/OL]. (2017-01-15)[2018-02-10]. http://www.bangcle.com/.
11 MULLINER C. Android DDI: Introduction to Dynamic Dalvik Instrumentation [EB/OL]. (2014-10-15)[2018-01-02]. https://github.com/crmulliner/ddi.
12 刘惠明 安卓应用自动原生化及混淆系统[J]. 微电子学与计算机, 2016, 33 (10): 50- 62
LIU Hui-ming Automatic Android APPs translation and obfuscation system[J]. Microelectronics and Computers, 2016, 33 (10): 50- 62
13 ZHOU W, WANG Z, ZHOU Y Z. et al. DIVILAR: diversifying intermediate language for anti-repacking on Android platform [C] // Proceedings of the 4th ACM conference on Data and Application Security and Privacy, 2014: 199–210.
14 丰生强. Android软件安全与逆向方法[M]. 北京: 人民邮电出版社, 2014:152–156.
15 Sourceforge. dex2jar introduction [EB/OL]. (2016-10-11)[2017-12-20]. http://sourceforge.net/projects/dex2jar/
[1] 刘雪娇,殷一丹,陈蔚,夏莹杰,许佳丽,韩立东. 基于区块链的车联网数据安全共享方案[J]. 浙江大学学报(工学版), 2021, 55(5): 957-965.
[2] 尤明辉,殷亚凤,谢磊,陆桑璐. 基于行为感知的用户画像技术[J]. 浙江大学学报(工学版), 2021, 55(4): 608-614.
[3] 张玉琪,郭斌,丁亚三,刘思聪,於志文. 社交网络假消息辟谣作用机理[J]. 浙江大学学报(工学版), 2021, 55(4): 615-625.
[4] 徐利锋,黄海帆,丁维龙,范玉雷. 基于改进DenseNet的水果小目标检测[J]. 浙江大学学报(工学版), 2021, 55(2): 377-385.
[5] 许豪灿,李基拓,陆国栋. 由LeNet-5从单张着装图像重建三维人体[J]. 浙江大学学报(工学版), 2021, 55(1): 153-161.
[6] 康庄,杨杰,郭濠奇. 基于机器视觉的垃圾自动分类系统设计[J]. 浙江大学学报(工学版), 2020, 54(7): 1272-1280.
[7] 闫旭,范晓亮,郑传潘,臧彧,王程,程明,陈龙彪. 基于图卷积神经网络的城市交通态势预测算法[J]. 浙江大学学报(工学版), 2020, 54(6): 1147-1155.
[8] 柯懂湘,潘丽敏,罗森林,张寒青. 基于随机森林算法的Android恶意行为识别与分类方法[J]. 浙江大学学报(工学版), 2019, 53(10): 2013-2023.
[9] 吴奇龙,於志文,路新江,郭斌. 城市兴趣点演化规律的可预测性分析[J]. 浙江大学学报(工学版), 2019, 53(9): 1768-1778.
[10] 汪子龙,王柱,於志文,郭斌,周兴社. 多源数据跨国人口迁移预测[J]. 浙江大学学报(工学版), 2019, 53(9): 1759-1767.
[11] 任思源,郭斌,张曼,岳超刚,李青洋,於志文. 寄递大数据城市画像[J]. 浙江大学学报(工学版), 2019, 53(9): 1779-1787.
[12] 李诺,郭斌,刘琰,景瑶,於志文. 神经协同过滤智能商业选址方法[J]. 浙江大学学报(工学版), 2019, 53(9): 1788-1794.
[13] 刘宇,罗森林,曲乐炜,潘丽敏,张笈. 全特征信息均衡建模的内部威胁人物检测[J]. 浙江大学学报(工学版), 2019, 53(4): 777-784.
[14] 郭彤, 郭斌, 张佳凡, 於志文, 周兴社. 多源社交数据融合的多角度旅游信息感知[J]. 浙江大学学报(工学版), 2017, 51(4): 663-668.
[15] 景瑶, 郭斌, 王柱, 於志文, 周兴社. 基于群体智能挖掘的个性化商品评论呈现方法[J]. 浙江大学学报(工学版), 2017, 51(4): 675-681.