国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種腳本加密方法、腳本運行方法及裝置的制造方法

      文檔序號:10512565閱讀:184來源:國知局
      一種腳本加密方法、腳本運行方法及裝置的制造方法
      【專利摘要】本發(fā)明公開了一種腳本加密方法、腳本運行方法及裝置。所述腳本加密方法包括:在原始的操作符及其函數(shù)的對應關系表中添加自定義的操作符及其對應的函數(shù);對添加后的對應關系表中的各個操作符和各個函數(shù)的對應關系進行調整,獲得操作符關系表;根據所述操作符關系表,將腳本中的源代碼編譯為基于所述操作符的字節(jié)碼。采用本發(fā)明實施例,能夠避免源代碼被反編譯,實現(xiàn)對腳本的保護。
      【專利說明】
      一種腳本加密方法、腳本運行方法及裝置
      技術領域
      [0001]本發(fā)明涉及計算機技術領域,尤其涉及一種腳本加密方法、腳本運行方法及裝置。
      【背景技術】
      [0002]由于腳本語言(如Python,Lua等)具有易學易用,無需編譯以及能提高開發(fā)效率等特點,得到了廣泛的采用。對于使用腳本語言開發(fā)的應用程序來說,為了保護源代碼的知識產權以及應用程序的安全性,需要對源代碼通過加密進行保護。
      [0003]在現(xiàn)有技術中,腳本中源代碼保護的常用方式是將源代碼編譯為字節(jié)碼,或者進一步打包生成可執(zhí)行文件,然后再進行發(fā)布。

      【發(fā)明內容】

      [0004]【背景技術】中提及的源代碼的保護方式較簡單,使得源代碼很容易被有經驗的開發(fā)人員反編譯,無法達到保護源代碼的目的。
      [0005]本發(fā)明實施例提出一種腳本加密方法、腳本運行方法及裝置,能夠避免源代碼被反編譯,實現(xiàn)對腳本的保護。
      [0006]本發(fā)明實施例提供一種腳本加密方法,包括:
      [0007]在原始的操作符及其函數(shù)的對應關系表中添加自定義的操作符及其對應的函數(shù);
      [0008]對添加后的對應關系表中的各個操作符和各個函數(shù)的對應關系進行調整,獲得操作符關系表;
      [0009]根據所述操作符關系表,將腳本中的源代碼編譯為基于所述操作符的字節(jié)碼。
      [0010]進一步地,在所述根據所述操作符關系表,將腳本中的源代碼編譯為基于所述函數(shù)的字節(jié)碼之后,還包括:
      [0011 ]在所述基于所述操作符的字節(jié)碼中混淆基于自定義操作符的字節(jié)碼。
      [0012]在一個優(yōu)選地實施方式中,所述在所述基于所述操作符的字節(jié)碼中混淆基于自定義操作符的字節(jié)碼,具體包括:
      [0013]每編譯為一段基于所述操作符的字節(jié)碼時,產生一個對應的隨機數(shù);
      [0014]若檢測到所述對應的隨機數(shù)小于預設的閾值,在所述字節(jié)碼之后插入基于自定義操作符的無效字節(jié)碼。
      [0015]在另一個優(yōu)選地實施方式中,所述在所述基于所述操作符的字節(jié)碼中混淆基于自定義操作符的字節(jié)碼,具體包括:
      [0016]對所述基于所述操作符的字節(jié)碼進行檢測;
      [0017]每檢測到N段相鄰的字節(jié)碼中的操作符符合預設的合并規(guī)則時,將所述N段相鄰的字節(jié)碼合并為基于自定義操作符的合并字節(jié)碼;其中,N>1。
      [0018]本發(fā)明實施例還提供一種腳本運行方法,包括:
      [0019]讀取腳本中的上述基于操作符的字節(jié)碼;
      [0020]根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù);
      [0021]運行所述基于操作符的字節(jié)碼。
      [0022]在一個優(yōu)選地實施方式中,所述根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù),具體包括:
      [0023]對所述基于操作符的字節(jié)碼進行檢測,判斷每段字節(jié)碼是否為預存的基于自定義操作符的無效字節(jié)碼;
      [0024]若是,則跳過所述無效字節(jié)碼;
      [0025]若否,則根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù)。
      [0026]在另一個優(yōu)選地實施方式中,所述根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù),具體包括:
      [0027]對所述基于操作符的字節(jié)碼進行檢測,判斷每段字節(jié)碼否為預存的基于自定義操作符的合并字節(jié)碼;
      [0028]若是,則根據預存的合并規(guī)則,調用所述合并字節(jié)碼中的自定義操作符所對應的函數(shù);
      [0029]若否,則根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù)。
      [0030]相應的,本發(fā)明實施例還提供一種腳本加密裝置,包括:
      [0031]添加模塊,用于在原始的操作符及其函數(shù)的對應關系表中添加自定義的操作符及其對應的函數(shù);
      [0032]操作符關系表獲取模塊,用于對添加后的對應關系表中的各個操作符和各個函數(shù)的對應關系進行調整,獲得操作符關系表;以及,
      [0033]加密模塊,用于根據所述操作符關系表,將腳本中的源代碼編譯為基于所述操作符的字節(jié)碼。
      [0034]進一步地,所述腳本加密裝置還包括:
      [0035]混淆模塊,用于在所述基于所述操作符的字節(jié)碼中混淆基于自定義操作符的字節(jié)碼。
      [0036]在一個優(yōu)選地實施方式中,所述混淆模塊具體包括:
      [0037]隨機數(shù)產生單元,用于每編譯為一段基于所述操作符的字節(jié)碼時,產生一個對應的隨機數(shù);以及,
      [0038]無效字節(jié)碼插入單元,用于在檢測到所述對應的隨機數(shù)小于預設的閾值時,在所述字節(jié)碼之后插入基于自定義操作符的無效字節(jié)碼。
      [0039]在另一個優(yōu)選地實施方式中,所述混淆模塊具體包括:
      [0040]第二檢測單元,用于對所述基于所述操作符的字節(jié)碼進行檢測;以及,
      [0041]合并單元,用于每檢測到N段相鄰的字節(jié)碼中的操作符符合預設的合并規(guī)則時,將所述N段相鄰的字節(jié)碼合并為基于自定義操作符的合并字節(jié)碼;其中,N>1。
      [0042]相應的,本發(fā)明實施例還提供一種腳本運行裝置,包括:
      [0043]讀取模塊,用于讀取腳本中上述基于操作符的字節(jié)碼;
      [0044]操作符識別模塊,用于根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù);以及,
      [0045]運行模塊,用于運行所述基于操作符的字節(jié)碼。
      [0046]在一個優(yōu)選地實施方式中,所述操作符識別模塊具體包括:
      [0047]無效字節(jié)碼判斷單元,用于對所述基于操作符的字節(jié)碼進行檢測,判斷每段字節(jié)碼是否為預存的基于自定義操作符的無效字節(jié)碼;
      [0048]跳過單元,用于在所述無效字節(jié)碼判斷單元判定為是時,跳過所述無效字節(jié)碼;以及,
      [0049]第一調用單元,用于在所述無效字節(jié)碼判斷單元判定為否時,根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù)。
      [0050]在另一個優(yōu)選地實施方式中,所述操作符識別模塊具體包括:
      [0051]合并字節(jié)碼判斷單元,用于對所述基于操作符的字節(jié)碼進行檢測,判斷每段字節(jié)碼否為預存的基于自定義操作符的合并字節(jié)碼;
      [0052]第二調用單元,用于在所述合并字節(jié)碼判斷單元判定為是時,根據預存的合并規(guī)則,調用所述合并字節(jié)碼中的自定義操作符所對應的函數(shù);以及,
      [0053]第三調用單元,用于在所述合并字節(jié)碼判斷單元判定為否時,根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù)。
      [0054]實施本發(fā)明實施例,具有如下有益效果:
      [0055]本發(fā)明實施例提供的腳本加密方法、腳本運行方法及裝置,能夠在原始的對應關系表中添加自定義的操作符及其對應的函數(shù),并打亂添加后的對應關系表中的操作符與函數(shù)的對應關系,以根據打亂后的對應關系來對源代碼進行編譯,從而避免通過原始的對應關系表對源代碼進行反編譯,實現(xiàn)對腳本的保護;在將源代碼編譯為字節(jié)碼后,在字節(jié)碼中混淆進基于自定義操作符的字節(jié)碼,進一步避免源代碼的反編譯,實現(xiàn)對腳本的進一步的保護。
      【附圖說明】
      [0056]圖1是本發(fā)明提供的腳本加密方法的一個實施例的流程示意圖;
      [0057]圖2是本發(fā)明提供的腳本加密裝置的一個實施例的結構示意圖;
      [0058]圖3是本發(fā)明提供的腳本運行方法的一個實施例的流程示意圖;
      [0059]圖4是本發(fā)明提供的腳本運行裝置的一個實施例的結構示意圖。
      【具體實施方式】
      [0060]下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
      [0061 ]參見圖1,本發(fā)明提供的腳本加密方法的一個實施例的流程示意圖,包括:
      [0062]Sll、在原始的操作符及其函數(shù)的對應關系表中添加自定義的操作符及其對應的函數(shù);
      [0063]S12、對添加后的對應關系表中的各個操作符和各個函數(shù)的對應關系進行調整,獲得操作符關系表;
      [0064]S13、根據所述操作符關系表,將腳本中的源代碼編譯為基于所述操作符的字節(jié)碼。
      [0065]需要說明的是,現(xiàn)有的Python虛擬機可根據原始的操作符及其函數(shù)的對應關系表反編譯出腳本中的源代碼。為了避免源代碼被反編譯,在原始的對應關系表中增加若干個新的宏定義,即在原始的對應關系表中增加若干個自定義的操作符和函數(shù)。進而,將所有的函數(shù)與所有的操作符進行隨機排列,打亂對應關系表中操作符與函數(shù)的對應關系。其中,操作符即OpCode。根據打亂后的對應關系來對腳本中的源代碼進行編譯,使現(xiàn)有的Python虛擬機無法根據原始的對應關系表進行反編譯,從而實現(xiàn)對腳本的保護。
      [0066]例如,在原始的對應關系表中,定義為:
      [0067]#define L0AD_FAST 1#從局部堆棧中彈出首個變量
      [0068]#define L0AD_C0NST 2#從常量表中讀取第一個常量I
      [0069]#define C0MPARE_0P 3#比較指令
      [0070]在該對應關系表中添加新的宏定義:
      [0071]#define BINARY_ADD 5
      [0072]打亂添加后的對應關系表中的對應關系,獲得操作符關系表,在操作符關系表中,相應的定義為:
      [0073]#define L0AD_FAST 2
      [0074]#define L0AD_C0NST 5
      [0075]#define C0MPARE_0P I
      [0076]#define BINARY_ADD 3
      [0077]根據操作符關系表對表達式n>l進行編譯后,即可獲得基于操作符的字節(jié)碼:
      [0078]2 0(n)#從局部堆棧中彈出首個變量
      [0079]5 1(1)#從常量表中讀取第一個常量I
      [0080]I 4(>)#比較指令
      [0081]若現(xiàn)有的Python虛擬機根據原始的對應關系表對該字節(jié)碼進行反編譯,則將該字節(jié)碼被翻譯為:
      [0082]L0AD_C0NST 0(n)#從常量表中讀取常量O
      [0083]L0AD_FAST 4(>)#從局部堆棧中彈出第五個變量
      [0084]可見,現(xiàn)有的Python虛擬機無法反編譯出表達式n>I,從而實現(xiàn)對腳本的保護。
      [0085]進一步地,在所述根據所述操作符關系表,將腳本中的源代碼編譯為基于所述函數(shù)的字節(jié)碼之后,還包括:
      [0086]在所述基于所述操作符的字節(jié)碼中混淆基于自定義操作符的字節(jié)碼。
      [0087]需要說明的是,在根據操作符關系表對腳本中的源代碼進行編譯時,還可在編譯后的字節(jié)碼中插入混淆用的基于自定義函數(shù)的字節(jié)碼,從而對源代碼進行進一步地保護。
      [0088]在一個優(yōu)選地實施方式中,所述在所述基于所述操作符的字節(jié)碼中混淆基于自定義操作符的字節(jié)碼,具體包括:
      [0089]每編譯為一段基于所述操作符的字節(jié)碼時,產生一個對應的隨機數(shù);
      [0090]若檢測到所述對應的隨機數(shù)小于預設的閾值,在所述字節(jié)碼之后插入基于自定義操作符的無效字節(jié)碼。
      [0091 ]需要說明的是,在將源代碼編譯為字節(jié)碼時,在字節(jié)碼中隨機地插入基于自定義函數(shù)的字節(jié)碼。預先設置一個閾值,在每編譯一段字節(jié)碼時,會隨機產生一個對應的隨機數(shù),該隨機數(shù)的范圍為[O,I)。若該隨機數(shù)小于閾值,則在其對應的字節(jié)碼后面接著插入一段基于自定義操作符的無效字節(jié)碼,例如,NEW_OP_CODE args?,F(xiàn)有的Python虛擬機無法對無效字節(jié)碼進行識別,從而無法實現(xiàn)源代碼的反編譯。
      [0092]在另一個優(yōu)選地實施方式中,所述在所述基于所述操作符的字節(jié)碼中混淆基于自定義操作符的字節(jié)碼,具體包括:
      [0093]對所述基于所述操作符的字節(jié)碼進行檢測;
      [0094]每檢測到N段相鄰的字節(jié)碼中的操作符符合預設的合并規(guī)則時,將所述N段相鄰的字節(jié)碼合并為基于自定義操作符的合并字節(jié)碼;其中,N>1。
      [0095]需要說明的是,在將源代碼編譯為字節(jié)碼時,對字節(jié)碼執(zhí)行合并的操作。預先定義合并規(guī)則,其形式可以為正則表達式。然后,根據正則表達式對編譯的字節(jié)碼進行文本替換,將編譯的多段字節(jié)碼合并為一段基于自定義操作符的合并字節(jié)碼。例如,合并規(guī)則定義為將字節(jié)碼2 O和3 I合并為4 O,編譯后的字節(jié)碼為:
      [0096]2 0(n)
      [0097]3 1(1)
      [0098]I 4(>)
      [0099]在對編譯后的字節(jié)碼進行檢測時,將20(n)、3 I (I)合并為4 O,使合并后的字節(jié)碼為:
      [0100]4 O
      [0101]I 4(>)
      [0102]現(xiàn)有的Python虛擬機無法對合并字節(jié)碼進行識別,從而無法實現(xiàn)源代碼的反編譯。
      [0103]本發(fā)明實施例提供的腳本加密方法,能夠在原始的對應關系表中添加自定義的操作符及其對應的函數(shù),并打亂添加后的對應關系表中的操作符與函數(shù)的對應關系,以根據打亂后的對應關系來對源代碼進行編譯,從而避免通過原始的對應關系表對源代碼進行反編譯,實現(xiàn)對腳本的保護;在將源代碼編譯為字節(jié)碼后,在字節(jié)碼中混淆進基于自定義操作符的字節(jié)碼,進一步避免源代碼的反編譯,實現(xiàn)對腳本的進一步的保護。
      [0104]相應的,本發(fā)明還提供一種腳本加密裝置,能夠實現(xiàn)上述實施例中的腳本加密方法的所有流程。
      [0105]參見圖2,是本發(fā)明提供的腳本加密裝置的一個實施例的結構示意圖,包括:
      [0106]添加模塊21,用于在原始的操作符及其函數(shù)的對應關系表中添加自定義的操作符及其對應的函數(shù);
      [0107]操作符關系表獲取模塊22,用于對添加后的對應關系表中的各個操作符和各個函數(shù)的對應關系進行調整,獲得操作符關系表;以及,
      [0108]加密模塊23,用于根據所述操作符關系表,將腳本中的源代碼編譯為基于所述操作符的字節(jié)碼。
      [0109]進一步地,所述腳本加密裝置還包括:
      [0110]混淆模塊,用于在所述基于所述操作符的字節(jié)碼中混淆基于自定義操作符的字節(jié)碼。
      [0111]在一個優(yōu)選地實施方式中,所述混淆模塊具體包括:
      [0112]隨機數(shù)產生單元,用于每編譯為一段基于所述操作符的字節(jié)碼時,產生一個對應的隨機數(shù);以及,
      [0113]無效字節(jié)碼插入單元,用于在檢測到所述對應的隨機數(shù)小于預設的閾值時,在所述字節(jié)碼之后插入基于自定義操作符的無效字節(jié)碼。
      [0114]在另一個優(yōu)選地實施方式中,所述混淆模塊具體包括:
      [0115]第二檢測單元,用于對所述基于所述操作符的字節(jié)碼進行檢測;以及,
      [0116]合并單元,用于每檢測到N段相鄰的字節(jié)碼中的操作符符合預設的合并規(guī)則時,將所述N段相鄰的字節(jié)碼合并為基于自定義操作符的合并字節(jié)碼;其中,N>1。
      [0117]本發(fā)明實施例提供的腳本加密裝置,能夠在原始的對應關系表中添加自定義的操作符及其對應的函數(shù),并打亂添加后的對應關系表中的操作符與函數(shù)的對應關系,以根據打亂后的對應關系來對源代碼進行編譯,從而避免通過原始的對應關系表對源代碼進行反編譯,實現(xiàn)對腳本的保護;在將源代碼編譯為字節(jié)碼后,在字節(jié)碼中混淆進基于自定義操作符的字節(jié)碼,進一步避免源代碼的反編譯,實現(xiàn)對腳本的進一步的保護。
      [0118]參見圖3,本發(fā)明提供的腳本運行方法的一個實施例的流程示意圖,包括:
      [0119]S31、讀取腳本中的上述基于操作符的字節(jié)碼;
      [0120]S32、根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù);
      [0121]S33、運行所述基于操作符的字節(jié)碼。
      [0122]需要說明的是,在采用上述實施例的方法對腳本中的源代碼進行編譯后,還需采用專用的虛擬機對編譯后的字節(jié)碼進行解析才能使腳本正常運行。其中,專用的虛擬機是根據腳本的加密方法修改虛擬機代碼,并對修改后的虛擬機代碼進行編譯后獲得的。在發(fā)布應用程序時,將編譯后的字節(jié)碼和專用的虛擬機打包發(fā)布,使得編譯后的字節(jié)碼通過專用的虛擬機執(zhí)行。
      [0123]使用專用的虛擬機來運行時,先讀取編譯后的字節(jié)碼進行解析,根據操作符關系表解析出字節(jié)碼中的操作符所對應的函數(shù)進行調用,進而運行腳本。例如,在操作符關系表中,定義為:
      [0124]#define L0AD_FAST 2
      [0125]#define L0AD_C0NST 5
      [0126]#define C0MPARE_0P I
      [0127]#define BINARY_ADD 3
      [0128]編譯后的字節(jié)碼為:
      [0129]2 0(n)
      [0130]5 1(1)
      [0131]I 4(>)
      [0132]根據操作符關系表對編譯后的字節(jié)碼進行解析,解析為:
      [0133]L0AD_FAST 0(n)#從局部堆棧中彈出首個變量
      [0134]L0AD_C0NST I(I)#從常量表中讀取第一個常量I
      [0135]C0MPARE_0P 4(>)#比較指令
      [0136]調用解析出的函數(shù)來運行腳本。
      [0137]在一個優(yōu)選地實施方式中,所述根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù),具體包括:
      [0138]對所述基于操作符的字節(jié)碼進行檢測,判斷每段字節(jié)碼是否為預存的基于自定義操作符的無效字節(jié)碼;
      [0139]若是,則跳過所述無效字節(jié)碼;
      [0140]若否,則根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù)。
      [0141]需要說明的是,在對字節(jié)碼進行解析的過程中,讀取每段字節(jié)碼,若該段字節(jié)碼為預存的基于自定義操作符的無效字節(jié)碼,例如,NEW_0P_C0DE args,則跳過這段字節(jié)碼,處理下一段字節(jié)碼。
      [0142]在另一個優(yōu)選地實施方式中,所述根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù),具體包括:
      [0143]對所述基于操作符的字節(jié)碼進行檢測,判斷每段字節(jié)碼否為預存的基于自定義操作符的合并字節(jié)碼;
      [0144]若是,則根據預存的合并規(guī)則,調用所述合并字節(jié)碼中的自定義操作符所對應的函數(shù);
      [0145]若否,則根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù)。
      [0146]需要說明的是,在對字節(jié)碼進行解析的過程中,讀取每段字節(jié)碼,若該段字節(jié)碼為基于自定義操作符的合并字節(jié)碼,則根據合并規(guī)則,調用合并字節(jié)碼所對應的函數(shù)。例如,在檢測到一段字節(jié)碼為4 O時,根據合并規(guī)則識別出4 O所對應的字節(jié)碼2 O和3 1,進而調用2 O和3 I所對應的函數(shù)。
      [0147]本發(fā)明實施例提供的腳本運行方法,能夠在原始的對應關系表中添加自定義的操作符及其對應的函數(shù),并打亂添加后的對應關系表中的操作符與函數(shù)的對應關系,以根據打亂后的對應關系來對源代碼進行編譯,從而避免通過原始的對應關系表對源代碼進行反編譯,實現(xiàn)對腳本的保護;在將源代碼編譯為字節(jié)碼后,在字節(jié)碼中混淆進基于自定義操作符的字節(jié)碼,進一步避免源代碼的反編譯,實現(xiàn)對腳本的進一步的保護。
      [0148]相應的,本發(fā)明還提供一種腳本運行裝置,能夠實現(xiàn)上述實施例中的腳本運行方法的所有流程。
      [0149]參見圖4,是本發(fā)明提供的腳本運行裝置的一個實施例的結構示意圖,包括:
      [0150]讀取模塊41,用于讀取腳本中上述基于操作符的字節(jié)碼;
      [0151]操作符識別模塊42,用于根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù);以及,
      [0152]運行模塊43,用于運行所述基于操作符的字節(jié)碼。
      [0153]在一個優(yōu)選地實施方式中,所述操作符識別模塊具體包括:
      [0154]無效字節(jié)碼判斷單元,用于對所述基于操作符的字節(jié)碼進行檢測,判斷每段字節(jié)碼是否為預存的基于自定義操作符的無效字節(jié)碼;
      [0155]跳過單元,用于在所述無效字節(jié)碼判斷單元判定為是時,跳過所述無效字節(jié)碼;以及,
      [0156]第一調用單元,用于在所述無效字節(jié)碼判斷單元判定為否時,根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù)。
      [0157]在另一個優(yōu)選地實施方式中,所述操作符識別模塊具體包括:
      [0158]合并字節(jié)碼判斷單元,用于對所述基于操作符的字節(jié)碼進行檢測,判斷每段字節(jié)碼否為預存的基于自定義操作符的合并字節(jié)碼;
      [0159]第二調用單元,用于在所述合并字節(jié)碼判斷單元判定為是時,根據預存的合并規(guī)則,調用所述合并字節(jié)碼中的自定義操作符所對應的函數(shù);以及,
      [0160]第三調用單元,用于在所述合并字節(jié)碼判斷單元判定為否時,根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù)。
      [0161]本發(fā)明實施例提供的腳本運行裝置,能夠在原始的對應關系表中添加自定義的操作符及其對應的函數(shù),并打亂添加后的對應關系表中的操作符與函數(shù)的對應關系,以根據打亂后的對應關系來對源代碼進行編譯,從而避免通過原始的對應關系表對源代碼進行反編譯,實現(xiàn)對腳本的保護;在將源代碼編譯為字節(jié)碼后,在字節(jié)碼中混淆進基于自定義操作符的字節(jié)碼,進一步避免源代碼的反編譯,實現(xiàn)對腳本的進一步的保護。
      [0162]以上所述是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發(fā)明的保護范圍。
      【主權項】
      1.一種腳本加密方法,其特征在于,包括: 在原始的操作符及其函數(shù)的對應關系表中添加自定義的操作符及其對應的函數(shù); 對添加后的對應關系表中的各個操作符和各個函數(shù)的對應關系進行調整,獲得操作符關系表; 根據所述操作符關系表,將腳本中的源代碼編譯為基于所述操作符的字節(jié)碼。2.如權利要求1所述的腳本加密方法,其特征在于,在所述根據所述操作符關系表,將腳本中的源代碼編譯為基于所述函數(shù)的字節(jié)碼之后,還包括: 在所述基于所述操作符的字節(jié)碼中混淆基于自定義操作符的字節(jié)碼。3.如權利要求2所述的腳本加密方法,其特征在于,所述在所述基于所述操作符的字節(jié)碼中混淆基于自定義操作符的字節(jié)碼,具體包括: 每編譯為一段基于所述操作符的字節(jié)碼時,產生一個對應的隨機數(shù); 若檢測到所述對應的隨機數(shù)小于預設的閾值,在所述字節(jié)碼之后插入基于自定義操作符的無效字節(jié)碼。4.如權利要求2所述的腳本加密方法,其特征在于,所述在所述基于所述操作符的字節(jié)碼中混淆基于自定義操作符的字節(jié)碼,具體包括: 對所述基于所述操作符的字節(jié)碼進行檢測; 每檢測到N段相鄰的字節(jié)碼中的操作符符合預設的合并規(guī)則時,將所述N段相鄰的字節(jié)碼合并為基于自定義操作符的合并字節(jié)碼;其中,N>1。5.一種腳本運行方法,其特征在于,包括: 讀取腳本中的如權利要求1至4任一項所述的基于操作符的字節(jié)碼; 根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù); 運行所述基于操作符的字節(jié)碼。6.如權利要求5所述的腳本運行方法,其特征在于,所述根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù),具體包括: 對所述基于操作符的字節(jié)碼進行檢測,判斷每段字節(jié)碼是否為預存的基于自定義操作符的無效字節(jié)碼; 若是,則跳過所述無效字節(jié)碼; 若否,則根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù)。7.如權利要求5所述的腳本運行方法,其特征在于,所述根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù),具體包括: 對所述基于操作符的字節(jié)碼進行檢測,判斷每段字節(jié)碼否為預存的基于自定義操作符的合并字節(jié)碼; 若是,則根據預存的合并規(guī)則,調用所述合并字節(jié)碼中的自定義操作符所對應的函數(shù); 若否,則根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù)。8.一種腳本加密裝置,其特征在于,包括: 添加模塊,用于在原始的操作符及其函數(shù)的對應關系表中添加自定義的操作符及其對應的函數(shù); 操作符關系表獲取模塊,用于對添加后的對應關系表中的各個操作符和各個函數(shù)的對應關系進行調整,獲得操作符關系表;以及, 加密模塊,用于根據所述操作符關系表,將腳本中的源代碼編譯為基于所述操作符的字節(jié)碼。9.如權利要求8所述的腳本加密裝置,其特征在于,所述腳本加密裝置還包括: 混淆模塊,用于在所述基于所述操作符的字節(jié)碼中混淆基于自定義操作符的字節(jié)碼。10.如權利要求9所述的腳本加密裝置,其特征在于,所述混淆模塊具體包括: 隨機數(shù)產生單元,用于每編譯為一段基于所述操作符的字節(jié)碼時,產生一個對應的隨機數(shù);以及, 無效字節(jié)碼插入單元,用于在檢測到所述對應的隨機數(shù)小于預設的閾值時,在所述字節(jié)碼之后插入基于自定義操作符的無效字節(jié)碼。11.如權利要求9所述的腳本加密裝置,其特征在于,所述混淆模塊具體包括: 第二檢測單元,用于對所述基于所述操作符的字節(jié)碼進行檢測;以及, 合并單元,用于每檢測到N段相鄰的字節(jié)碼中的操作符符合預設的合并規(guī)則時,將所述N段相鄰的字節(jié)碼合并為基于自定義操作符的合并字節(jié)碼;其中,N>1。12.一種腳本運行裝置,其特征在于,包括: 讀取模塊,用于讀取腳本中的如權利要求1至4任一項所述的基于操作符的字節(jié)碼; 操作符識別模塊,用于根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù);以及, 運行模塊,用于運行所述基于操作符的字節(jié)碼。13.如權利要求12所述的腳本運行裝置,其特征在于,所述操作符識別模塊具體包括: 無效字節(jié)碼判斷單元,用于對所述基于操作符的字節(jié)碼進行檢測,判斷每段字節(jié)碼是否為預存的基于自定義操作符的無效字節(jié)碼; 跳過單元,用于在所述無效字節(jié)碼判斷單元判定為是時,跳過所述無效字節(jié)碼;以及,第一調用單元,用于在所述無效字節(jié)碼判斷單元判定為否時,根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù)。14.如權利要求12所述的腳本運行裝置,其特征在于,所述操作符識別模塊具體包括: 合并字節(jié)碼判斷單元,用于對所述基于操作符的字節(jié)碼進行檢測,判斷每段字節(jié)碼否為預存的基于自定義操作符的合并字節(jié)碼; 第二調用單元,用于在所述合并字節(jié)碼判斷單元判定為是時,根據預存的合并規(guī)則,調用所述合并字節(jié)碼中的自定義操作符所對應的函數(shù);以及, 第三調用單元,用于在所述合并字節(jié)碼判斷單元判定為否時,根據預存的操作符關系表,調用所述字節(jié)碼中的操作符所對應的函數(shù)。
      【文檔編號】G06F21/12GK105868589SQ201610191585
      【公開日】2016年8月17日
      【申請日】2016年3月30日
      【發(fā)明人】李康, 陳伊力
      【申請人】網易(杭州)網絡有限公司
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1