一级黄色片免费播放|中国黄色视频播放片|日本三级a|可以直接考播黄片影视免费一级毛片

高級搜索

留言板

尊敬的讀者、作者、審稿人, 關(guān)于本刊的投稿、審稿、編輯和出版的任何問題, 您可以本頁添加留言。我們將盡快給您答復(fù)。謝謝您的支持!

姓名
郵箱
手機號碼
標(biāo)題
留言內(nèi)容
驗證碼

基于指令虛擬化的安卓本地代碼加固方法

張曉寒 張源 池信堅 楊珉

張曉寒, 張源, 池信堅, 楊珉. 基于指令虛擬化的安卓本地代碼加固方法[J]. 電子與信息學(xué)報, 2020, 42(9): 2108-2116. doi: 10.11999/JEIT191036
引用本文: 張曉寒, 張源, 池信堅, 楊珉. 基于指令虛擬化的安卓本地代碼加固方法[J]. 電子與信息學(xué)報, 2020, 42(9): 2108-2116. doi: 10.11999/JEIT191036
Xiaohan ZHANG, Yuan ZHANG, Xinjian CHI, Min YANG. Protecting Android Native Code Based on Instruction Virtualization[J]. Journal of Electronics & Information Technology, 2020, 42(9): 2108-2116. doi: 10.11999/JEIT191036
Citation: Xiaohan ZHANG, Yuan ZHANG, Xinjian CHI, Min YANG. Protecting Android Native Code Based on Instruction Virtualization[J]. Journal of Electronics & Information Technology, 2020, 42(9): 2108-2116. doi: 10.11999/JEIT191036

基于指令虛擬化的安卓本地代碼加固方法

doi: 10.11999/JEIT191036
基金項目: 國家自然科學(xué)基金(U1636204, U1836210, U1836213, U1736208, 61972099, 61602123, 61602121),上海市自然科學(xué)基金(19ZR1404800),國家“九七三”重點基礎(chǔ)研究發(fā)展計劃(2015CB358800)
詳細(xì)信息
    作者簡介:

    張曉寒:男,1991年生,博士生,研究方向為系統(tǒng)與軟件安全

    張源:男,1987年生,副教授,研究方向為系統(tǒng)與軟件安全

    池信堅:男,1994年生,碩士生,研究方向為系統(tǒng)與軟件安全

    楊珉:男,1979年生,教授,研究方向為系統(tǒng)與軟件安全

    通訊作者:

    楊珉 m_yang@fudan.edu.cn

  • 1)受該加固系統(tǒng)商用收費限制,本文只能在少量應(yīng)用上進行測試
  • 中圖分類號: TN915.08; TP309.2

Protecting Android Native Code Based on Instruction Virtualization

