欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種軟件程序的保護方法和裝置制造方法

文檔序號:6493640閱讀:150來源:國知局
一種軟件程序的保護方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種軟件程序的保護方法和裝置,屬于網絡通信領域。方法包括:獲取軟件程序的資源文件和代碼文件;解析所述代碼文件中的類信息;所述類信息包括類名和類方法名;解析所述資源文件中與所述代碼文件綁定的類信息,得到所述資源類集合;查詢所述代碼文件中解析的每個類信息,當查詢的類信息不在所述資源類集合中且不在用戶預設的類信息白名單中時,隨機生成類信息字符替換所述類信息。本發(fā)明解決了IOS/MacOSX程序編譯后的文件包含大量的類信息進而為破解者逆向破解程序提供了導向的問題,大大加大了破解難度,保護了程序的安全。
【專利說明】一種軟件程序的保護方法和裝置
【技術領域】
[0001]本發(fā)明涉及網絡通信領域,特別涉及一種軟件程序的保護方法和裝置。
【背景技術】
[0002]隨著蘋果公司推出的各種終端設備的不斷增長,基于iOS (iphone OperatingSystem,蘋果公司開發(fā)的移動設備操作系統(tǒng))平臺和MacOSX (蘋果公司開發(fā)的個人電腦的操作系統(tǒng))平臺開發(fā)的軟件程序也越來越多。
[0003]由于IOS/MacOSX程序所使用的Objective-C面向對象的特點,使得10S/Mac0SX程序編譯后的最終二進制文件包含大量的類信息,而這些類信息中的類名和類方法名為破解者逆向破解程序提供了很大的幫助,對于保護程序的實現(xiàn)原理非常不利。
[0004]參見圖1, IOS 上的 QQ2012,通過反匯編器 IDA (Interactive Disassembler,反匯編器)解析能看到原始的類名和方法名,如圖1中“App Setting”指示該類為應用軟件選項設置相關的類,這就指示破解者這是一個“App選項設置”相關的類;圖1中的“setSharelLocation”指示該類方法名是“設置分享位置”、“save App Setting”指示該類方法名是“保存設置項”,這就為破解者指示了每段程序代碼的用途,為破解者提供了方向,對于保護程序安全非常不利。

【發(fā)明內容】

