軟件反調(diào)試保護(hù)方法
【專利摘要】本申請公開了一種軟件反調(diào)試保護(hù)方法,包括:預(yù)先確定軟件的功能代碼中需要加密返回結(jié)果的函數(shù)S;b、執(zhí)行所述軟件的功能代碼;其中,在執(zhí)行所述函數(shù)S之前,生成隨機數(shù)R,在執(zhí)行所述函數(shù)S時,利用所述隨機數(shù)R對該函數(shù)的執(zhí)行結(jié)果進(jìn)行加密,并將加密后的所述執(zhí)行結(jié)果作為該函數(shù)S的返回結(jié)果;接收到所述返回結(jié)果的函數(shù)對所述返回結(jié)果進(jìn)行解密,如果解密成功,則繼續(xù)所述返回結(jié)果的相應(yīng)處理過程,否則,判定所述軟件被非法執(zhí)行,終止所述功能代碼的執(zhí)行。采用本發(fā)明可以有效防止軟件的非法運行。
【專利說明】軟件反調(diào)試保護(hù)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及計算機軟件安全技術(shù),特別是設(shè)及一種軟件反調(diào)試保護(hù)方法。
【背景技術(shù)】
[0002] 在目前的軟件破解領(lǐng)域有一種破解方法,是通過跳過某個功能函數(shù)的執(zhí)行,并偽 造其返回值,使程序繼續(xù)運行達(dá)到破解的目的。
[0003] 例如,當(dāng)應(yīng)用程序調(diào)用關(guān)鍵的注冊函數(shù)、認(rèn)證函數(shù)時,破解者通過代碼補了迫使該 些函數(shù)直接返回有效值,從而使得破解者可W對該應(yīng)用程序進(jìn)行非法執(zhí)行。W下面的注冊 算法為例,對上述破解手段具體說明如下:
[0004] 當(dāng)注冊算法包括下述步驟時:
[0005] 步驟XI、注冊函數(shù)A進(jìn)行初始化。
[0006] 步驟x2、注冊函數(shù)A調(diào)用認(rèn)證函數(shù)B,W確認(rèn)用戶的合法身份。
[0007] 步驟x3、執(zhí)行認(rèn)證函數(shù)B,當(dāng)返回結(jié)果為1時表示身份合法,否則,非法。
[000引步驟x4、執(zhí)行注冊函數(shù)A,并返回
[0009] 針對上述注冊算法,其破解方法為:跳過步驟x2,即執(zhí)行函數(shù)A時并不調(diào)用認(rèn)證函 數(shù)B,在步驟x4直接將所破解到的合法身份對應(yīng)的返回結(jié)果1賦值給注冊函數(shù)A,W使注冊 函數(shù)A執(zhí)行相應(yīng)的注冊功能,從而實現(xiàn)非法用戶的合法注冊。
[0010] 針對上述破解方法,目前尚未提出相應(yīng)的軟件保護(hù)方法。
【發(fā)明內(nèi)容】
[0011] 有鑒于此,本發(fā)明的主要目的在于提供一種軟件反調(diào)試保護(hù)方法,該方法可W有 效防止軟件的非法運行。
[0012] 為了達(dá)到上述目的,本發(fā)明提出的技術(shù)方案為:
[0013] 一種軟件反調(diào)試保護(hù)方法,包括:
[0014] a、預(yù)先確定軟件的功能代碼中需要加密返回結(jié)果的函數(shù)S ;
[0015] b、執(zhí)行所述軟件的功能代碼;其中,在執(zhí)行所述函數(shù)S之前,生成隨機數(shù)R,在執(zhí)行 所述函數(shù)S時,利用所述隨機數(shù)R對該函數(shù)的執(zhí)行結(jié)果進(jìn)行加密,并將加密后的所述執(zhí)行結(jié) 果作為該函數(shù)S的返回結(jié)果;接收到所述返回結(jié)果的函數(shù)對所述返回結(jié)果進(jìn)行解密,如果 解密成功,則繼續(xù)所述返回結(jié)果的相應(yīng)處理過程,否則,判定所述軟件被非法執(zhí)行,終止所 述功能代碼的執(zhí)行。
[0016] 綜上所述,本發(fā)明提出的軟件反調(diào)試保護(hù)方法,在軟件執(zhí)行前,生成隨機數(shù),利用 該隨機數(shù)對軟件功能代碼中的一函數(shù)執(zhí)行結(jié)果進(jìn)行加密,使得軟件的破解者不能對該函數(shù) 的執(zhí)行結(jié)果進(jìn)行有效識別,進(jìn)而無法跳過該函數(shù)的執(zhí)行,W確保軟件功能代碼中的每個步 驟在軟件的執(zhí)行過程都必須得到執(zhí)行,從而可W保護(hù)軟件不被非法破解執(zhí)行。
【專利附圖】
【附圖說明】
[0017] 圖1為本發(fā)明實施例一的流程示意圖。
【具體實施方式】
[001引為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖及具體實施例對 本發(fā)明作進(jìn)一步地詳細(xì)描述。
[0019] 本發(fā)明的核屯、思想是:對軟件功能代碼中的函數(shù)執(zhí)行結(jié)果進(jìn)行加密,提高軟件的 破解難度,使得軟件的破解者不能對該函數(shù)執(zhí)行結(jié)果進(jìn)行有效識別,進(jìn)而可W保護(hù)軟件不 被非法破解執(zhí)行。
[0020] 圖1為本發(fā)明實施例一的流程示意圖,如圖1所示,該實施例主要包括:
[0021] 步驟101、預(yù)先確定軟件的功能代碼中需要加密返回結(jié)果的函數(shù)S。
[0022] 具體地,本步驟中,可W任選一函數(shù)作為所述函數(shù)S。
[0023] 步驟102、執(zhí)行所述軟件的功能代碼;其中,在執(zhí)行所述函數(shù)S之前,生成隨機數(shù)R, 在執(zhí)行所述函數(shù)S時,利用所述隨機數(shù)R對該函數(shù)的執(zhí)行結(jié)果進(jìn)行加密,并將加密后的所 述執(zhí)行結(jié)果作為該函數(shù)S的返回結(jié)果;接收到所述返回結(jié)果的函數(shù)對所述返回結(jié)果進(jìn)行解 密,如果解密成功,則繼續(xù)所述返回結(jié)果的相應(yīng)處理過程,否則,判定所述軟件被非法執(zhí)行, 終止所述功能代碼的執(zhí)行。
[0024] 本步驟用于在軟件的功能代碼執(zhí)行過程增加函數(shù)的加密解密步驟,即在返回函數(shù) S的執(zhí)行結(jié)果前對其進(jìn)行加密,再在其返回結(jié)果后,對加密后的返回結(jié)果進(jìn)行解密,使得軟 件的功能代碼被破解的難度提高,從而使得利用現(xiàn)有的跳過某個函數(shù)的執(zhí)行的破解方法無 法實現(xiàn)軟件的成功運行,進(jìn)而有效防止軟件的非法運行。
[0025] 較佳地,為了提高隨機數(shù)的復(fù)雜度,增強本發(fā)明的抗破解能力,可W采用下述方法 生成隨機數(shù)R :
[0026] 步驟al、生成一隨機數(shù)R1,將該隨機數(shù)R1作為輸入?yún)?shù)傳遞給一預(yù)設(shè)隨機數(shù)生成 函數(shù);
[0027] 步驟a2、所述隨機數(shù)生成函數(shù),生成隨機數(shù)R2,并按照預(yù)設(shè)的組合方式,將所述隨 機數(shù)R1與所述隨機數(shù)R2進(jìn)行組合,得到所述隨機數(shù)R。
[002引該里,利用一隨機數(shù)生成函數(shù)生成隨機數(shù)R2是為了防止R1被固定,確保R的隨機 性。
[0029] 較佳地,可W采用楠圓加密算法ECC或小型加密算法TEA,利用所述隨機數(shù)R進(jìn)行 所述加密。在具體加密時,將隨機數(shù)R作為上述加密算法中的一固定參數(shù)進(jìn)行加密即可,具 體方法為本領(lǐng)域技術(shù)人員所掌握,在此不再寶述。
[0030] 為了進(jìn)一步闡述本發(fā)明,下面W示例性程序代碼的形式,對本發(fā)明的具體實現(xiàn)過 程進(jìn)行示意性說明。在下面的代碼示例中,利用ECC加密方法,對函數(shù)B的執(zhí)行結(jié)果進(jìn)行加 密,調(diào)用該函數(shù)B的函數(shù)A需要對其返回結(jié)果進(jìn)行解密檢查,若解密失敗,則返回執(zhí)行失敗 的f目息。
[0031]
【權(quán)利要求】
1. 一種軟件反調(diào)試保護(hù)方法,其特征在于,包括: a、 預(yù)先確定軟件的功能代碼中需要加密返回結(jié)果的函數(shù)S ; b、 執(zhí)行所述軟件的功能代碼;其中,在執(zhí)行所述函數(shù)S之前,生成隨機數(shù)R,在執(zhí)行所述 函數(shù)S時,利用所述隨機數(shù)R對該函數(shù)的執(zhí)行結(jié)果進(jìn)行加密,并將加密后的所述執(zhí)行結(jié)果作 為該函數(shù)S的返回結(jié)果;接收到所述返回結(jié)果的函數(shù)對所述返回結(jié)果進(jìn)行解密,如果解密 成功,則繼續(xù)所述返回結(jié)果的相應(yīng)處理過程,否則,判定所述軟件被非法執(zhí)行,終止所述功 能代碼的執(zhí)行。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述生成隨機數(shù)R包括: 生成一隨機數(shù)R1,將該隨機數(shù)R1作為輸入?yún)?shù)傳遞給一預(yù)設(shè)隨機數(shù)生成函數(shù); 所述隨機數(shù)生成函數(shù),生成隨機數(shù)R2,并按照預(yù)設(shè)的組合方式,將所述隨機數(shù)R1與所 述隨機數(shù)R2進(jìn)行組合,得到所述隨機數(shù)R。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,采用橢圓加密算法ECC或小型加密算法 TEA,利用所述隨機數(shù)R進(jìn)行所述加密。
【文檔編號】G06F21/14GK104504312SQ201410814941
【公開日】2015年4月8日 申請日期:2014年12月23日 優(yōu)先權(quán)日:2014年12月23日
【發(fā)明者】孫吉平, 韓勇 申請人:北京深思數(shù)盾科技有限公司