Funds: The National Natural Science Foundation of China (U1636204, U1836210, U1836213, U1736208, 61972099, 61602123, 61602121), The Natural Science Foundation of Shanghai (19ZR1404800), The National Basic Research Program of China (973 Program) (2015CB358800)
  • 摘要: 安卓系統(tǒng)越來越廣泛地被應(yīng)用于各種類型的智能設(shè)備,比如智能手機、智能手表、智能電視、智能汽車。與此同時,針對這些平臺應(yīng)用軟件的逆向攻擊也日益增多,這不僅極大地侵犯了軟件開發(fā)者的合法權(quán)益,也給終端用戶帶來了潛在的安全風(fēng)險。如何保護運行在各種類型設(shè)備上的安卓應(yīng)用軟件不被逆向攻擊成為一個重要的研究問題。然而,現(xiàn)有的安卓軟件保護方法比如命名混淆、動態(tài)加載、代碼隱藏等雖然可在一定程度上增加安卓軟件的逆向難度,但是原理相對簡單容易被繞過。一種更為有效的方法是基于指令虛擬化的加固方法,但已有的指令虛擬化方法只針對特定架構(gòu)(x86架構(gòu)),無法兼容運行于多種架構(gòu)的安卓設(shè)備。該文針對安卓應(yīng)用軟件中的本地代碼提出了一種架構(gòu)無關(guān)的指令虛擬化技術(shù),設(shè)計并實現(xiàn)了基于虛擬機打包保護(VMPP)的加固系統(tǒng)。該系統(tǒng)包含一套基于寄存器架構(gòu)的定長虛擬指令集、支持該虛擬指令集的解釋器以及可以與現(xiàn)有開發(fā)環(huán)境集成的工具鏈。在大量C/C++代碼以及真實安卓軟件上的測試表明,VMPP在引入較低的運行時開銷下,能夠顯著提升安卓本地代碼的防逆向能力,并且可被用于保護不同架構(gòu)上的安卓本地代碼。
  • 圖  1  VMPP原理

    圖  2  示例源代碼及其生成的LLVM IR文件

    圖  3  轉(zhuǎn)化后的指令示例

    圖  4  外部函數(shù)調(diào)用表(上)與解釋器的外部函數(shù)調(diào)用代碼(下)

    圖  5  加固后的源文件示例

    圖  6  加固之前源代碼生成的可執(zhí)行文件反匯編結(jié)果

    圖  7  加固之后源代碼生成的可執(zhí)行文件反匯編結(jié)果

    表  1  VMPP虛擬指令格式

    指令類型典型指令1*2345678指令示例示例含義
    Radd0x51DstSizeSrc1Src251 01 04 0000 00 02 03r1=r2+r3
    Iaddi0x30DstSrcSizeImmediate30 01 02 0400 00 00 01r1 = r2+1
    Bjmp0x22FlagPC22 00 00 0000 00 00 04jmp 4
    CMPcmp0xc0DstModeSrc1Src2c0 01 00 0203 00 00 00r1=r2>r3
    Wload0xe4DstSizeSrce4 01 04 0200 00 00 00r1=[r2]
    Ccall0x90Num90 01 00 0000 00 00 00call 01
    Mmalloc0xa0DstImmediatea0 01 00 0000 00 00 08r1=malloc(8)
    Ethrow0x11TypeExceptionPC11 01 00 0000 00 00 06throw 01
    下載: 導(dǎo)出CSV

    表  2  VMPP有效性測試結(jié)果

    序號APP包名本地代碼主要功能代碼行數(shù)運行時間(ms)二進制體積(kB)
    加固前加固后加固前加固后
    用例Acom.zizuzi.verificationdemo通過設(shè)備ID等生成加密密鑰1236710285
    用例Bcom.masonliu.testndk計算SHA1值驗證簽名2305618297
    用例Ccom.chenneyu.security反射獲取APP簽名并校驗2213411241
    用例Dcom.panxw.aes實現(xiàn)AES算法加密字符串230122920308
    用例Ecom.ss.jni反射Java函數(shù)修改界面UI174374210237
    用例Fcom.dean.vmp01字符串運算操作57<1<16103
    用例Gcom.dean.vmp02多維數(shù)組的運算96<1<1692
    下載: 導(dǎo)出CSV

    表  3  VMPP防逆向效果實驗

    分析人員逆向所需時間(min):加固前 / 加固后加固后、加固前逆向時間比值
    用例A用例B用例C用例E用例F用例G合計
    A3 / 356 / 658 / 719 / 927 / 787 / 8240 / 42310.6
    B5 / 409 / 597 / 8010 / 1128 / 759 / 9648 / 4629.6
    C5 / 587 / 827 / 1348 / 1657 / 1179 / 12243 / 67815.8
    下載: 導(dǎo)出CSV

    表  4  VMPP兼容性測試

    序號設(shè)備名稱系統(tǒng)版本手機架構(gòu)是否兼容
    1Nexus 5Android 5.0arm32
    2Samsung S7Android 6.0arm64
    3Pixel 2XLAndroid 8.1arm64
    4Samsung S9+Android 9.0arm64
    5Genymotion EmulatorAndroid 8.0x86
    下載: 導(dǎo)出CSV

    表  5  VMPP加固和幾維加固運行時開銷對比

    序號APP包名加固前運行時間(ms)加固后運行時間(ms)加固前體積(kB)加固后體積(kB)
    VMPP幾維加固VMPP幾維加固
    用例Dcom.panxw.aes229420308583
    用例Ecom.ss.jni37423810237553
    下載: 導(dǎo)出CSV
  • 360安全互聯(lián)網(wǎng)中心. 2015年Android手機應(yīng)用盜版情況調(diào)研報告[EB/OL]. http://zt.#/1101061855.php?dtid=1101061451&did=1101657409, 2019.

    360 Security Internet Center. Investigation report on piracy of Android mobile applications[EB/OL]. http://zt.#/1101061855.php?dtid=1101061451&did=1101657409, 2019.
    HUO Meimei, WU Jianzhong, CAI Jianping, et al. An Anti-piracy method based on encryption and dynamic loading for android applications[J]. Applied Mechanics and Materials, 2014, 644/650: 2740–2743. doi: 10.4028/www.scientific.net/AMM.644-650.2740
    KIM N Y, SHIM J, CHO S J, et al. Android application protection against static reverse engineering based on multidexing[J]. Journal of Internet Services and Information Security, 2016, 6(4): 54–64.
    FALSINAT L, FRATANTONIO Y, ZANERO S, et al. Grab’n run: Secure and practical dynamic code loading for android applications[C]. The 31st Annual Computer Security Applications Conference, Los Angeles, USA, 2015: 201–210. doi: 10.1145/2818000.2818042.
    張震, 張龍. Android平臺的Native層加固技術(shù)研究與實現(xiàn)[J]. 計算機與現(xiàn)代化, 2016(10): 88–91. doi: 10.3969/j.issn.1006-2475.2016.10.018

    ZHANG Zhen and ZHANG Long. Research and implementation of native layer reinnforcement technology based on android platform[J]. Computer and Modernization, 2016(10): 88–91. doi: 10.3969/j.issn.1006-2475.2016.10.018
    趙奇. 基于LLVM的Android應(yīng)用代碼保護技術(shù)研究與實現(xiàn)[D]. [碩士論文], 北京郵電大學(xué), 2018.

    ZHAO Qi. Research and implementation of android application code protection based on LLVM[D]. [Master dissertation], Beijing University of Posts and Telecommunications, 2018.
    張一峰, 方勇. 基于LLVM的Android Native文件保護方法[J]. 通信技術(shù), 2017, 50(3): 533–538. doi: 10.3969/j.issn.1002-0802.2017.03.026

    ZHANG Yifeng and FANG Yong. Android native file protection based on LLVM[J]. Communications Technology, 2017, 50(3): 533–538. doi: 10.3969/j.issn.1002-0802.2017.03.026
    胡恒偉. 基于動態(tài)虛擬指令集的Android應(yīng)用保護技術(shù)研究[D]. [碩士論文], 南京理工大學(xué), 2018.

    HU Hengwei. Research on android application protection technology based on dynamic virtual instruction set[D]. [Master dissertation], Nanjing University of Science and Technology, 2018.
    李振. 基于LLVM的Android應(yīng)用程序編譯時虛擬化保護研究[D]. [碩士論文], 西北大學(xué), 2019.

    LI Zhen. LLVM-based android application compiletime virtualization protection method research[D]. [Master dissertation], Northwest University, 2019.
    YANG Wenbo, ZHANG Yuanyuan, LI Juanru, et al. AppSpear: Bytecode decrypting and DEX reassembling for packed android malware[C]. The 18th International Symposium on Recent Advances in Intrusion Detection, Kyoto, Japan, 2015: 359–381. doi: 10.1007/978-3-319-26362-5_17.
    KIM D, KWAK J, and RYOU J. Dwroiddump: Executable code extraction from android applications for malware analysis[J]. International Journal of Distributed Sensor Networks, 2015, 11(9): 379682. doi: 10.1155/2015/379682
    張漢寧. 基于精簡指令集的軟件保護虛擬機技術(shù)研究[D]. [碩士論文], 西北大學(xué), 2010.

    ZHANG Hanning. Research on software protection virtual machine technology based on reduced instruction set[D]. [Master dissertation], Northwest University, 2010.
    湯戰(zhàn)勇, 李光輝, 房鼎益, 等. 一種具有指令集隨機化的代碼虛擬化保護系統(tǒng)[J]. 華中科技大學(xué)學(xué)報: 自然科學(xué)版, 2016, 44(3): 28–33. doi: 10.13245/j.hust.160306

    TANG Zhanyong, LI Guanghui, FANG Dingyi, et al. A code virtualization protection system with instruction set randomization[J]. Journal of Huazhong University of Science and Technology:Natural Science Edition, 2016, 44(3): 28–33. doi: 10.13245/j.hust.160306
    杜春來, 孔丹丹, 王景中, 等. 一種基于指令虛擬化的代碼保護模型[J]. 信息網(wǎng)絡(luò)安全, 2017(2): 22–28. doi: 10.3969/j.issn.1671-1122.2017.02.004

    DU Chunlai, KONG Dandan, WANG Jingzhong, et al. A code protection model based on instruction virtualization[J]. Netinfo Security, 2017(2): 22–28. doi: 10.3969/j.issn.1671-1122.2017.02.004
    C-testsuite[EB/OL]. https://github.com/c-testsuite/c-testsuite, 2019.
    幾維安全. 移動應(yīng)用加固系統(tǒng)[EB/OL]. https://www.kiwisec.com/product/app-encrypt.html, 2019.
    SALWAN J, BARDIN S, and POTET M L. Symbolic deobfuscation: From virtualized code back to the original[C]. The 15th International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment, Saclay, France, 2018: 372–392. doi: 10.1007/978-3-319-93411-2_17.
    梁光輝, 龐建民, 單征. 基于代碼進化的惡意代碼沙箱規(guī)避檢測技術(shù)研究[J]. 電子與信息學(xué)報, 2019, 41(2): 341–347. doi: 10.11999/JEIT180257

    LIANG Guanghui, PANG Jianmin, and SHAN Zheng. Malware sandbox evasion detection based on code evolution[J]. Journal of Electronics &Information Technology, 2019, 41(2): 341–347. doi: 10.11999/JEIT180257
  • 加載中
圖(7) / 表(5)
計量
  • 文章訪問數(shù):  2230
  • HTML全文瀏覽量:  1022
  • PDF下載量:  124
  • 被引次數(shù): 0
出版歷程
  • 收稿日期:  2019-12-24
  • 修回日期:  2020-06-29
  • 網(wǎng)絡(luò)出版日期:  2020-07-17
  • 刊出日期:  2020-09-27

目錄

    /

    返回文章
    返回