[0005]為了解決現(xiàn)有技術的問題,本發(fā)明實施例提供了一種功能軟件程序的保護方法和裝置。所述技術方案如下:
[0006]一方面,提供了一種軟件程序的保護方法,所述方法包括:
[0007]獲取軟件程序的資源文件和代碼文件;
[0008]解析所述代碼文件中的類信息;所述類信息包括類名和類方法名;
[0009]解析所述資源文件中與所述代碼文件綁定的類信息,得到所述資源類集合;
[0010]查詢所述代碼文件中解析的每個類信息,當查詢的類信息不在所述資源類集合中且不在用戶預設的類信息白名單中時,隨機生成類信息字符替換所述類信息。
[0011]具體地,所述當所述類信息為類名時,所述方法包括:
[0012]解析所述資源文件中與Objective C指針或其他擴展類指針綁定的資源類名,得到資源類名集合;
[0013]解析所述代碼文件中包含字符串的節(jié),得到字符串類名集合;
[0014]查詢所述代碼文件中解析的每個類名,當查詢的類名不在所述資源類名集合中和所述字符串類名集合中、且所述類名不在用戶預設的類名白名單中以及所述類名不是代理類名時,隨機生成類名字符替換所述類名。
[0015]進一步地,所述隨機生成類名字符替換所述類名之后,還包括:
[0016]保存所述無意義的類名字符以及對應的被替換的類名;
[0017]查詢所述軟件程序的代碼文件中的每個類的成員變量和屬性;[0018]當所述成員變量或所述屬性的類型對應的類名為所述被替換的類名時,將所述成員變量或所述屬性的類型對應的類名修改為所述類名字符。
[0019]具體地,所述當所述類信息為類方法名時,所述方法包括:
[0020]解析所述資源文件中與Objective C指針或其他擴展類指針綁定的資源類方法名,得到所述資源類方法名集合;
[0021]獲取所述代碼文件中的導入表,查找所述導入表所導入的類名和其他導入庫,解析所述導入的類名和所述其他導入庫對應的類方法名,得到導入類方法名集合;
[0022]解析所述代碼文件中的每個類,查找類符合的所有協(xié)議Protocol,得到所有Protocol要求實現(xiàn)的類方法名集合,得到協(xié)議類方法名集合;
[0023]解析所述代碼文件中的每個類的成員變量,得到成員變量名集合;
[0024]查詢所述代碼文件中的每個類的類方法名,當解析的類方法名不在所述資源類方法名集合中、所述導入類方法名集合中、所述協(xié)議類方法名集合中、所述成員變量名集合中和用戶預設的類方法名白名單中時,隨機生成類方法名字符替換所述類方法名。
[0025]另一方面,提供了一種軟件程序的保護裝置,所述裝置包括:
[0026]獲取模塊,用于獲取軟件程序的資源文件和代碼文件;
[0027]第一解析模塊,用于解析所述代碼文件中的類信息;所述類信息包括類名和類方法名;
[0028]第二解析模塊,用于解析所述資源文件中與所述代碼文件綁定的類信息,得到所述資源類集合;
[0029]替換模塊,用于查詢所述代碼文件中解析的每個類信息,當查詢的類信息不在所述資源類集合中且不在用戶預設的類信息白名單中時,隨機生成類信息字符替換所述類信
肩、O
[0030]具體地,當所述第一解析模塊解析的所述類信息為類名時,
[0031]所述第一解析模塊,包括:第一解析單元,用于當所述第一解析模塊解析的所述類信息為類名時,解析所述代碼文件中包含字符串的節(jié),得到字符串類名集合;
[0032]相應地,所述第二解析模塊,包括:第二解析單元,用于當解析的所述類信息為類名時,解析所述資源文件中與Objective C指針或其他擴展類指針綁定的資源類名,得到資源類名集合;
[0033]相應地,所述替換模塊,包括:類名替換單元,用于當所述第一解析模塊解析的所述類信息為類名時,查詢所述代碼文件中解析的每個類名,當查詢的類名不在所述資源類名集合中和所述字符串類名集合中、且所述類名不在用戶預設的類名白名單中以及所述類名不是代理類名時,隨機生成類名字符替換所述類名。
[0034]進一步地,所述替換模塊,還包括:
[0035]變量替換單元,用于隨機生成類名字符替換所述類名之后,保存所述無意義的類名字符以及對應的被替換的類名;查詢所述代碼文件中的每個類的成員變量和屬性;當所述成員變量或所述屬性的類型對應的類名為所述被替換的類名時,將所述成員變量或所述屬性的類型對應的類名修改為所述類名字符。
[0036]具體地,所述當所述類信息為類方法名時,
[0037]所述第一解析模塊,包括:第三解析單元,用于獲取所述代碼文件中的導入表,查找所述導入表所導入的類名和其他導入庫,解析所述導入的類名和所述其他導入庫對應的類方法名,得到導入類方法名集合;
[0038]第四解析單元,用于解析所述代碼文件中的每個類,查找類符合的所有協(xié)議Protocol,得到所有Protocol要求實現(xiàn)的類方法名集合,得到協(xié)議類方法名集合;
[0039]第五解析單元,用于解析所述代碼文件中的每個類的成員變量,得到成員變量名集合;
[0040]相應地,所述第二解析模塊,包括:第六解析單元,用于解析所述資源文件中與Objective C指針或其他擴展類指針綁定的資源類方法名,得到所述資源類方法名集合;
[0041]相應地,所述替換模塊,包括:類方法名替換單元,用于查詢所述代碼文件中的每個類的類方法名,當解析的類方法名不在所述資源類方法名集合中、所述導入類方法名集合中、所述協(xié)議類方法名集合中、所述成員變量名集合中和用戶預設的類方法名白名單中時,隨機生成類方法名字符替換所述類方法名。
[0042]本發(fā)明實施例提供的技術方案帶來的有益效果是:
[0043]通過獲取軟件程序的資源文件和代碼文件,并解析代碼文件中的類信息以及資源文件中與代碼文件綁定的類信息得到資源類集合,查詢代碼文件中解析的每個類信息,當查詢的類信息不在資源類集合中且不在用戶預設的類信息白名單中時,隨機生成類信息字符替換類信息,解決了 IOS/MacOSX程序編譯后的文件包含大量的類信息進而為破解者逆向破解程序提供了導向的問題,大大加大了破解難度,保護了程序的安全。
【專利附圖】

