国产精品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>

      Java應(yīng)用軟件的保護(hù)方法和裝置的制造方法

      文檔序號(hào):9646727閱讀:237來源:國知局
      Java應(yīng)用軟件的保護(hù)方法和裝置的制造方法
      【技術(shù)領(lǐng)域】
      [0001] 本發(fā)明涉及計(jì)算機(jī)技術(shù),尤其涉及一種Java應(yīng)用軟件的保護(hù)方法和裝置。
      【背景技術(shù)】
      [0002] Java通過虛擬機(jī)方式運(yùn)行,具有編程時(shí)無需考慮內(nèi)存管理等優(yōu)點(diǎn),因此,被廣泛應(yīng) 用于編寫各種應(yīng)用軟件。
      [0003] 通常情況下,如圖1所示,圖1為Java應(yīng)用軟件的應(yīng)用場景示意圖,采用Java編 寫的應(yīng)用軟件源程序代碼經(jīng)過Java編譯器編譯后,生成Java字節(jié)碼(.class文件),Java 字節(jié)碼獨(dú)立于計(jì)算機(jī)硬件及操作系統(tǒng),在運(yùn)行時(shí)由Java虛擬機(jī)的Java解釋器負(fù)責(zé)解釋并 通過即時(shí)編譯器生成機(jī)器代碼而執(zhí)行。然而,由于Java字節(jié)碼中包含大量的調(diào)試信息,例 如:源文件名、行號(hào)、字段名、方法名、參數(shù)名和變量名等,這些調(diào)試信息很容易被反編譯和 通過逆向工程獲得應(yīng)用軟件完整的源程序代碼,現(xiàn)有技術(shù)中通過用無意義的字符序列來替 換調(diào)試信息中的所有名字,增加對(duì)字節(jié)碼進(jìn)行反編譯和通過逆向工程獲得應(yīng)用軟件完整的 源程序代碼的難度。
      [0004] 然而,采用現(xiàn)有技術(shù)的方法,雖然用無意義字符序列來替換調(diào)試信息中的所有名 字可以增加逆向難度,但是對(duì)于專業(yè)的逆向分析人員來說仍然很容易獲得Java應(yīng)用軟件 完整的源程序代碼,無法保護(hù)Java應(yīng)用軟件。

      【發(fā)明內(nèi)容】

      [0005] 本發(fā)明提供一種Java應(yīng)用軟件的保護(hù)方法和裝置,以保護(hù)Java應(yīng)用軟件。
      [0006] 本發(fā)明第一方面提供一種Java應(yīng)用軟件的保護(hù)方法,包括:
      [0007] 獲取Java應(yīng)用軟件的壓縮包,所述壓縮包中包含至少一個(gè)類文件;
      [0008] 獲取所述至少一個(gè)類文件中能夠進(jìn)行合并的函數(shù);
      [0009] 將所述能夠進(jìn)行合并的函數(shù)進(jìn)行函數(shù)合并處理。
      [0010] 進(jìn)一步地,所述獲取所述至少一個(gè)類文件中能夠進(jìn)行合并的函數(shù),包括:
      [0011] 根據(jù)所述至少一個(gè)類文件的訪問權(quán)限、繼承樹、所述至少一個(gè)類文件的函數(shù)的訪 問權(quán)限和所述函數(shù)的指令的訪問權(quán)限,獲取能夠進(jìn)行合并的函數(shù)。
      [0012] 進(jìn)一步地,所述將所述能夠進(jìn)行合并的函數(shù)進(jìn)行函數(shù)合并處理,包括:
      [0013] 將所述能夠進(jìn)行合并的函數(shù)的實(shí)例方法轉(zhuǎn)為能夠進(jìn)行合并的函數(shù)的靜態(tài)方法;
      [0014] 根據(jù)所述能夠進(jìn)行合并的函數(shù)的靜態(tài)方法的棧區(qū)重新構(gòu)造一個(gè)合并棧區(qū);
      [0015] 根據(jù)所述能夠進(jìn)行合并的函數(shù)的靜態(tài)方法生成一個(gè)選擇運(yùn)行函數(shù)的指令,所述指 令用于選擇運(yùn)行的函數(shù);
      [0016] 修改所述能夠進(jìn)行合并的函數(shù)的靜態(tài)方法中的指令的訪問權(quán)限;
      [0017] 根據(jù)所述合并棧區(qū)、所述選擇運(yùn)行函數(shù)的指令、所述能夠進(jìn)行合并的函數(shù)的靜態(tài) 方法中的指令的訪問權(quán)限和所述能夠進(jìn)行合并的函數(shù)的靜態(tài)方法的指令,生成一個(gè)合并函 數(shù);
      [0018] 將調(diào)用所述能夠進(jìn)行合并的函數(shù)的代碼修改為調(diào)用所述合并函數(shù)。
      [0019] 進(jìn)一步地,所述將所述能夠進(jìn)行合并的函數(shù)的實(shí)例方法轉(zhuǎn)為靜態(tài)方法,包括:
      [0020] 根據(jù)所述能夠進(jìn)行合并的函數(shù)所在類重新構(gòu)造參數(shù)列表;
      [0021] 根據(jù)所述重新構(gòu)造的參數(shù)列表生成所述能夠進(jìn)行合并的函數(shù)的靜態(tài)方法。
      [0022] 進(jìn)一步地,所述將所述能夠進(jìn)行合并的函數(shù)進(jìn)行函數(shù)合并處理,包括:
      [0023] 將所述能夠進(jìn)行合并的函數(shù)的實(shí)例方法轉(zhuǎn)為能夠進(jìn)行合并的函數(shù)的靜態(tài)方法;
      [0024] 將所述能夠進(jìn)行合并的函數(shù)的靜態(tài)方法中的內(nèi)聯(lián)函數(shù)插入到所述能夠進(jìn)行合并 的函數(shù)中的靜態(tài)方法中的調(diào)用所述內(nèi)聯(lián)函數(shù)的位置;
      [0025] 將調(diào)用所述能夠進(jìn)行合并的函數(shù)的代碼修改為調(diào)用所述合并函數(shù)。
      [0026] 本發(fā)明第二方面提供一種Java應(yīng)用軟件的保護(hù)裝置,包括:
      [0027] 第一獲取模塊,用于獲取Java應(yīng)用軟件的壓縮包,所述壓縮包中包含至少一個(gè)類 文件;
      [0028] 第二獲取模塊,用于獲取所述至少一個(gè)類文件中能夠進(jìn)行合并的函數(shù);
      [0029] 處理模塊,用于將所述能夠進(jìn)行合并的函數(shù)進(jìn)行函數(shù)合并處理。
      [0030] 進(jìn)一步地,所述第二獲取模塊具體用于根據(jù)所述至少一個(gè)類文件的訪問權(quán)限、繼 承樹、所述至少一個(gè)類文件的函數(shù)的訪問權(quán)限和所述函數(shù)的指令的訪問權(quán)限,獲取能夠進(jìn) 行合并的函數(shù)。
      [0031] 進(jìn)一步地,所述處理模塊具體用于將所述能夠進(jìn)行合并的函數(shù)的實(shí)例方法轉(zhuǎn)為能 夠進(jìn)行合并的函數(shù)的靜態(tài)方法;根據(jù)所述能夠進(jìn)行合并的函數(shù)的靜態(tài)方法的棧區(qū)重新構(gòu)造 一個(gè)合并棧區(qū);根據(jù)所述能夠進(jìn)行合并的函數(shù)的靜態(tài)方法生成一個(gè)選擇運(yùn)行函數(shù)的指令, 所述指令用于選擇運(yùn)行的函數(shù);修改所述能夠進(jìn)行合并的函數(shù)的靜態(tài)方法中的指令的訪問 權(quán)限;根據(jù)所述合并棧區(qū)、所述選擇運(yùn)行函數(shù)的指令、所述能夠進(jìn)行合并的函數(shù)的靜態(tài)方法 中的指令的訪問權(quán)限和所述能夠進(jìn)行合并的函數(shù)的靜態(tài)方法的指令,生成一個(gè)合并函數(shù); 將調(diào)用所述能夠進(jìn)行合并的函數(shù)的代碼修改為調(diào)用所述合并函數(shù)。
      [0032] 進(jìn)一步地,所所述處理模塊具體用于根據(jù)所述能夠進(jìn)行合并的函數(shù)所在類重新構(gòu) 造參數(shù)列表;根據(jù)所述重新構(gòu)造的參數(shù)列表生成所述能夠進(jìn)行合并的函數(shù)的靜態(tài)方法。
      [0033] 進(jìn)一步地,所述處理模塊具體用于將所述能夠進(jìn)行合并的函數(shù)的實(shí)例方法轉(zhuǎn)為能 夠進(jìn)行合并的函數(shù)的靜態(tài)方法;將所述能夠進(jìn)行合并的函數(shù)的靜態(tài)方法中的內(nèi)聯(lián)函數(shù)插入 到所述能夠進(jìn)行合并的函數(shù)中的靜態(tài)方法中的調(diào)用所述內(nèi)聯(lián)函數(shù)的位置;將調(diào)用所述能夠 進(jìn)行合并的函數(shù)的代碼修改為調(diào)用所述合并函數(shù)。
      [0034] 本發(fā)明提供的Java應(yīng)用軟件的保護(hù)方法和裝置,通過獲取Java應(yīng)用軟件的壓縮 包,上述壓縮包中包含至少一個(gè)類文件,根據(jù)至少一個(gè)類文件中的指令的訪問權(quán)限,對(duì)至少 一個(gè)類文件中的函數(shù)進(jìn)行合并處理,從而,將多個(gè)函數(shù)的指令合并到同一函數(shù)中,產(chǎn)生強(qiáng)混 淆的效果,同時(shí)減少了總函數(shù)數(shù)量,增加了通過反編譯和通過逆向工程獲得應(yīng)用軟件完整 的遠(yuǎn)程代碼的難度,從而實(shí)現(xiàn)保護(hù)Java應(yīng)用軟件。
      【附圖說明】
      [0035] 為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可 以根據(jù)這些附圖獲得其他的附圖。
      [0036] 圖1為Java應(yīng)用軟件的應(yīng)用場景示意圖;
      [0037] 圖2為本發(fā)明Java應(yīng)用軟件的保護(hù)方法實(shí)施例一的流程示意圖;
      [0038] 圖3為本發(fā)明Java應(yīng)用軟件的保護(hù)裝置實(shí)施例一的結(jié)構(gòu)示意圖;
      [0039] 圖4為本發(fā)明Java應(yīng)用軟件的保護(hù)裝置實(shí)施例二的結(jié)構(gòu)示意圖。
      【具體實(shí)施方式】
      [0040] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于 本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
      [0041] 一個(gè)Java應(yīng)用軟件通常包含至少一個(gè)類文件,上述至少一個(gè)類文件一般壓縮成 一個(gè)壓縮文件(例如:"jar"包),每一個(gè)類文件中包含至少
      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1