一種客戶(hù)端軟件代碼校驗(yàn)的方法及系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種客戶(hù)端軟件代碼校驗(yàn)的方法,涉及客戶(hù)端軟件安全領(lǐng)域,包括S1,客戶(hù)端軟件啟動(dòng)后,通過(guò)服務(wù)器獲取需要校驗(yàn)的客戶(hù)端組件的名稱(chēng)列表;S2,讀取需要校驗(yàn)的客戶(hù)端組件的原始路徑,按照內(nèi)存對(duì)齊的方式將客戶(hù)端組件的原始代碼段加載到內(nèi)存中,并修正重定位信息;S3,獲取客戶(hù)端軟件運(yùn)行時(shí)加載到內(nèi)存的地址,將客戶(hù)端軟件加載到內(nèi)存中的代碼段與原始代碼段進(jìn)行逐個(gè)字節(jié)進(jìn)行校驗(yàn);若校驗(yàn)不一致,進(jìn)步驟S4,若校驗(yàn)一致,結(jié)束;S4,將不一致的字節(jié)在該客戶(hù)端組件中的地址上報(bào)到服務(wù)器,并上報(bào)不一樣的字節(jié)到服務(wù)器,結(jié)束。本發(fā)明可精確將被修改的位置和被修改的內(nèi)容上報(bào)至服務(wù)器。本發(fā)明還公開(kāi)了一種客戶(hù)端軟件代碼校驗(yàn)系統(tǒng)。
【專(zhuān)利說(shuō)明】
一種客戶(hù)端軟件代碼校驗(yàn)的方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及客戶(hù)端軟件安全領(lǐng)域,具體涉及一種客戶(hù)端軟件代碼校驗(yàn)的方法及系統(tǒng)。
【背景技術(shù)】
[0002]目前,計(jì)算機(jī)客戶(hù)端軟件在用戶(hù)電腦上存在被黑客修改其中的代碼來(lái)實(shí)現(xiàn)某種非法功能的方法。如試用軟件通過(guò)修改其判斷日期的邏輯來(lái)達(dá)到用不過(guò)期。如免費(fèi)版本限制了某些功能,通過(guò)修改限制判斷邏輯來(lái)實(shí)現(xiàn)打開(kāi)收費(fèi)功能?,F(xiàn)在常用的做法是通過(guò)對(duì)軟件代碼進(jìn)行循環(huán)冗余碼校驗(yàn)值比對(duì)來(lái)對(duì)軟件代碼進(jìn)行合法校驗(yàn),來(lái)判斷其是否有被修改,從而能對(duì)修改代碼的用戶(hù)對(duì)其進(jìn)行懲罰。此方法不足點(diǎn)在于:一個(gè)計(jì)算hash有一定的概率會(huì)產(chǎn)生碰撞,從而漏過(guò)了被修改過(guò)得代碼沒(méi)有被檢測(cè)到;同時(shí),服務(wù)端并不知道客戶(hù)端軟件具體哪個(gè)位置被修改了,從而比較容易引起誤判。
【發(fā)明內(nèi)容】
[0003]針對(duì)現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種客戶(hù)端軟件代碼校驗(yàn)的方法及系統(tǒng),可精確將被修改的位置和被修改的內(nèi)容上報(bào)至服務(wù)器,以待服務(wù)器處理。
[0004]為達(dá)到以上目的,本發(fā)明采取的技術(shù)方案是:一種客戶(hù)端軟件代碼校驗(yàn)的方法,包括:
[0005]SI,客戶(hù)端軟件啟動(dòng)后,通過(guò)服務(wù)器獲取需要校驗(yàn)的客戶(hù)端組件的名稱(chēng)列表;
[0006]S2,讀取需要校驗(yàn)的客戶(hù)端組件的原始路徑,按照內(nèi)存對(duì)齊的方式將客戶(hù)端組件的原始代碼段加載到內(nèi)存中,并修正客戶(hù)端組件的原始代碼段的重定位信息;
[0007]S3,獲取客戶(hù)端軟件運(yùn)行時(shí)加載到內(nèi)存的地址,讀取客戶(hù)端軟件加載到內(nèi)存中的代碼段,將客戶(hù)端軟件加載到內(nèi)存中的代碼段與原始代碼段進(jìn)行逐個(gè)字節(jié)進(jìn)行校驗(yàn);若校驗(yàn)不一致,進(jìn)步驟S4,若校驗(yàn)一致,結(jié)束;
[0008]S4,將不一致的字節(jié)在該客戶(hù)端組件中的地址上報(bào)到服務(wù)器,并上報(bào)客戶(hù)端組件的名稱(chēng)及被修改后的內(nèi)容至服務(wù)器,結(jié)束。
[0009]在上述技術(shù)方案的基礎(chǔ)上,所述校驗(yàn)不一致的字節(jié)在該客戶(hù)端組件中的地址等于該字節(jié)的內(nèi)存地址減去該客戶(hù)端組件在內(nèi)存中加載的起始地址。
[0010]在上述技術(shù)方案的基礎(chǔ)上,步驟S3中校驗(yàn)的過(guò)程包括:
[0011]S301,獲取客戶(hù)端軟件運(yùn)行時(shí)載到內(nèi)存的地址,獲取客戶(hù)端軟件運(yùn)行時(shí)加載到內(nèi)存的起始地址codeAddressl,獲取其代碼段的長(zhǎng)度N;獲取步驟S2中加載的原始代碼段的起始地址codeAddress2 ;客戶(hù)端軟件運(yùn)行時(shí)加載到內(nèi)存的代碼段的每個(gè)字節(jié)的地址為codeAddressl [i],其中i為從I循環(huán)至N的整數(shù);步驟S2中加載的原始代碼段的每個(gè)字節(jié)的地址為codeAddress2[i],其中i為從I循環(huán)至N的整數(shù);
[0012]S302,從i = I開(kāi)始逐個(gè)字節(jié)比較codeAddressl [i ]對(duì)應(yīng)的字節(jié)和codeAddress2[i ]對(duì)應(yīng)的字節(jié)是否一致,直至i =N,全部字節(jié)校驗(yàn)完畢,結(jié)束。
[0013]在上述技術(shù)方案的基礎(chǔ)上,需檢驗(yàn)的客戶(hù)端組件為多個(gè)。
[0014]本發(fā)明還包括一種客戶(hù)端軟件代碼校驗(yàn)系統(tǒng),包括:
[0015]組件名獲取模塊,用于客戶(hù)端軟件啟動(dòng)后,通過(guò)服務(wù)器獲取需要校驗(yàn)的客戶(hù)端組件的名稱(chēng)列表;
[0016]原始代碼段加載模塊,用于讀取需要校驗(yàn)的客戶(hù)端組件的原始路徑,按照內(nèi)存對(duì)齊的方式將客戶(hù)端組件的原始代碼段加載到內(nèi)存中;
[0017]代碼段校驗(yàn)?zāi)K,用于獲取客戶(hù)端組件加載到內(nèi)存的地址,讀取客戶(hù)端組件加載到內(nèi)存中的代碼段,與原始代碼段加載模塊加載到內(nèi)存中的原始代碼段進(jìn)行逐個(gè)字節(jié)進(jìn)行校驗(yàn);
[0018]校驗(yàn)結(jié)果上報(bào)模塊,用于將經(jīng)代碼段校驗(yàn)?zāi)K校驗(yàn)不一致的字節(jié)在該客戶(hù)端組件中的地址上報(bào)到服務(wù)器,并上報(bào)客戶(hù)端組件的名稱(chēng)及被修改后的內(nèi)容至服務(wù)器。
[0019]在上述技術(shù)方案的基礎(chǔ)上,所述原始代碼段加載模塊包括重定位修復(fù)模塊,所述重定位修復(fù)模塊用于修正原始代碼段加載模塊加載到內(nèi)存中的客戶(hù)端組件的原始代碼段的重定位信息。
[0020]在上述技術(shù)方案的基礎(chǔ)上,所述校驗(yàn)不一致的字節(jié)在該客戶(hù)端組件中的地址等于該字節(jié)的內(nèi)存地址減去該客戶(hù)端組件在內(nèi)存中加載的起始地址。
[0021]在上述技術(shù)方案的基礎(chǔ)上,所述客戶(hù)端軟件代碼校驗(yàn)系統(tǒng)還包括上報(bào)結(jié)果分析模塊,用于根據(jù)校驗(yàn)結(jié)果上報(bào)模塊上報(bào)到服務(wù)器的不一致的字節(jié)在該客戶(hù)端組件中的地址、客戶(hù)端組件的名稱(chēng)及被修改后的內(nèi)容分析被修改后的內(nèi)容的功能。
[0022]與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
[0023]1、本發(fā)明對(duì)客戶(hù)端組件代碼段逐個(gè)字節(jié)進(jìn)行對(duì)比,從而不存在漏掉被修改的代碼。
[0024]2、本發(fā)明通過(guò)校驗(yàn)準(zhǔn)確找出不一致的字節(jié)的地址并將客戶(hù)端組件的名稱(chēng)及被修改后的內(nèi)容上報(bào)至服務(wù)器,即可精確將被修改的位置和被修改的內(nèi)容上報(bào)至服務(wù)器,從而服務(wù)器可以進(jìn)行進(jìn)一步判斷和處理。
【附圖說(shuō)明】
[0025]圖1為本發(fā)明實(shí)施例中客戶(hù)端軟件代碼校驗(yàn)的方法的流程示意圖;
[0026]圖2為本發(fā)明實(shí)施例中客戶(hù)端軟件代碼校驗(yàn)系統(tǒng)的結(jié)構(gòu)示意圖。
[0027]圖中:1-組件名獲取模塊,2-原始代碼段加載模塊,3-重定位修復(fù)模塊,4-代碼段校驗(yàn)?zāi)K,5-校驗(yàn)結(jié)果上報(bào)模塊,6-上報(bào)結(jié)果分析模塊。
【具體實(shí)施方式】
[0028]以下結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明。
[0029]參見(jiàn)圖1所示,本發(fā)明實(shí)施例提供一種客戶(hù)端軟件代碼校驗(yàn)的方法,包括以下步驟:
[0030]SI,客戶(hù)端軟件啟動(dòng)后,通過(guò)服務(wù)器獲取需要校驗(yàn)的安裝與運(yùn)行客戶(hù)端軟件所需的客戶(hù)端組件的名稱(chēng)列表;需檢驗(yàn)的客戶(hù)端組件為多個(gè);
[0031]S2,讀取需要校驗(yàn)的客戶(hù)端組件的原始路徑,按照內(nèi)存對(duì)齊的方式將客戶(hù)端組件的原始代碼段加載到內(nèi)存中,并修正客戶(hù)端組件的原始代碼段的重定位信息;
[0032]S3,獲取客戶(hù)端軟件運(yùn)行時(shí)加載到內(nèi)存的地址,讀取客戶(hù)端軟件加載到內(nèi)存中的代碼段,將客戶(hù)端軟件加載到內(nèi)存中的代碼段與原始代碼段進(jìn)行逐個(gè)字節(jié)進(jìn)行校驗(yàn);若校驗(yàn)不一致,進(jìn)步驟S4,若校驗(yàn)一致,結(jié)束;
[0033]S4,將不一致的字節(jié)在該客戶(hù)端組件中的地址上報(bào)到服務(wù)器,并上報(bào)客戶(hù)端組件的名稱(chēng)及被修改后的內(nèi)容至服務(wù)器,結(jié)束。校驗(yàn)不一致的字節(jié)在該客戶(hù)端組件中的地址等于該字節(jié)的內(nèi)存地址減去該客戶(hù)端組件在內(nèi)存中加載的起始地址。
[0034]其中,步驟S3中校驗(yàn)的過(guò)程包括:
[0035]S301,獲取客戶(hù)端軟件運(yùn)行時(shí)載到內(nèi)存的地址,獲取客戶(hù)端軟件運(yùn)行時(shí)加載到內(nèi)存的起始地址codeAddressl,獲取其代碼段的長(zhǎng)度N;獲取步驟S2中加載的原始代碼段的起始地址codeAddress2 ;客戶(hù)端軟件運(yùn)行時(shí)加載到內(nèi)存的代碼段的每個(gè)字節(jié)的地址為codeAddressl [i],其中i為從I循環(huán)至N的整數(shù);步驟S2中加載的原始代碼段的每個(gè)字節(jié)的地址為codeAddress2[i],其中i為從I循環(huán)至N的整數(shù);
[0036]S302,從i = I開(kāi)始逐個(gè)字節(jié)比較codeAddressl [ i ]對(duì)應(yīng)的字節(jié)和codeAddress2[ i ]對(duì)應(yīng)的字節(jié)是否一致,直至i =N,全部字節(jié)校驗(yàn)完畢,結(jié)束。
[0037]本發(fā)明還公開(kāi)了一種客戶(hù)端軟件代碼校驗(yàn)系統(tǒng),包括:組件名獲取模塊I,用于客戶(hù)端軟件啟動(dòng)后,通過(guò)服務(wù)器獲取需要校驗(yàn)的客戶(hù)端組件的名稱(chēng)列表;原始代碼段加載模塊2,用于讀取需要校驗(yàn)的客戶(hù)端組件的原始路徑,按照內(nèi)存對(duì)齊的方式將客戶(hù)端組件的原始代碼段加載到內(nèi)存中;原始代碼段加載模塊2包括一重定位修復(fù)模塊3,重定位修復(fù)模塊3用于修正原始代碼段加載模塊2加載到內(nèi)存中的客戶(hù)端組件的原始代碼段的重定位信息;代碼段校驗(yàn)?zāi)K4,用于獲取客戶(hù)端組件加載到內(nèi)存的地址,讀取客戶(hù)端組件加載到內(nèi)存中的代碼段,與原始代碼段加載模塊2加載到內(nèi)存中的原始代碼段進(jìn)行逐個(gè)字節(jié)進(jìn)行校驗(yàn);校驗(yàn)結(jié)果上報(bào)模塊5,用于將經(jīng)代碼段校驗(yàn)?zāi)K4校驗(yàn)不一致的字節(jié)在該客戶(hù)端組件中的地址上報(bào)到服務(wù)器,并上報(bào)客戶(hù)端組件的名稱(chēng)及被修改后的內(nèi)容至服務(wù)器。校驗(yàn)不一致的字節(jié)在該客戶(hù)端組件中的地址等于該字節(jié)的內(nèi)存地址減去該客戶(hù)端組件在內(nèi)存中加載的起始地址??蛻?hù)端軟件代碼校驗(yàn)系統(tǒng)還包括上報(bào)結(jié)果分析模塊6,用于根據(jù)校驗(yàn)結(jié)果上報(bào)模塊5上報(bào)到服務(wù)器的不一致的字節(jié)在該客戶(hù)端組件中的地址、客戶(hù)端組件的名稱(chēng)及被修改后的內(nèi)容分析被修改后的內(nèi)容的功能。
[0038]本發(fā)明不局限于上述實(shí)施方式,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也視為本發(fā)明的保護(hù)范圍之內(nèi)。本說(shuō)明書(shū)中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。
【主權(quán)項(xiàng)】
1.一種客戶(hù)端軟件代碼校驗(yàn)的方法,其特征在于,包括以下步驟: Si,客戶(hù)端軟件啟動(dòng)后,通過(guò)服務(wù)器獲取需要校驗(yàn)的客戶(hù)端組件的名稱(chēng)列表; S2,讀取需要校驗(yàn)的客戶(hù)端組件的原始路徑,按照內(nèi)存對(duì)齊的方式將客戶(hù)端組件的原始代碼段加載到內(nèi)存中,并修正客戶(hù)端組件的原始代碼段的重定位信息; S3,獲取客戶(hù)端軟件運(yùn)行時(shí)加載到內(nèi)存的地址,讀取客戶(hù)端軟件加載到內(nèi)存中的代碼段,將客戶(hù)端軟件加載到內(nèi)存中的代碼段與原始代碼段進(jìn)行逐個(gè)字節(jié)進(jìn)行校驗(yàn);若校驗(yàn)不一致,進(jìn)步驟S4,若校驗(yàn)一致,結(jié)束; S4,將不一致的字節(jié)在該客戶(hù)端組件中的地址上報(bào)到服務(wù)器,并上報(bào)客戶(hù)端組件的名稱(chēng)及被修改后的內(nèi)容至服務(wù)器,結(jié)束。2.如權(quán)利要求1所述的客戶(hù)端軟件代碼校驗(yàn)的方法,其特征在于:所述校驗(yàn)不一致的字節(jié)在該客戶(hù)端組件中的地址等于該字節(jié)的內(nèi)存地址減去該客戶(hù)端組件在內(nèi)存中加載的起始地址。3.如權(quán)利要求1所述的客戶(hù)端軟件代碼校驗(yàn)的方法,其特征在于:步驟S3中校驗(yàn)的過(guò)程包括: S301,獲取客戶(hù)端軟件運(yùn)行時(shí)載到內(nèi)存的地址,獲取客戶(hù)端軟件運(yùn)行時(shí)加載到內(nèi)存的起始地址codeAddressl,獲取其代碼段的長(zhǎng)度N;獲取步驟S2中加載的原始代碼段的起始地址codeAddress2 ;客戶(hù)端軟件運(yùn)行時(shí)加載到內(nèi)存的代碼段的每個(gè)字節(jié)的地址為codeAddressl [i],其中i為從I循環(huán)至N的整數(shù);步驟S2中加載的原始代碼段的每個(gè)字節(jié)的地址為codeAddress2[i],其中i為從I循環(huán)至N的整數(shù); S302,從i = I開(kāi)始逐個(gè)字節(jié)比較codeAddre ss I [ i ]對(duì)應(yīng)的字節(jié)和codeAddress2[i ]對(duì)應(yīng)的字節(jié)是否一致,直至i =N,全部字節(jié)校驗(yàn)完畢,結(jié)束。4.如權(quán)利要求1所述的客戶(hù)端軟件代碼校驗(yàn)的方法,其特征在于:需檢驗(yàn)的客戶(hù)端組件為多個(gè)。5.一種客戶(hù)端軟件代碼校驗(yàn)系統(tǒng),其特征在于,包括: 組件名獲取模塊(I),用于客戶(hù)端軟件啟動(dòng)后,通過(guò)服務(wù)器獲取需要校驗(yàn)的客戶(hù)端組件的名稱(chēng)列表; 原始代碼段加載模塊(2),用于讀取需要校驗(yàn)的客戶(hù)端組件的原始路徑,按照內(nèi)存對(duì)齊的方式將客戶(hù)端組件的原始代碼段加載到內(nèi)存中; 代碼段校驗(yàn)?zāi)K(4),用于獲取客戶(hù)端組件加載到內(nèi)存的地址,讀取客戶(hù)端組件加載到內(nèi)存中的代碼段,與原始代碼段加載模塊(2)加載到內(nèi)存中的原始代碼段進(jìn)行逐個(gè)字節(jié)進(jìn)行校驗(yàn); 校驗(yàn)結(jié)果上報(bào)模塊(5),用于將經(jīng)代碼段校驗(yàn)?zāi)K(4)校驗(yàn)不一致的字節(jié)在該客戶(hù)端組件中的地址上報(bào)到服務(wù)器,并上報(bào)客戶(hù)端組件的名稱(chēng)及被修改后的內(nèi)容至服務(wù)器。6.如權(quán)利要求5所述一種客戶(hù)端軟件代碼校驗(yàn)系統(tǒng),其特征在于:所述原始代碼段加載模塊(2)包括重定位修復(fù)模塊(3),所述重定位修復(fù)模塊(3)用于修正原始代碼段加載模塊(2)加載到內(nèi)存中的客戶(hù)端組件的原始代碼段的重定位信息。7.如權(quán)利要求6所述一種客戶(hù)端軟件代碼校驗(yàn)系統(tǒng),其特征在于:所述校驗(yàn)不一致的字節(jié)在該客戶(hù)端組件中的地址等于該字節(jié)的內(nèi)存地址減去該客戶(hù)端組件在內(nèi)存中加載的起始地址。8.如權(quán)利要求7所述一種客戶(hù)端軟件代碼校驗(yàn)系統(tǒng),其特征在于:所述客戶(hù)端軟件代碼校驗(yàn)系統(tǒng)還包括上報(bào)結(jié)果分析模塊(6),用于根據(jù)校驗(yàn)結(jié)果上報(bào)模塊(5)上報(bào)到服務(wù)器的不一致的字節(jié)在該客戶(hù)端組件中的地址、客戶(hù)端組件的名稱(chēng)及被修改后的內(nèi)容分析被修改后的內(nèi)容的功能。
【文檔編號(hào)】G06F21/12GK106055933SQ201610475547
【公開(kāi)日】2016年10月26日
【申請(qǐng)日】2016年6月24日
【發(fā)明人】周志剛
【申請(qǐng)人】武漢斗魚(yú)網(wǎng)絡(luò)科技有限公司