【附圖說明】
[0044]為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0045]圖1是現(xiàn)有技術提供的軟件程序反匯編解析后的示意圖;
[0046]圖2是本發(fā)明實施例一提供的軟件程序的保護方法流程圖;
[0047]圖3是本發(fā)明實施例二提供的軟件程序的保護方法流程圖;
[0048]圖4是本發(fā)明實施例二提供的軟件程序經過替換保護后的示意圖;
[0049]圖5是本發(fā)明實施例三提供的軟件程序的保護裝置結構示意圖。
【具體實施方式】
[0050]為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明實施方式作進一步地詳細描述。
[0051]實施例一
[0052]參見圖2,本發(fā)明實施例提供了一種軟件程序的保護方法,該方法包括:
[0053]101、獲取軟件程序的資源文件和代碼文件;其中,該軟件程序為基于蘋果公司開發(fā)的系統(tǒng)平臺的面向對象的Objective C程序;
[0054]102、解析代碼文件中的類信息;類信息包括類名和類方法名;
[0055]103、解析資源文件中與代碼文件綁定的類信息,得到資源類集合;[0056]104、查詢代碼文件中解析的每個類信息,當查詢的類信息不在資源類集合中且不在用戶預設的類信息白名單中時,隨機生成類信息字符替換類信息。
[0057]具體地,當類信息為類名時,該方法包括:
[0058]解析資源文件中與Objective C指針或其他擴展類指針綁定的資源類名,得到資源類名集合;
[0059]解析代碼文件中包含字符串的節(jié),得到字符串類名集合;
[0060]查詢代碼文件中解析的每個類名,當查詢的類名不在資源類名集合中和字符串類名集合中、且類名不在用戶預設的類名白名單中以及類名不是代理類名時,隨機生成類名字符替換類名。
[0061]進一步地,隨機生成類名字符替換類名之后,還包括:
[0062]保存無意義的類名字符以及對應的被替換的類名;
[0063]查詢軟件程序的代碼文件中的每個類的成員變量和屬性;
[0064]當成員變量或屬性的類型對應的類名為被替換的類名時,將成員變量或屬性的類型對應的類名修改為類名字符。
[0065]具體地,當類信息為類方法名時,該方法包括:
[0066]解析資源文件中與Objective C指針或其他擴展類指針綁定的資源類方法名,得到資源類方法名集合;
[0067]獲取代碼文件中的導入表,查找導入表所導入的類名和其他導入庫,解析導入的類名和其他導入庫對應的類方法名,得到導入類方法名集合;
[0068]解析代碼文件中的每個類,查找類符合的所有協(xié)議Protocol,得到所有Protocol要求實現(xiàn)的類方法名集合,得到協(xié)議類方法名集合;
[0069]解析代碼文件中的每個類的成員變量,得到成員變量名集合;
[0070]查詢代碼文件中的每個類的類方法名,當解析的類方法名不在資源類方法名集合中、導入類方法名集合中、協(xié)議類方法名集合中、成員變量名集合中和用戶預設的類方法名白名單中時,隨機生成類方法名字符替換類方法名。
[0071]本發(fā)明實施例提供的方法,通過獲取軟件程序的資源文件和代碼文件,并解析代碼文件中的類信息以及資源文件中與代碼文件綁定的類信息得到資源類集合,查詢代碼文件中解析的每個類信息,當查詢的類信息不在資源類集合中且不在用戶預設的類信息白名單中時,隨機生成類信息字符替換類信息,解決了 IOS/MacOSX程序編譯后的文件包含大量的類信息進而為破解者逆向破解程序提供了導向的問題,大大加大了破解難度,保護了程序的安全。
[0072]實施例二
[0073]參見圖3,本發(fā)明實施例提供了一種軟件程序的保護方法,該方法包括:
[0074]201、獲取軟件程序的資源文件中的資源類名集合;
[0075]具體地,該軟件程序為為基于蘋果公司開發(fā)的系統(tǒng)平臺如蘋果公司開發(fā)的移動設備操作系統(tǒng)IOS或蘋果公司開發(fā)的個人電腦的操作系統(tǒng)MacOSX的面向對象的Objective C程序;
[0076]其中,每個i0S/Mac0SX程序由代碼和資源組成,其中代碼包含在Mach-O格式的二進制文件中;Mach-0格式由段和節(jié)組成,有部分節(jié)Objective-C運行時相關,如_DATA,_objc_classlist節(jié)包含所有Objective-C類的指針,_DATA, _objc_catlist節(jié)包含所有擴展其它類的類別的指針,通過解析這些節(jié),能得到所有類信息,包括類名、類方法名、類成員
變量名等。
[0077]具體地,首先讀取軟件程序的資源文件,即讀入iOS/MacOSX程序對應的Nib文件;然后解析資源文件中與Objective C指針或其他擴展類指針綁定的資源類名,得到資源類
々隹A
-?:? 口 O
[0078]202、獲取軟件程序的代碼文件中的字符串類名集合;
[0079]具體地,首先獲取軟件程序的代碼文件,即讀入iOS/MacOSX程序對應的Mach-O格式的代碼文件;然后解析代碼文件中包含字符串的節(jié),得到字符串類名集合;即解析代碼文件得到_cfstring節(jié)包含的字符串類名集合。
[0080]需要說明的是,步驟201和步驟202的先后順序可以更改,即也可以先執(zhí)行步驟202,再執(zhí)行步驟201。
[0081]203、查詢軟件程序的代碼文件中的所有類名,當查詢的類名不在資源類名集合中和字符串類名集合中、且該類名不在用戶預設的類名白名單中以及類名不是代理類名時,隨機生成類名字符替換類名 。
[0082]具體地,遍歷代碼文件的所有類(在_objc_classlist節(jié)中),查詢到類對應的類名部分;如果類名滿足以下條件,則跳過;否則隨機生成一個無意義的類名字符替換原來的類名:
[0083]a、類名在資源類名集合中
[0084]b、類名在字符串類名集合中
[0085]C、類名是代理類名,即以AppDelegate結尾的類名
[0086]d、類名在用戶預設的類名白名單中
[0087]其中,隨機生成類名字符替換類名之后,還需要保存無意義的類名字符以及對應的被替換的類名。
[0088]204、查詢軟件程序的代碼文件中的每個類的成員變量和屬性,當成員變量或屬性的類型對應的類名為被替換的類名時,將成員變量或屬性的類型對應的類名修改為類名字符。
[0089]具體地,遍歷查詢代碼文件的所有類,解析每個類的成員變量(ivars)和屬性(properties),如果變量或屬性的類名包含步驟203中被修改的類名,則根據步驟203中保存的無意義的類名字符以及對應的被替換的類名,將變量或屬性對應的類名中包含的類名也相應的修改。
[0090]需要說明的是,通過步驟201-204已完成對類信息中的類名的修改,參見圖4,“App Setting”指示的應用軟件選項設置的類,替換為隨機生成類名字符“are6”。下面再繼續(xù)對類信息中的類方法名修改,以保證程序的安全;當然也可以在修改類名的同時修改類方法名,即修改類名和類方法名同時進行,本發(fā)明實施例對于修改類名和類方法名的步驟不做限制。
[0091]205、獲取軟件程序的資源文件中的資源類方法名集合;軟件程序為基于蘋果公司開發(fā)的系統(tǒng)平臺的面向對象的Objective C程序;
[0092]具體地,解析步驟201中獲取的資源文件中與Objective C指針或其他擴展類指針綁定的資源類方法名,得到資源類方法名集合;即讀入iOS/MacOSX程序對應的Nib文件,解析得到綁定的方法名集合。
[0093]206、獲取軟件程序的代碼文件中的導入類方法名集合;
[0094]具體地,解析步驟202中獲取的代碼文件中的導入表,查找導入表中導入的類名和其他導入庫,解析導入的類名和其他導入庫對應的類方法名,得到導入類方法名集合。
[0095]207、獲取軟件程序的代碼文件中的協(xié)議類方法名集合;
[0096]具體地,獲取代碼文件中的所有的類,查找類符合的所有協(xié)議Protocol,得到所有Protocol要求實現(xiàn)的類方法名集合,得到協(xié)議類方法名集合;即遍歷A文件的所有類(在_objc_classlist節(jié)中),解析得到所有Protocol結構,再解析得到所有Protocol要求實現(xiàn)的協(xié)議類方法名集合。
[0097]上述步驟205-207本發(fā)明實施例不限制執(zhí)行先后順序,可以根據情況調整先后順序。
[0098]208、查詢代碼文件中的每個類的成員變量,得到成員變量名集合;
[0099]具體地,由于步驟205-207得到的資源類方法名集合、導入類方法名集合、協(xié)議類方法名集合針對整個程序文件是不變的,而針對每個類的成員變量方法名是不同的,所以每查詢一個類的成員變量,得到一個對應類的成員變量名集合。
[0100]209、解析代碼文件中的每個類的類方法名,當解析的類方法名不在資源類方法名集合中、導入類方法名集合中、協(xié)議類方法名集合中、成員變量名集合中和用戶預設的類方法名白名單中時,隨機生成類方法名字符替換類方法名。
[0101]具體地,查詢解析每個類的類方法名,如果類方法名滿足以下條件,則跳過;否則隨機生成一個無意義的類方法名字符替換原來的類方法名:
[0102]a’、類方法名在資源類方法名集合中
[0103]b’、類方法名在導入類方法名集合中
[0104]C’、類方法名在協(xié)議類方法名集合中
[0105]d’、類方法名在成員變量名集合中
[0106]e’、類方法名在用戶預設的類方法名白名單中
[0107]經過上述步驟205-209,即實現(xiàn)了對類信息中的類方法名的修改,保證了程序的進一步安全。參見圖4,如圖4中的“setSharelLocation”指示“保存設置項”類方法名替換為隨機生成無意義的類方法名字符“qtl”,這就混淆了每段程序代碼的用途,保護了程序的安全。
[0108]本發(fā)明實施例提供的方法,通過獲取軟件程序的資源文件和代碼文件,并解析代碼文件中的類信息以及資源文件中與代碼文件綁定的類信息得到資源類集合,查詢代碼文件中解析的每個類信息,當查詢的類信息不在資源類集合中且不在用戶預設的類信息白名單中時,隨機生成類信息字符替換類信息,解決了 IOS/MacOSX程序編譯后的文件包含大量的類信息進而為破解者逆向破解程序提供了導向的問題,大大加大了破解難度,保護了程序的安全。
[0109]實施例三
[0110]參見圖5,本發(fā)明實施例提供了一種軟件程序的保護裝置,該裝置包括:
[0111]獲取模塊301,用于獲取軟件程序的資源文件和代碼文件;其中,該軟件程序為基于蘋果公司開發(fā)的系統(tǒng)平臺的面向對象的Objective C程序;
[0112]第一解析模塊302,用于解析代碼文件中的類信息;類信息包括類名和類方法名;
[0113]第二解析模塊303,用于解析資源文件中與代碼文件綁定的類信息,得到資源類集合;
[0114]替換模塊304,用于查詢代碼文件中解析的每個類信息,當查詢的類信息不在資源類集合中且不在用戶預設的類信息白名單中時,隨機生成類信息字符替換類信息。
[0115]具體地,當?shù)谝唤馕瞿K302解析的類信息為類名時,
[0116]第一解析模塊302,包括:第一解析單元,用于當?shù)谝唤馕瞿K解析的類信息為類名時,解析代碼文件中包含字符串的節(jié),得到字符串類名集合;
[0117]相應地,第二解析模塊303,包括:第二解析單元,用于當解析的類信息為類名時,解析資源文件中與Objective C指針或其他擴展類指針綁定的資源類名,得到資源類名集合;
[0118]相應地,替換模塊304,包括:類名替換單元,用于當?shù)谝唤馕瞿K解析的類信息為類名時,查詢代碼文件中解析的每個類名,當查詢的類名不在資源類名集合中和字符串類名集合中、且類名不在用戶預設的類名白名單中以及類名不是代理類名時,隨機生成類名字符替換類名。
[0119]進一步地,替換模塊304,還包括:
[0120]變量替換單元,用于隨機生成類名字符替換類名之后,保存無意義的類名字符以及對應的被替換的類名;查詢代碼文件中的每個類的成員變量和屬性;當成員變量或屬性的類型對應的類名為被替換的類名時,將成員變量或屬性的類型對應的類名修改為類名字符。
[0121 ] 具體地,當類信息為類方法名時,
[0122]第一解析模塊302,包括:第三解析單元,用于獲取代碼文件中的導入表,查找導入表所導入的類名和其他導入庫,解析導入的類名和其他導入庫對應的類方法名,得到導入類方法名集合;
[0123]第四解析單元,用于解析代碼文件中的每個類,查找類符合的所有協(xié)議Protocol,得到所有Protocol要求實現(xiàn)的類方法名集合,得到協(xié)議類方法名集合;
[0124]第五解析單元,用于解析代碼文件中的每個類的成員變量,得到成員變量名集合;
[0125]相應地,第二解析模塊303,包括:第六解析單元,用于解析資源文件中與Objective C指針或其他擴展類指針綁定的資源類方法名,得到資源類方法名集合;
[0126]相應地,替換模塊304,包括:類方法名替換單元,用于查詢代碼文件中的每個類的類方法名,當解析的類方法名不在資源類方法名集合中、導入類方法名集合中、協(xié)議類方法名集合中、成員變量名集合中和用戶預設的類方法名白名單中時,隨機生成類方法名字符替換類方法名。
[0127]本發(fā)明實施例提供的裝置,通過獲取軟件程序的資源文件和代碼文件,并解析代碼文件中的類信息以及資源文件中與代碼文件綁定的類信息得到資源類集合,查詢代碼文件中解析的每個類信息,當查詢的類信息不在資源類集合中且不在用戶預設的類信息白名單中時,隨機生成類信息字符替換類信息,解決了 IOS/MacOSX程序編譯后的文件包含大量的類信息進而為破解者逆向破解程序提供了導向的問題,大大加大了破解難度,保護了程序的安全。
[0128]需要說明的是:上述實施例提供的軟件程序的保護裝置在保護軟件程序時,僅以上述各功能模塊的劃分進行舉例說明,實際應用中,可以根據需要而將上述功能分配由不同的功能模塊完成,即將裝置的內部結構劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的軟件程序的保護裝置與軟件程序的保護方法實施例屬于同一構思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。
[0129]上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
[0130]本領域普通技術人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關的硬件完成,的程序可以存儲于一種計算機可讀存儲介質中,上述提到的存儲介質可以是只讀存儲器,磁盤或光盤等。
[0131]以上僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
【權利要求】
1.一種軟件程序的保護方法,其特征在于,所述方法包括: 獲取軟件程序的資源文件和代碼文件; 解析所述代碼文件中的類信息;所述類信息包括類名和類方法名; 解析所述資源文件中與所述代碼文件綁定的類信息,得到所述資源類集合; 查詢所述代碼文件中解析的每個類信息,當查詢的類信息不在所述資源類集合中且不在用戶預設的類信息白名單中時,隨機生成類信息字符替換所述類信息。
2.根據權利要求1所述的方法,其特征在于,所述當所述類信息為類名時,所述方法包括: 解析所述資源文件中與Objective C指針或其他擴展類指針綁定的資源類名,得到資源類名集合; 解析所述代碼文件中包含字符串的節(jié),得到字符串類名集合; 查詢所述代碼文件中解析的每個類名,當查詢的類名不在所述資源類名集合中和所述字符串類名集合中、且所述類名不在用戶預設的類名白名單中以及所述類名不是代理類名時,隨機生成類名字符替換所述類名。
3.根據權利要求2所述的方法,其特征在于,所述隨機生成類名字符替換所述類名之后,還包括: 保存所述類名字符以及對應的被替換的類名; 查詢所述軟件程序的代碼文件中的每個類的成員變量和屬性; 當所述成員變量或所述屬性的類型對應的類名為所述被替換的類名時,將所述成員變量或所述屬性的類型對應的類名修改為所述類名字符。
4.根據權利要求1所述的方法,其特征在于,所述當所述類信息為類方法名時,所述方法包括: 解析所述資源文件中與Objective C指針或其他擴展類指針綁定的資源類方法名,得到所述資源類方法名集合; 獲取所述代碼文件中的導入表,查找所述導入表所導入的類名和其他導入庫,解析所述導入的類名和所述其他導入庫對應的類方法名,得到導入類方法名集合; 解析所述代碼文件中的每個類,查找類符合的所有協(xié)議Protocol,得到所有Protocol要求實現(xiàn)的類方法名集合,得到協(xié)議類方法名集合; 解析所述代碼文件中的每個類的成員變量,得到成員變量名集合; 查詢所述代碼文件中的每個類的類方法名,當解析的類方法名不在所述資源類方法名集合中、所述導入類方法名集合中、所述協(xié)議類方法名集合中、所述成員變量名集合中和用戶預設的類方法名白名單中時,隨機生成類方法名字符替換所述類方法名。
5.一種軟件程序的保護裝置,其特征在于,所述裝置包括: 獲取模塊,用于獲取軟件程序的資源文件和代碼文件;所述軟件程序為基于蘋果公司開發(fā)的系統(tǒng)平臺的面向對象的Objective C程序; 第一解析模塊,用于解析所述代碼文件中的類信息;所述類信息包括類名和類方法名; 第二解析模塊,用于解析所述資源文件中與所述代碼文件綁定的類信息,得到所述資源類集合;替換模塊,用于查詢所述代碼文件中解析的每個類信息,當查詢的類信息不在所述資源類集合中且不在用戶預設的類信息白名單中時,隨機生成類信息字符替換所述類信息。
6.根據權利要求5所述的裝置,其特征在于,當所述第一解析模塊解析的所述類信息為類名時, 所述第一解析模塊,包括:第一解析單元,用于當所述第一解析模塊解析的所述類信息為類名時,解析所述代碼文件中包含字符串的節(jié),得到字符串類名集合; 相應地,所述第二解析模塊,包括:第二解析單元,用于當解析的所述類信息為類名時,解析所述資源文件中與Objective C指針或其他擴展類指針綁定的資源類名,得到資源類名集合; 相應地,所述替換模塊,包括:類名替換單元,用于當所述第一解析模塊解析的所述類信息為類名時,查詢所述代碼文件中解析的每個類名,當查詢的類名不在所述資源類名集合中和所述字符串類名集合中、且所述類名不在用戶預設的類名白名單中以及所述類名不是代理類名時,隨機生成類名字符替換所述類名。
7.根據權利要求6所述的裝置,其特征在于,所述替換模塊,還包括: 變量替換單元,用于隨機生成類名字符替換所述類名之后,保存所述無意義的類名字符以及對應的被替換的類名;查詢所述代碼文件中的每個類的成員變量和屬性;當所述成員變量或所述屬性的類型對應的類名為所述被替換的類名時,將所述成員變量或所述屬性的類型對應的類名修改為所述類名字符。
8.根據權利要求5所述的裝置,其特征在于,所述當所述類信息為類方法名時, 所述第一解析模塊,包括:第三解析單元,用于獲取所述代碼文件中的導入表,查找所述導入表所導入的類名和其他導入庫,解析所述導入的類名和所述其他導入庫對應的類方法名,得到導入類方法名集合; 第四解析單元,用于解析所述代碼文件中的每個類,查找類符合的所有協(xié)議Protocol,得到所有Protocol要求實現(xiàn)的類方法名集合,得到協(xié)議類方法名集合; 第五解析單元,用于解析所述代碼文件中的每個類的成員變量,得到成員變量名集合; 相應地,所述第二解析模塊,包括:第六解析單元,用于解析所述資源文件中與Objective C指針或其他擴展類指針綁定的資源類方法名,得到所述資源類方法名集合; 相應地,所述替換模塊,包括:類方法名替換單元,用于查詢所述代碼文件中的每個類的類方法名,當解析的類方法名不在所述資源類方法名集合中、所述導入類方法名集合中、所述協(xié)議類方法名集合中、所述成員變量名集合中和用戶預設的類方法名白名單中時,隨機生成類方法名字符替換所述類方法名。
【文檔編號】G06F21/14GK103902857SQ201210572410
【公開日】2014年7月2日 申請日期:2012年12月25日 優(yōu)先權日:2012年12月25日
【發(fā)明者】鐘同圣, 王岳 申請人:深圳市騰訊計算機系統(tǒng)有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
芦山县| 綦江县| 新乡县| 当涂县| 安化县| 综艺| 佛山市| 营口市| 嵩明县| 马公市| 安化县| 海林市| 北京市| 阿克苏市| 遂平县| 望奎县| 古交市| 司法| 锦州市| 遵义县| 出国| 徐水县| 南陵县| 汨罗市| 同德县| 诸暨市| 龙泉市| 乌拉特中旗| 通道| 时尚| 南乐县| 巫溪县| 久治县| 苏尼特左旗| 沧源| 安龙县| 廉江市| 海门市| 双牌县| 镇坪县| 清流县|