• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于操作碼合并的Python程序防逆轉(zhuǎn)算法

    2018-05-30 01:26:26王小強(qiáng)顧乃杰
    計(jì)算機(jī)工程 2018年5期
    關(guān)鍵詞:基本塊源碼字節(jié)

    王小強(qiáng),顧乃杰

    (1.中國(guó)科學(xué)技術(shù)大學(xué) a.計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院; b.先進(jìn)技術(shù)研究院,合肥 230027;2.安徽省計(jì)算與通信軟件重點(diǎn)實(shí)驗(yàn)室,合肥 230027)

    0 概述

    Python是一種面向?qū)ο蟮慕忉屝陀?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,由于語(yǔ)法簡(jiǎn)潔清晰、簡(jiǎn)單易學(xué)、免費(fèi)、開源、擴(kuò)展性強(qiáng)等優(yōu)點(diǎn),自從20世紀(jì)90年代誕生以來(lái),就廣受歡迎和使用,如網(wǎng)絡(luò)文件同步工具Dropbox、社交新聞?wù)军c(diǎn)Reddit、網(wǎng)絡(luò)問答社區(qū)知乎,都是由Python編程語(yǔ)言所開發(fā)。Python字節(jié)碼文件(.pyc)由Python編程語(yǔ)言編寫的程序編譯而成,與傳統(tǒng)的針對(duì)特定處理器和操作系統(tǒng)的二進(jìn)制文件相比,Python字節(jié)碼文件保留了Python源碼文件中的全部信息,是針對(duì)Python虛擬機(jī)的具有特定結(jié)構(gòu)和特征的文件,具有可跨平臺(tái)使用的特性。正是因?yàn)樽止?jié)碼文件的這種結(jié)構(gòu)和特征,導(dǎo)致其極易被攻擊者反編譯出其中的源碼,如使用uncompyle2[1]、Decompyle++[2]、Easy Python Decompiler[3]等工具就可以將Python字節(jié)碼文件反編譯為源碼文件,這不僅會(huì)造成重要數(shù)據(jù)結(jié)構(gòu)、算法、業(yè)務(wù)邏輯的暴露,而且會(huì)給開發(fā)者帶來(lái)巨大的經(jīng)濟(jì)損失,有時(shí)甚至具有嚴(yán)重的安全隱患。

    針對(duì)上述問題,本文提出一種基于操作碼合并的Python程序防逆轉(zhuǎn)算法。在不影響Python程序正確執(zhí)行的前提下,引入新操作碼對(duì)原Python操作碼集進(jìn)行擴(kuò)充,并在編譯生成字節(jié)碼文件時(shí)使用新操作碼來(lái)代替操作碼序列中的2個(gè)或多個(gè)操作碼,從而縮短Python字節(jié)碼文件中操作碼序列的長(zhǎng)度,改變操作碼序列的結(jié)構(gòu)和語(yǔ)義。

    1 傳統(tǒng)Python字節(jié)碼文件防逆轉(zhuǎn)方法

    1.1 代碼混淆

    代碼混淆旨在通過布局混淆、數(shù)據(jù)混淆、控制流混淆[4-5]等措施,將一個(gè)程序轉(zhuǎn)換為能夠妨礙攻擊者理解其中算法和數(shù)據(jù)結(jié)構(gòu)或能夠阻止攻擊者從程序文本中提取有價(jià)值信息的另一種形式[6-7]。

    雖然Java、Python等腳本語(yǔ)言經(jīng)代碼混淆后編譯生成的字節(jié)碼文件可以跨平臺(tái)使用,但是其仍然遵守原來(lái)的文件格式和指令集,因此,代碼混淆技術(shù)對(duì)Python字節(jié)碼文件的保護(hù)能力不足。此外,代碼混淆在處理多文件項(xiàng)目中的導(dǎo)入模塊和對(duì)象名稱時(shí)有局限性,且該方法會(huì)給代碼執(zhí)行效率帶來(lái)一定的影響。

    1.2 本地編譯

    本地編譯是一種將Python腳本程序和解釋器一起編譯為平臺(tái)相關(guān)程序的技術(shù),其工作步驟為[8]:首先編寫Python源碼程序,然后借助特定的工具(如py2exe[9])將目標(biāo)腳本程序進(jìn)行轉(zhuǎn)換并且將Python解釋器編譯為平臺(tái)相關(guān)的動(dòng)態(tài)鏈接庫(kù),最后運(yùn)用一個(gè)額外的可執(zhí)行程序來(lái)運(yùn)行該動(dòng)態(tài)鏈接程序和轉(zhuǎn)換后的文件。

    雖然本地編譯技術(shù)對(duì)Python程序起到了一定的保護(hù)作用,但是采用這種方式,Python程序在發(fā)布時(shí)需要同時(shí)發(fā)布解釋器對(duì)應(yīng)的動(dòng)態(tài)鏈接程序和腳本文件所依賴的所有庫(kù)文件,導(dǎo)致目標(biāo)程序所占用的空間大大增加。

    1.3 數(shù)字水印

    數(shù)字水印通常是永久鑲嵌在宿主數(shù)據(jù)中的具有可鑒別性的數(shù)字信號(hào)或模式,其可以用來(lái)標(biāo)識(shí)作者、所有者、發(fā)行者、使用者等信息[10-11],且不影響宿主數(shù)據(jù)的可用性。使用數(shù)字水印技術(shù)并不能阻止字節(jié)碼文件被反編譯[12],但是能夠阻止數(shù)字產(chǎn)品被偷竊,或者當(dāng)偷竊發(fā)生時(shí)為使用者提供數(shù)字產(chǎn)品的擁有權(quán)證明[13]。

    雖然理論上水印能夠作為軟件所有權(quán)的有力憑證,但實(shí)際中無(wú)論是靜態(tài)水印還是動(dòng)態(tài)水印,都很容易通過混淆變換和優(yōu)化等措施從軟件中被移除[14-15],因此,水印技術(shù)并不能為Java、Python等字節(jié)碼文件提供有效保護(hù)。

    1.4 操作碼替換

    除上述防逆轉(zhuǎn)方法外,研究人員在操作碼替換領(lǐng)域也進(jìn)行了研究。操作碼替換技術(shù)是將字節(jié)碼文件中的每個(gè)操作碼替換為其他操作碼,使得編譯生成的字節(jié)碼文件對(duì)于標(biāo)準(zhǔn)的解釋器而言包含非法的操作碼序列,以此達(dá)到防逆轉(zhuǎn)的目的。

    操作碼替換技術(shù)已分別被基于虛擬機(jī)Dropbox[16]和基于PC的應(yīng)用,在操作碼隨機(jī)化的安全[17]中實(shí)現(xiàn),且網(wǎng)絡(luò)上已有工具python-obfuscation[18]對(duì)Python操作碼進(jìn)行隨機(jī)替換。但是,該技術(shù)的實(shí)質(zhì)是利用密碼學(xué)中的單表代替密碼[19],如果攻擊者了解采取的保護(hù)方式,就可以利用操作碼的一些統(tǒng)計(jì)學(xué)規(guī)律進(jìn)行分析,如采用頻率分析進(jìn)行攻擊,因此,該技術(shù)的安全性不足。

    2 操作碼合并

    Python字節(jié)碼文件易被反編譯的主要原因是字節(jié)碼文件保留了Python源碼文件的所有信息,且字節(jié)碼文件中操作碼序列的結(jié)構(gòu)和每個(gè)操作碼的含義極易被攻擊者分析和理解。因此,改變操作碼序列的結(jié)構(gòu)或隱藏操作碼的含義,是保護(hù)Python字節(jié)碼文件的重要方法,但是,這類方法又會(huì)對(duì)虛擬機(jī)執(zhí)行字節(jié)碼文件的結(jié)果造成影響。鑒于此,本文將探索如何利用窺孔優(yōu)化策略,在不影響字節(jié)碼文件正確執(zhí)行的前提下,通過引入新操作碼來(lái)對(duì)Python操作碼集進(jìn)行擴(kuò)充,進(jìn)而改變Python字節(jié)碼文件中操作碼序列的結(jié)構(gòu),最終達(dá)到防逆轉(zhuǎn)的目的。

    2.1 基本概念

    定義1操作碼

    操作碼即Python虛擬機(jī)中的指令碼,占1 Byte的長(zhǎng)度,其規(guī)定了Python虛擬機(jī)需要執(zhí)行哪一條指令。目前,Python 2.7.9版本的虛擬機(jī)規(guī)范中定義了110個(gè)操作碼,其中不帶參數(shù)的操作碼共61個(gè),帶一個(gè)參數(shù)的操作碼共49個(gè),每個(gè)參數(shù)占2 Byte的長(zhǎng)度。

    定義2操作碼序列

    一個(gè)字節(jié)碼文件的操作碼序列S由操作碼和其所帶的參數(shù)構(gòu)成,操作碼序列結(jié)構(gòu)如圖1所示,其中,OPi為操作碼,ARGij為OPi的參數(shù)。OPi、ARGij均為正整數(shù),1≤i≤n,1≤j≤2,n為一個(gè)字節(jié)碼文件所包含的操作碼總數(shù)。

    圖1操作碼序列示意圖

    Python虛擬機(jī)執(zhí)行字節(jié)碼文件的本質(zhì)是利用循環(huán)依序讀取操作碼序列中的一個(gè)操作碼OPi和2個(gè)字節(jié)參數(shù)ARGi1與ARGi2,然后查找并執(zhí)行OPi對(duì)應(yīng)的解釋程序,修改虛擬機(jī)內(nèi)部眾多的狀態(tài)值,接著再讀取下一個(gè)操作碼OP(i+1)和字節(jié)參數(shù)ARG(i+1)1與ARG(i+1)2,重復(fù)上述步驟直至操作碼序列讀取結(jié)束。

    定義3基本塊

    基本塊是由S中順序執(zhí)行的若干個(gè)操作碼構(gòu)成的序列。通常情況下,若S中沒有出現(xiàn)條件跳轉(zhuǎn)、絕對(duì)跳轉(zhuǎn)操作,則這些操作碼處于同一個(gè)基本塊中。

    定義4基本塊信息

    字節(jié)碼文件的基本塊信息B是一個(gè)由正整數(shù)構(gòu)成的單調(diào)不減序列,其長(zhǎng)度與操作碼序列S相同,且其中的每個(gè)元素與S中的每個(gè)操作碼一一對(duì)應(yīng),元素值為對(duì)應(yīng)的操作碼在S中所在的基本塊號(hào)。圖2所示為一個(gè)基本塊信息,從圖中可以看出,S中第1個(gè)操作碼處于第1個(gè)基本塊,第2個(gè)~第5個(gè)操作碼處于第2個(gè)基本塊,依此類推。

    圖2基本塊信息示意圖

    2.2 操作碼合并算法

    本文提出的操作碼合并算法流程如圖3所示。其中,操作碼序列提取與頻率統(tǒng)計(jì)的目的是尋找待合并的操作碼序列;基本塊信息提取是為了從大量的待合并操作碼序列中選出可以合并的序列,減少對(duì)操作碼集擴(kuò)充的干擾;操作碼集擴(kuò)充是添加新操作碼的定義與解釋執(zhí)行。

    圖3操作碼合并算法流程

    2.2.1 操作碼序列提取

    本文提取Python/Lib下的1 950個(gè)庫(kù)文件源程序?qū)?yīng)的1 950個(gè)操作碼序列。這些程序通常提供接口給其他模塊進(jìn)行導(dǎo)入,其功能多樣且不會(huì)隨意發(fā)生改變,選它們進(jìn)行操作碼序列提取較為合理。1 950個(gè)操作碼序列中,最長(zhǎng)的操作碼序列包含10 000多個(gè)操作碼,最短的也包含60個(gè)操作碼,共有操作碼240 263個(gè)。

    2.2.2 頻率統(tǒng)計(jì)

    頻率統(tǒng)計(jì)的目的是獲取候選合并對(duì)象。在2.2.1節(jié)獲取多個(gè)操作碼序列Sx的基礎(chǔ)上,統(tǒng)計(jì)出Sx中所有長(zhǎng)度為len的操作碼子序列出現(xiàn)的次數(shù),并按出現(xiàn)次數(shù)從高到底進(jìn)行排序,其中,2≤len,1≤x≤k。

    2.2.3 基本塊信息提取

    基本塊信息的提取是在眾多的候選子序列中篩選出可以合并的子序列。在2.2.2節(jié)的排序結(jié)果中,靠前的對(duì)象并不一定都是可以進(jìn)行合并的操作碼子序列,原因是有些子序列中的操作碼處于不同的基本塊中,如果將該類操作碼進(jìn)行合并,將會(huì)破壞程序的執(zhí)行邏輯。因此,需要進(jìn)一步根據(jù)程序執(zhí)行邏輯來(lái)提取上述操作碼序列Sx的基本塊信息Bx,計(jì)算表達(dá)式如下:

    其中,n為Sx中操作碼的個(gè)數(shù),1≤i

    表1 部分長(zhǎng)度為2 Byte的操作碼子序列以及其出現(xiàn)次數(shù)

    2.2.4 操作碼集擴(kuò)充

    操作碼集擴(kuò)充是利用窺孔優(yōu)化策略將出現(xiàn)頻率較高且處于同一個(gè)基本塊中的操作碼子序列(OP1,OP2,…,OPlen)合并為一個(gè)新的操作碼OPnew,并在Python虛擬機(jī)中添加對(duì)OPnew的解釋執(zhí)行過程,使得對(duì)OPnew的解釋執(zhí)行效果與依次執(zhí)行(OP1,OP2,…,OPlen)的效果等價(jià)。

    圖4 操作碼合并示意圖

    因?yàn)樵赑ython字節(jié)碼序列中任意一個(gè)操作碼僅占1 Byte的大小,所以最多可以定義28個(gè)操作碼。而在Python 2.7.9版本的虛擬機(jī)規(guī)范中僅使用了其中的110個(gè)操作碼,因此,可以利用剩余的146個(gè)操作碼來(lái)定義新操作碼,從而在利用操作碼合并縮短序列的同時(shí)隱藏操作碼序列的含義。本文對(duì)表1中的5個(gè)子序列進(jìn)行合并,并在Python 2.7.9中利用剩余的146個(gè)操作碼中的5個(gè)來(lái)表示合并后的OPnew。

    Python 3在Python 2的基礎(chǔ)上對(duì)某些語(yǔ)法和模塊進(jìn)行調(diào)整和改動(dòng),因?yàn)橥瑯幼裱僮鞔a僅占1 Byte長(zhǎng)度的特性和操作碼解釋執(zhí)行的機(jī)制,所以操作碼合并算法可以在Python 3上實(shí)現(xiàn),如Python 3.6.1使用了256個(gè)操作碼中的119個(gè),只能利用剩余的137個(gè)操作碼來(lái)定義新操作碼。

    在操作碼僅占1 Byte長(zhǎng)度的基礎(chǔ)上進(jìn)行操作碼合并,會(huì)大大限制操作碼合并的擴(kuò)展空間。若要生成和使用更多的操作碼,則必須增加操作碼所占存儲(chǔ)空間的大小(如將操作碼大小全部設(shè)為2 Byte或?qū)⒉糠植僮鞔a設(shè)為2 Byte),但該操作會(huì)因多次讀取操作碼而導(dǎo)致程序執(zhí)行效率下降。

    2.3 算法性能分析

    2.3.1 安全性

    Ox=min(256nx+2mx,f)

    (1)

    2.3.2 執(zhí)行效率

    當(dāng)Python虛擬機(jī)執(zhí)行字節(jié)碼文件時(shí),每次只能讀取一個(gè)操作碼和一個(gè)參數(shù),并調(diào)用相應(yīng)的解釋執(zhí)行過程。操作碼合并前后Python虛擬機(jī)執(zhí)行字節(jié)碼文件運(yùn)行過程如圖5所示。

    圖5 操作碼合并前后執(zhí)行過程對(duì)比

    如圖5(a)所示,由于操作碼序列中包含ADD、SUB列操作,因此需要讀取2次操作碼和參數(shù)以對(duì)棧頂?shù)?個(gè)元素a和b出棧、求和,將結(jié)果r1壓棧,然后對(duì)棧頂元素r1和c出棧、求差,將結(jié)果r再壓棧。式(2)為操作碼合并前Python虛擬機(jī)執(zhí)行源碼文件filex.py的時(shí)間。

    (2)

    如圖5(b)所示,操作碼合并后用新操作碼ADD_SUB代替原先的2個(gè)操作碼,用新操作碼一次完成棧頂3個(gè)元素a、b、c出棧,并將a+b-c的結(jié)果r運(yùn)算完之后再壓棧。該操作雖然增加了編譯源碼文件所需的時(shí)間,但減少了冗余的讀取操作及修改Python虛擬機(jī)內(nèi)部狀態(tài)的次數(shù),且編譯后的字節(jié)碼文件在以后的運(yùn)行過程中無(wú)需再次編譯,從而提升了字節(jié)碼文件的執(zhí)行效率。

    式(3)為操作碼合并后Python虛擬機(jī)執(zhí)行源碼文件filex.py的時(shí)間。

    (3)

    操作碼合并算法的整體性能與合并前后的字節(jié)碼文件執(zhí)行時(shí)間有關(guān)。式(4)為操作碼合并前后字節(jié)碼文件執(zhí)行時(shí)間的變化率。

    (4)

    2.3.3 存儲(chǔ)空間

    操作碼合并將操作碼序列Sx中連續(xù)出現(xiàn)的多個(gè)操作碼合并為一個(gè)新操作碼,在不減少Sx中參數(shù)個(gè)數(shù)的同時(shí)減少了操作碼的個(gè)數(shù),從而縮短了操作碼序列的長(zhǎng)度,如原本需占用(nx+2mx) Byte的操作碼序列,現(xiàn)只需占用(nx+2mx-gx(num)) Byte即可,字節(jié)碼文件的大小縮小了(gx(num)) Byte。在需要存儲(chǔ)和導(dǎo)入大量模塊時(shí),該方法有利于節(jié)約計(jì)算機(jī)磁盤和內(nèi)存。同時(shí),基于操作碼合并生成的字節(jié)碼文件需要新的解釋器來(lái)解釋執(zhí)行,這就需要客戶安裝指定的Python解釋器。雖然在首次使用時(shí)會(huì)給客戶帶來(lái)一些不便(以后無(wú)需再次安裝),但該過程也是為了確保程序的安全性。

    3 實(shí)驗(yàn)結(jié)果與分析

    3.1 實(shí)驗(yàn)環(huán)境

    本文基于Python 2.7.9版本,實(shí)驗(yàn)測(cè)試平臺(tái)為Intel Xeon E5-2690,主頻2.6 GHz,252 GB內(nèi)存,操作系統(tǒng)為CentOS 6.7 64位,實(shí)驗(yàn)對(duì)象為表1中的5對(duì)操作碼。采用microbenchmark[20]來(lái)對(duì)新生成運(yùn)行環(huán)境的防逆轉(zhuǎn)效果、執(zhí)行效率、文件大小進(jìn)行檢驗(yàn)。microbenchmark包含數(shù)字運(yùn)算、字符處理等多個(gè)方面的Python源碼文件,是一個(gè)較好的測(cè)試集。

    3.2 結(jié)果分析

    3.2.1 安全性

    本文通過操作碼合并改變了原操作碼序列的結(jié)構(gòu),對(duì)原操作序列信息進(jìn)行了較好的隱藏。傳統(tǒng)的反編譯工具uncompile2、Decompyle++等無(wú)法識(shí)別合并后的操作碼序列結(jié)構(gòu),且無(wú)法理解新操作碼所包含的語(yǔ)義信息,因此,無(wú)法對(duì)新的字節(jié)碼文件進(jìn)行反編譯。

    3.2.2 執(zhí)行效率

    表2 操作碼合并前后文件執(zhí)行時(shí)間比較

    從表2中的實(shí)驗(yàn)數(shù)據(jù)可以看出,使用操作碼合并算法在參數(shù)個(gè)數(shù)不變的前提下,減少了字節(jié)碼文件中操作碼序列的操作碼個(gè)數(shù),即減少了CPU讀取操作碼的次數(shù)和多個(gè)操作碼執(zhí)行之間的跳轉(zhuǎn)次數(shù),從而縮短了程序的執(zhí)行時(shí)間。

    從表2實(shí)驗(yàn)數(shù)據(jù)中還可以看出,操作碼合并后test.pyc和pydigits.pyc文件執(zhí)行時(shí)間較之前有明顯的減少,通過分析發(fā)現(xiàn)其原因?yàn)?test.pyc操作碼序列中包含的操作碼個(gè)數(shù)較少,只需要合并若干個(gè)操作碼就可以使其個(gè)數(shù)有明顯的減少;合并前的pydigits.pyc操作碼包含在循環(huán)中,因?yàn)檠h(huán)中的操作碼被多次執(zhí)行,每次執(zhí)行的時(shí)間較合并前都有所減少,所以使得整個(gè)操作碼序列的執(zhí)行時(shí)間有明顯減少。

    3.2.3 存儲(chǔ)空間

    表3 操作碼合并前后文件大小比較

    從表3可以看出,操作碼合并后所有字節(jié)碼文件的大小都有所減小。

    4 結(jié)束語(yǔ)

    本文提出基于操作碼合并的Python字節(jié)碼文件防逆轉(zhuǎn)算法,與文獻(xiàn)[21]基于隱藏參數(shù)的方法相同,都是通過擴(kuò)充操作碼集來(lái)改變操作碼序列的內(nèi)容和結(jié)構(gòu),最終達(dá)到防逆轉(zhuǎn)的目的。雖然目前兩者都受限于操作碼僅占1 Byte長(zhǎng)度的特性,存在擴(kuò)展空間不足的問題,但本文算法建立在對(duì)操作碼序列特征統(tǒng)計(jì)分析的基礎(chǔ)上,其不會(huì)因程序運(yùn)行時(shí)參數(shù)的變化而產(chǎn)生影響,通用性較強(qiáng)。實(shí)驗(yàn)結(jié)果表明,在字節(jié)碼文件執(zhí)行效率和文件大小兩方面,本文算法在操作碼合并前后都有明顯提升。為進(jìn)一步提升字節(jié)碼文件的安全性和算法的適用性,下一步將考慮通過抽象語(yǔ)法樹的變換和優(yōu)化,對(duì)多基本塊之間的操作碼進(jìn)行合并操作。

    [1] Mysterie.A Python 2.7 byte-code decompiler[EB/OL].[2017-03-10].https://github.com/wibiti/uncompyle2.

    [2] Niwit.Decompyle-Python decompiler[EB/OL].[2017-03-10].https://sourceforge.net/projects/decompyle/?source=typ_redirect.

    [3] Extremecoders.Python 1.0-3.4 bytecode decompiler[EB/OL].[2017-03-10].https://sourceforge.net/projects/easypytho ndecompiler/.

    [4] 蔣 華,劉 勇,王 鑫.基于控制流的代碼混淆技術(shù)研究[J].計(jì)算機(jī)應(yīng)用研究,2013,30(3):897-899.

    [5] 楊 樂,周強(qiáng)強(qiáng),薛錦云.基于垃圾代碼的控制流混淆算法[J].計(jì)算機(jī)工程,2011,37(12):23-25.

    [6] KUZURIN N,SHOKUROV A,VARNOVSKY N,et al.On the concept of software obfuscation in computer security[C]//Proceedings of International Conference on Information Security.Washington D.C.,USA:IEEE Press,2007:281-298.

    [7] 徐海銀,雷植洲,李 丹.代碼混淆技術(shù)研究[J].計(jì)算機(jī)與數(shù)字工程,2007,35(10):4-7.

    [8] 鮑福良,彭俊艷,方志剛.Java類文件保護(hù)方法綜述[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2007,16(6):124-126.

    [9] Py2exe:A Python distutils extension which converts Python scripts into executable windows programs[EB/OL].[2017-03-10].http://www.py2exe.org/.

    [10] 陳明奇,鈕心忻.數(shù)字水印的研究進(jìn)展和應(yīng)用[J].通信學(xué)報(bào),2001,22(5):71-79.

    [11] 孫圣和,陸哲明.數(shù)字水印處理技術(shù)[J].電子學(xué)報(bào),2000,28(8):85-90.

    [12] 陳 晗,趙軼群,繆亞波.Java字節(jié)碼的水印嵌入[J].計(jì)算機(jī)應(yīng)用,2003,23(9):96-98.

    [13] COLLBERG C S,THOMBORSON C.Watermarking tamper-proofing and obfuscation[J].IEEE Transactions on Software Engineering,2000,28(8):735-746.

    [14] HAMILTON J,DANICIC S.An evaluation of static Java bytecode watermarking[EB/OL].[2017-02-25].https://jameshamilton.eu/sites/default/files/JavaBytecodeWatermar kingSurvey.pdf.

    [15] KUMAR K,KEHAR V,KAUR P.An evaluation of dynamic Java bytecode software watermarking algori-thms[J].International Journal of Security and Its Applications,2016,10(7):147-156.

    [16] KHOLIA D,WEGRZYN P.Looking inside the (Drop) box[EB/OL].[2017-03-01].https://www.usenix.org/system/files/conference/woot13/woot13-kholia.pdf.

    [17] J.C.斯普拉德林.通過操作碼隨機(jī)化的安全:CN 102592082 A[P].2012-07-18.

    [18] Omab.Python-obfuscation[EB/OL].[2017-03-10].https://github.com/citrusbyte/python-obfuscation.

    [19] STALLINGS M.Cryptography and network security[M].王章宜,楊 敏,杜瑞穎,等,譯.北京:電子工業(yè)出版社,2012.

    [20] MODZELEWSKI K.Microbenchmarks[EB/OL].[2017-03-10].https://github.com/dropbox/pyston/tree/master/micro benchmarks.

    [21] GUELTON S.Building an obfuscated Python interpreter:we need more opcodes[EB/OL].[2017-03-10].https://blog.quarkslab.com/building-an-obfuscated-python-interpreter-we-need-more-opcodes.html.

    猜你喜歡
    基本塊源碼字節(jié)
    基于網(wǎng)頁(yè)源碼結(jié)構(gòu)理解的自適應(yīng)爬蟲代碼生成方法
    基于圖神經(jīng)網(wǎng)絡(luò)的軟件源碼漏洞檢測(cè)方法
    基于級(jí)聯(lián)森林的控制流錯(cuò)誤檢測(cè)優(yōu)化算法
    No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
    距離與權(quán)重相結(jié)合的導(dǎo)向式灰盒模糊測(cè)試方法
    企業(yè)如何保護(hù)源碼
    一種檢測(cè)控制流錯(cuò)誤的多層分段標(biāo)簽方法
    No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
    簡(jiǎn)談MC7字節(jié)碼
    基于數(shù)據(jù)結(jié)構(gòu)教輔系統(tǒng)的實(shí)驗(yàn)課程改革
    又黄又爽又刺激的免费视频.| 国国产精品蜜臀av免费| 免费观看av网站的网址| 日韩电影二区| 99热这里只有精品一区| 欧美精品亚洲一区二区| 国产精品国产三级国产av玫瑰| av福利片在线观看| 丝瓜视频免费看黄片| 亚洲国产精品成人久久小说| 少妇裸体淫交视频免费看高清| 国产一区二区在线观看av| 久久99一区二区三区| 久久鲁丝午夜福利片| 赤兔流量卡办理| 国产免费又黄又爽又色| 九九爱精品视频在线观看| 啦啦啦啦在线视频资源| 国产精品久久久久久精品电影小说| 日日爽夜夜爽网站| 国产一区亚洲一区在线观看| 2022亚洲国产成人精品| 中文字幕人妻丝袜制服| 麻豆成人av视频| 男女无遮挡免费网站观看| 精品人妻一区二区三区麻豆| 亚洲av综合色区一区| av女优亚洲男人天堂| 欧美日韩国产mv在线观看视频| 久久综合国产亚洲精品| 欧美国产精品一级二级三级 | 日韩精品有码人妻一区| 亚洲激情五月婷婷啪啪| 高清黄色对白视频在线免费看 | 久久99热这里只频精品6学生| 丰满乱子伦码专区| 精品一区二区免费观看| 欧美亚洲 丝袜 人妻 在线| 国产精品一区二区性色av| 99视频精品全部免费 在线| 亚洲在久久综合| 又黄又爽又刺激的免费视频.| 亚洲精品国产av蜜桃| 国产一级毛片在线| 精品人妻熟女av久视频| 男人爽女人下面视频在线观看| 欧美日韩国产mv在线观看视频| 青青草视频在线视频观看| 亚洲一级一片aⅴ在线观看| 日韩不卡一区二区三区视频在线| 亚洲av国产av综合av卡| 日韩欧美 国产精品| 99视频精品全部免费 在线| 看十八女毛片水多多多| 亚洲经典国产精华液单| 不卡视频在线观看欧美| 免费看光身美女| 国产毛片在线视频| 亚洲无线观看免费| 国产毛片在线视频| 少妇被粗大的猛进出69影院 | 免费少妇av软件| 免费看av在线观看网站| 婷婷色av中文字幕| 免费看日本二区| 最近的中文字幕免费完整| 国产中年淑女户外野战色| 日韩一区二区三区影片| 国产黄色视频一区二区在线观看| 国内精品宾馆在线| 午夜福利影视在线免费观看| 美女cb高潮喷水在线观看| 性色avwww在线观看| 日韩欧美精品免费久久| 久久 成人 亚洲| 91久久精品国产一区二区成人| 亚洲熟女精品中文字幕| 校园人妻丝袜中文字幕| 国产视频首页在线观看| 国产黄片美女视频| 国产在视频线精品| 少妇裸体淫交视频免费看高清| 一级毛片久久久久久久久女| 丰满迷人的少妇在线观看| 国产精品欧美亚洲77777| 精品久久国产蜜桃| 日韩三级伦理在线观看| 97超视频在线观看视频| 日韩三级伦理在线观看| av又黄又爽大尺度在线免费看| 亚洲国产精品专区欧美| av播播在线观看一区| 中文欧美无线码| 欧美日韩在线观看h| 如日韩欧美国产精品一区二区三区 | 深夜a级毛片| 少妇被粗大猛烈的视频| 久久精品国产自在天天线| 精品国产乱码久久久久久小说| 最新中文字幕久久久久| 精品国产一区二区久久| 国产成人91sexporn| 丰满人妻一区二区三区视频av| 99久久精品热视频| 菩萨蛮人人尽说江南好唐韦庄| 日韩不卡一区二区三区视频在线| 日韩精品有码人妻一区| 视频区图区小说| 成人国产av品久久久| 最新的欧美精品一区二区| 22中文网久久字幕| 男的添女的下面高潮视频| 日韩欧美 国产精品| 亚洲一区二区三区欧美精品| 国产精品国产三级专区第一集| 亚洲精品视频女| 国产黄色免费在线视频| 亚洲精品视频女| 日韩av在线免费看完整版不卡| 免费观看在线日韩| 美女脱内裤让男人舔精品视频| av有码第一页| 伦理电影大哥的女人| 成人免费观看视频高清| 九草在线视频观看| 久久精品国产亚洲av涩爱| 色5月婷婷丁香| 日日摸夜夜添夜夜添av毛片| kizo精华| 欧美高清成人免费视频www| 国产在线男女| 久久毛片免费看一区二区三区| 中国美白少妇内射xxxbb| 欧美人与善性xxx| 久久久久久久久久成人| 人妻一区二区av| 精品少妇黑人巨大在线播放| 一个人看视频在线观看www免费| 久久婷婷青草| 国产在线男女| 中文资源天堂在线| 亚洲中文av在线| 女性生殖器流出的白浆| 成人免费观看视频高清| 欧美日韩综合久久久久久| 三级国产精品欧美在线观看| 天堂中文最新版在线下载| 女人久久www免费人成看片| 精品国产一区二区三区久久久樱花| 夜夜看夜夜爽夜夜摸| 国产精品国产三级专区第一集| 这个男人来自地球电影免费观看 | 欧美日韩视频高清一区二区三区二| 亚洲欧洲精品一区二区精品久久久 | 亚洲精品国产成人久久av| 午夜久久久在线观看| 99九九线精品视频在线观看视频| 久久影院123| av卡一久久| 国产精品嫩草影院av在线观看| 人妻系列 视频| 日韩电影二区| 欧美日本中文国产一区发布| 黄色一级大片看看| 在线天堂最新版资源| 久久免费观看电影| 亚洲美女黄色视频免费看| av福利片在线| 黑人高潮一二区| 老司机影院成人| 亚洲美女搞黄在线观看| 女性生殖器流出的白浆| 狂野欧美激情性xxxx在线观看| 如何舔出高潮| av网站免费在线观看视频| 久久久久久久精品精品| 99久久精品一区二区三区| 91aial.com中文字幕在线观看| 一级毛片我不卡| av视频免费观看在线观看| 国产欧美日韩综合在线一区二区 | 九草在线视频观看| 成人特级av手机在线观看| 中文字幕亚洲精品专区| 男女啪啪激烈高潮av片| 日韩免费高清中文字幕av| 在线播放无遮挡| 少妇人妻久久综合中文| 免费看av在线观看网站| av.在线天堂| 一级二级三级毛片免费看| 新久久久久国产一级毛片| 成年美女黄网站色视频大全免费 | 国产一级毛片在线| 久久免费观看电影| 一本大道久久a久久精品| a级片在线免费高清观看视频| 免费播放大片免费观看视频在线观看| 熟女人妻精品中文字幕| 插逼视频在线观看| 黄色毛片三级朝国网站 | 日本av手机在线免费观看| 老女人水多毛片| 亚洲美女黄色视频免费看| 夜夜骑夜夜射夜夜干| 久久亚洲国产成人精品v| 七月丁香在线播放| 亚洲精品国产av蜜桃| 交换朋友夫妻互换小说| 插阴视频在线观看视频| 亚洲欧美日韩东京热| 中文精品一卡2卡3卡4更新| 国产精品伦人一区二区| 男人舔奶头视频| 美女福利国产在线| 亚洲性久久影院| 国产一区亚洲一区在线观看| 熟妇人妻不卡中文字幕| 中文欧美无线码| 2021少妇久久久久久久久久久| 午夜福利,免费看| 18禁裸乳无遮挡动漫免费视频| 另类精品久久| 亚洲av国产av综合av卡| 女性被躁到高潮视频| 国产欧美亚洲国产| 9色porny在线观看| 午夜视频国产福利| 欧美精品国产亚洲| 丁香六月天网| 视频区图区小说| 一级黄片播放器| 99视频精品全部免费 在线| 偷拍熟女少妇极品色| 久久久久久久亚洲中文字幕| 五月伊人婷婷丁香| 国产亚洲一区二区精品| 男女边摸边吃奶| 成人无遮挡网站| 亚洲欧美成人精品一区二区| 亚洲欧洲日产国产| 91成人精品电影| 亚洲精品日韩av片在线观看| 亚洲精品成人av观看孕妇| 国产av精品麻豆| 免费大片18禁| 国产精品人妻久久久久久| 免费不卡的大黄色大毛片视频在线观看| 国产精品伦人一区二区| 久久热精品热| 美女内射精品一级片tv| www.av在线官网国产| 精品一区在线观看国产| 老女人水多毛片| 成人黄色视频免费在线看| 国产 精品1| 亚洲成人av在线免费| 欧美日韩视频高清一区二区三区二| 日韩视频在线欧美| 18禁裸乳无遮挡动漫免费视频| 极品教师在线视频| 久久99蜜桃精品久久| 在线 av 中文字幕| 肉色欧美久久久久久久蜜桃| 99九九在线精品视频 | 一本久久精品| 波野结衣二区三区在线| 卡戴珊不雅视频在线播放| 另类亚洲欧美激情| 欧美国产精品一级二级三级 | 我要看日韩黄色一级片| 精品视频人人做人人爽| 精品午夜福利在线看| 国产91av在线免费观看| 欧美日韩在线观看h| 水蜜桃什么品种好| 中文天堂在线官网| 国产片特级美女逼逼视频| 老司机影院毛片| 天堂8中文在线网| h视频一区二区三区| 99久久中文字幕三级久久日本| 国产精品蜜桃在线观看| 欧美日韩视频精品一区| 国产乱来视频区| 国产成人精品久久久久久| 国产精品久久久久久av不卡| 精品酒店卫生间| 国产精品女同一区二区软件| 秋霞伦理黄片| 一级a做视频免费观看| av在线老鸭窝| 成人国产av品久久久| 91精品一卡2卡3卡4卡| 一级片'在线观看视频| av黄色大香蕉| 久久精品久久久久久噜噜老黄| 99热这里只有是精品在线观看| 欧美精品一区二区大全| 国产亚洲精品久久久com| av天堂中文字幕网| 中文字幕av电影在线播放| 亚洲国产精品999| 免费av中文字幕在线| 99热这里只有是精品50| 亚洲av男天堂| 91成人精品电影| 日韩不卡一区二区三区视频在线| 精品99又大又爽又粗少妇毛片| 国产精品成人在线| 妹子高潮喷水视频| 午夜av观看不卡| 亚洲欧美日韩另类电影网站| 午夜日本视频在线| 韩国av在线不卡| a级毛片在线看网站| 老司机亚洲免费影院| 国产男女超爽视频在线观看| 亚洲高清免费不卡视频| 国产精品一区二区在线观看99| 啦啦啦中文免费视频观看日本| 久热这里只有精品99| 女人精品久久久久毛片| 久久精品国产亚洲av天美| 免费观看a级毛片全部| 国产精品一二三区在线看| 亚洲激情五月婷婷啪啪| 国产淫片久久久久久久久| 欧美三级亚洲精品| 老司机亚洲免费影院| av.在线天堂| 亚洲国产最新在线播放| 国产精品久久久久久久电影| 夜夜骑夜夜射夜夜干| 99精国产麻豆久久婷婷| 一级毛片电影观看| 欧美成人午夜免费资源| 亚洲精品乱码久久久久久按摩| av卡一久久| 欧美变态另类bdsm刘玥| 极品人妻少妇av视频| 色视频www国产| 国产精品国产三级专区第一集| 日本欧美国产在线视频| 边亲边吃奶的免费视频| 亚洲av免费高清在线观看| 欧美日韩一区二区视频在线观看视频在线| 久久国内精品自在自线图片| 在线看a的网站| 一本一本综合久久| 亚洲av欧美aⅴ国产| 女性被躁到高潮视频| 亚洲欧美一区二区三区黑人 | 亚洲av国产av综合av卡| 国产乱来视频区| 日日啪夜夜撸| 国产无遮挡羞羞视频在线观看| 国产精品成人在线| 如何舔出高潮| 亚洲av成人精品一二三区| 中文字幕免费在线视频6| 一区在线观看完整版| 亚洲精品456在线播放app| 亚洲美女黄色视频免费看| 久久精品久久久久久久性| 自拍偷自拍亚洲精品老妇| 青春草国产在线视频| 久久久午夜欧美精品| 午夜激情福利司机影院| 街头女战士在线观看网站| 欧美丝袜亚洲另类| 91aial.com中文字幕在线观看| 欧美3d第一页| 26uuu在线亚洲综合色| 中文字幕免费在线视频6| 又大又黄又爽视频免费| 国产乱人偷精品视频| 亚洲av男天堂| 国产色婷婷99| 黑人猛操日本美女一级片| 国产精品国产av在线观看| 免费av中文字幕在线| 另类亚洲欧美激情| 视频中文字幕在线观看| 女人久久www免费人成看片| av卡一久久| 黑丝袜美女国产一区| 人妻人人澡人人爽人人| 我的老师免费观看完整版| 国产老妇伦熟女老妇高清| 日韩欧美 国产精品| 水蜜桃什么品种好| 亚洲精品日韩在线中文字幕| 三级国产精品片| 亚洲欧美精品专区久久| 狠狠精品人妻久久久久久综合| 日韩不卡一区二区三区视频在线| 国产亚洲av片在线观看秒播厂| 久久久久视频综合| 久热这里只有精品99| 国产亚洲午夜精品一区二区久久| 亚洲丝袜综合中文字幕| 在线观看国产h片| 欧美人与善性xxx| 日本爱情动作片www.在线观看| 看免费成人av毛片| 一区二区三区免费毛片| 三级国产精品欧美在线观看| 亚洲欧美日韩另类电影网站| 日本色播在线视频| av线在线观看网站| 777米奇影视久久| 在线观看免费视频网站a站| a级毛片免费高清观看在线播放| 国产精品人妻久久久久久| 久久综合国产亚洲精品| 成人免费观看视频高清| 美女cb高潮喷水在线观看| 国产免费一级a男人的天堂| 乱系列少妇在线播放| 亚洲精品日韩在线中文字幕| 极品教师在线视频| 七月丁香在线播放| 99久久精品一区二区三区| av天堂久久9| 国产成人freesex在线| 91精品伊人久久大香线蕉| 人体艺术视频欧美日本| a 毛片基地| 只有这里有精品99| 国产91av在线免费观看| 一本—道久久a久久精品蜜桃钙片| 亚洲第一av免费看| 久久午夜综合久久蜜桃| av有码第一页| 热99国产精品久久久久久7| 精品人妻偷拍中文字幕| 嘟嘟电影网在线观看| 国产精品国产三级专区第一集| 51国产日韩欧美| 天天操日日干夜夜撸| 老司机影院成人| 男人舔奶头视频| 嘟嘟电影网在线观看| 亚洲av成人精品一二三区| tube8黄色片| 免费av中文字幕在线| 欧美人与善性xxx| 毛片一级片免费看久久久久| 久久99一区二区三区| 99热全是精品| 亚洲av成人精品一二三区| 亚洲国产毛片av蜜桃av| av一本久久久久| 日本黄色日本黄色录像| 亚洲欧美清纯卡通| 亚洲激情五月婷婷啪啪| 午夜精品国产一区二区电影| 黑人高潮一二区| 久久久欧美国产精品| 国产高清有码在线观看视频| 夜夜看夜夜爽夜夜摸| 最近2019中文字幕mv第一页| 婷婷色综合大香蕉| 又黄又爽又刺激的免费视频.| 丰满乱子伦码专区| 精品酒店卫生间| 欧美 亚洲 国产 日韩一| 男女边摸边吃奶| 晚上一个人看的免费电影| av免费在线看不卡| 国产成人午夜福利电影在线观看| 中文字幕av电影在线播放| 欧美日韩一区二区视频在线观看视频在线| 亚洲欧美日韩另类电影网站| 免费播放大片免费观看视频在线观看| 久久国产精品男人的天堂亚洲 | 美女中出高潮动态图| 午夜久久久在线观看| 在线精品无人区一区二区三| 日韩欧美精品免费久久| 一级,二级,三级黄色视频| 极品教师在线视频| 亚洲自偷自拍三级| 尾随美女入室| 一级毛片我不卡| 91午夜精品亚洲一区二区三区| 特大巨黑吊av在线直播| 五月玫瑰六月丁香| 亚洲性久久影院| 午夜91福利影院| 久久久久久久久久久久大奶| 在线亚洲精品国产二区图片欧美 | 国产老妇伦熟女老妇高清| 国产精品偷伦视频观看了| 亚洲av在线观看美女高潮| 日本猛色少妇xxxxx猛交久久| 亚洲在久久综合| 亚洲欧美清纯卡通| 一区二区三区精品91| 久久久久久久久久久丰满| 一级a做视频免费观看| 国产成人freesex在线| 亚洲精品国产av成人精品| 这个男人来自地球电影免费观看 | 国产高清不卡午夜福利| 51国产日韩欧美| 久久精品久久久久久噜噜老黄| 日韩视频在线欧美| 国产黄片视频在线免费观看| 男女免费视频国产| 极品教师在线视频| 国产亚洲91精品色在线| 国产在线视频一区二区| 老司机影院成人| 少妇人妻一区二区三区视频| 久久久久久久亚洲中文字幕| 少妇裸体淫交视频免费看高清| 国产熟女欧美一区二区| 性色av一级| 十分钟在线观看高清视频www | 一边亲一边摸免费视频| 看免费成人av毛片| 亚洲欧美中文字幕日韩二区| 中文字幕久久专区| a级片在线免费高清观看视频| 日本vs欧美在线观看视频 | 在线精品无人区一区二区三| 欧美性感艳星| 久久精品国产亚洲av涩爱| 一区二区三区四区激情视频| 亚洲中文av在线| 一区二区三区免费毛片| 中文字幕人妻丝袜制服| 日韩亚洲欧美综合| 中文天堂在线官网| 亚洲精品成人av观看孕妇| 黄片无遮挡物在线观看| 超碰97精品在线观看| 日韩伦理黄色片| 高清毛片免费看| 亚洲国产精品专区欧美| 少妇精品久久久久久久| 有码 亚洲区| 欧美老熟妇乱子伦牲交| 日本爱情动作片www.在线观看| 国产成人精品福利久久| 好男人视频免费观看在线| 精品熟女少妇av免费看| 曰老女人黄片| 亚洲真实伦在线观看| 国产精品蜜桃在线观看| 亚洲国产av新网站| 国产一区有黄有色的免费视频| 国产精品免费大片| 18+在线观看网站| 黄色怎么调成土黄色| .国产精品久久| av女优亚洲男人天堂| 免费高清在线观看视频在线观看| 婷婷色av中文字幕| 精品午夜福利在线看| 久久久久国产网址| 国产成人aa在线观看| 少妇人妻久久综合中文| 亚洲性久久影院| 男人和女人高潮做爰伦理| 少妇被粗大猛烈的视频| av视频免费观看在线观看| 能在线免费看毛片的网站| 黄片无遮挡物在线观看| 男人添女人高潮全过程视频| 毛片一级片免费看久久久久| 蜜臀久久99精品久久宅男| 久久久国产欧美日韩av| 欧美日韩视频高清一区二区三区二| 三级国产精品欧美在线观看| 久久久久久人妻| 成人影院久久| 国产熟女欧美一区二区| 极品教师在线视频| 久久久精品94久久精品| 你懂的网址亚洲精品在线观看| 如何舔出高潮| 男女国产视频网站| 熟女电影av网| 18禁动态无遮挡网站| 亚洲精品国产成人久久av| av.在线天堂| 午夜精品国产一区二区电影| 噜噜噜噜噜久久久久久91| 永久网站在线| 高清毛片免费看| 丰满迷人的少妇在线观看| 人妻夜夜爽99麻豆av| 高清毛片免费看| 免费大片18禁| 美女大奶头黄色视频| videos熟女内射| 一区二区三区四区激情视频| 亚洲av中文av极速乱| 国产成人精品一,二区| av卡一久久| 91aial.com中文字幕在线观看| 成年女人在线观看亚洲视频| videossex国产| 哪个播放器可以免费观看大片| 赤兔流量卡办理| av不卡在线播放| 久久久久精品久久久久真实原创| 中文资源天堂在线| 简卡轻食公司| 中国三级夫妇交换| av有码第一页| 欧美丝袜亚洲另类|