一種隱藏dll模塊導(dǎo)出函數(shù)的方法
【專利摘要】一種隱藏dll模塊導(dǎo)出函數(shù)的方法,包括:dll模塊將原導(dǎo)出函數(shù)進(jìn)行不導(dǎo)出處理;dll模塊將原導(dǎo)出函數(shù)的指針進(jìn)行加密存儲;dll模塊中添加一個(gè)接口,該接口是一個(gè)函數(shù),將該函數(shù)設(shè)置為導(dǎo)出函數(shù);當(dāng)dll模塊的調(diào)用者要使用本模塊時(shí),首先要獲得dll模塊提供的原導(dǎo)出函數(shù)聲明文件,其次要獲得dll模塊提供的接口的聲明文件,還需獲得dll模塊提供的解密函數(shù)方法的定義和實(shí)現(xiàn)算法。利用本發(fā)明,可以將原本要導(dǎo)出的函數(shù),進(jìn)行處理,從而不會(huì)導(dǎo)出函數(shù)的相關(guān)信息,提高了函數(shù)調(diào)用的安全性。
【專利說明】—種隱藏dl I模塊導(dǎo)出函數(shù)的方法
【【技術(shù)領(lǐng)域】】 [0001]本發(fā)明涉及計(jì)算機(jī)軟件安全【技術(shù)領(lǐng)域】,具體涉及一種隱藏dll模塊導(dǎo)出函數(shù)的方法。
【【背景技術(shù)】】
[0002]dll導(dǎo)出函數(shù)是提供導(dǎo)出名字,函數(shù)指針給第3方或者程序的模塊之間調(diào)用。這樣容易被其他人知道,函數(shù)名,函數(shù)參數(shù),函數(shù)代碼偏移等等,如果被直接調(diào)用,dll模塊的導(dǎo)出函數(shù)是可以使用工具查看到其導(dǎo)出函數(shù)名和函數(shù)地址,這樣就存在一個(gè)被第三方非法調(diào)用的風(fēng)險(xiǎn)。目前的常規(guī)的保護(hù)方式是利用第三方加殼工具,對dll模塊的導(dǎo)出函數(shù)進(jìn)行加密,存在性能下降、容易崩潰,穩(wěn)定性不高,而且被誤報(bào)木馬病毒的風(fēng)險(xiǎn),所以此往往被大多數(shù)軟件廠商棄用。
[0003]有鑒于此,本發(fā)明人針對現(xiàn)有技術(shù)的缺陷深入研究,遂有本案產(chǎn)生。
【
【發(fā)明內(nèi)容】
】
[0004]本發(fā)明所要解決的技術(shù)問題在于提供一種隱藏dll模塊導(dǎo)出函數(shù)的方法,提高了函數(shù)調(diào)用的安全性。
[0005]本發(fā)明是這樣實(shí)現(xiàn)的:
[0006]一種隱藏dll模塊導(dǎo)出函數(shù)的方法,包括如下步驟:
[0007]步驟1:dll模塊將原導(dǎo)出函數(shù)進(jìn)行不導(dǎo)出處理;
[0008]步驟2:dll模塊將原導(dǎo)出函數(shù)的指針進(jìn)行加密存儲;
[0009]步驟3:dll模塊中添加一個(gè)接口,該接口是一個(gè)函數(shù),將該函數(shù)設(shè)置為導(dǎo)出函數(shù);
[0010]步驟4:當(dāng)dll模塊的調(diào)用者要使用本模塊時(shí),首先要獲得dll模塊提供的原導(dǎo)出函數(shù)聲明文件,其次要獲得dll模塊提供的接口的聲明文件,還需獲得dll模塊提供的解密函數(shù)方法的定義和實(shí)現(xiàn)算法;
[0011]所述原導(dǎo)出函數(shù)聲明文件,包括原函數(shù)名、函數(shù)返回值、函數(shù)參數(shù)和類型的聲明;所述接口的聲明文件,包括接口函數(shù)聲明;
[0012]步驟5:dll模塊的調(diào)用者調(diào)用dll模塊提供的接口,獲取原導(dǎo)出函數(shù)的加密指針,需在自己程序中編譯dll模塊提供的解密算法;
[0013]步驟6:dll模塊的調(diào)用者,調(diào)用解密算法,解密獲得原導(dǎo)出函數(shù)加密函數(shù)地址;
[0014]步驟7:dll模塊的調(diào)用者,使用原導(dǎo)出函數(shù),實(shí)現(xiàn)對原導(dǎo)出函數(shù)的使用。
[0015]本發(fā)明的優(yōu)點(diǎn)在于:隱藏了 dll的導(dǎo)出函數(shù),而與dll的使用者建議合法的安全通道協(xié)議,進(jìn)行調(diào)用,從而避免暴露,提高了 dll模塊的安全性。將原導(dǎo)出的dll函數(shù)不導(dǎo)出,而只導(dǎo)出一個(gè)接口,利用這個(gè)接口實(shí)現(xiàn)所有導(dǎo)出函數(shù)的對外開放,這個(gè)方法只有約定調(diào)用方知道,調(diào)用方擁有解密方法。解出方法后,得到真正的函數(shù)指針,即可實(shí)現(xiàn)合法調(diào)用。實(shí)現(xiàn)使用后自動(dòng)加密,使用前自動(dòng)解密,內(nèi)存中不存在函數(shù)地址原文,來提高安全性。利用本方法,可以將原本要導(dǎo)出的函數(shù),進(jìn)行處理,從而不會(huì)導(dǎo)出函數(shù)的相關(guān)信息,提高了函數(shù)調(diào)用的安全性。
【【專利附圖】
【附圖說明】】
[0016]下面參照附圖結(jié)合實(shí)施例對本發(fā)明作進(jìn)一步的描述。
[0017]圖1是本發(fā)明中dll模塊的調(diào)用者調(diào)用dll模塊提供的接口示意圖。
【【具體實(shí)施方式】】
[0018]一種隱藏dll模塊導(dǎo)出函數(shù)的方法,包括如下步驟:
[0019]步驟1:dll模塊將原導(dǎo)出函數(shù)進(jìn)行不導(dǎo)出處理;
[0020]步驟2:dll模塊將原導(dǎo)出函數(shù)的指針進(jìn)行加密存儲;
[0021]步驟3:dll模塊中添加一個(gè)接口,該接口是一個(gè)函數(shù),將該函數(shù)設(shè)置為導(dǎo)出函數(shù);
[0022]步驟4:當(dāng)dll模塊的調(diào)用者要使用本模塊時(shí),首先要獲得dll模塊提供的原導(dǎo)出函數(shù)聲明文件,其次要獲得dll模塊提供的接口的聲明文件,還需獲得dll模塊提供的解密函數(shù)方法的定義和實(shí)現(xiàn)算法;
[0023]所述原導(dǎo)出函數(shù)聲明文件,包括原函數(shù)名、函數(shù)返回值、函數(shù)參數(shù)和類型的聲明;所述接口的聲明文件,包括接口函數(shù)聲明;
[0024]步驟5:dll模塊的調(diào)用者調(diào)用dll模塊提供的接口,如圖1所示,獲取原導(dǎo)出函數(shù)的加密指針,需在自己程序中編譯dll模塊提供的解密算法;
[0025]步驟6:dll模塊的調(diào)用者,調(diào)用解密算法,解密獲得原導(dǎo)出函數(shù)加密函數(shù)地址;
[0026]步驟7:dll模塊的調(diào)用者,使用原導(dǎo)出函數(shù),實(shí)現(xiàn)對原導(dǎo)出函數(shù)的使用。
[0027]本發(fā)明隱藏了 dll的導(dǎo)出函數(shù),而與dll的使用者建議合法的安全通道協(xié)議,進(jìn)行調(diào)用,從而避免暴露,提高了 dll模塊的安全性。將原導(dǎo)出的dll函數(shù)不導(dǎo)出,而只導(dǎo)出一個(gè)接口,利用這個(gè)接口實(shí)現(xiàn)所有導(dǎo)出函數(shù)的對外開放,這個(gè)方法只有約定調(diào)用方知道,調(diào)用方擁有解密方法。解出方法 后,得到真正的函數(shù)指針,即可實(shí)現(xiàn)合法調(diào)用。實(shí)現(xiàn)使用后自動(dòng)加密,使用前自動(dòng)解密,內(nèi)存中不存在函數(shù)地址原文,來提高安全性。利用本方法,可以將原本要導(dǎo)出的函數(shù),進(jìn)行處理,從而不會(huì)導(dǎo)出函數(shù)的相關(guān)信息,提高了函數(shù)調(diào)用的安全性。
[0028]以上所述僅為本發(fā)明的較佳實(shí)施用例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種隱藏dll模塊導(dǎo)出函數(shù)的方法,其特征在于:包括如下步驟: 步驟1:dll模塊將原導(dǎo)出函數(shù)進(jìn)行不導(dǎo)出處理; 步驟2:dll模塊將原導(dǎo)出函數(shù)的指針進(jìn)行加密存儲; 步驟3:dll模塊中添加一個(gè)接口,該接口是一個(gè)函數(shù),將該函數(shù)設(shè)置為導(dǎo)出函數(shù); 步驟4:當(dāng)dll模塊的調(diào)用者要使用本模塊時(shí),首先要獲得dll模塊提供的原導(dǎo)出函數(shù)聲明文件,其次要獲得dll模塊提供的接口的聲明文件,還需獲得dll模塊提供的解密函數(shù)方法的定義和實(shí)現(xiàn)算法; 所述原導(dǎo)出函數(shù)聲明文件,包括原函數(shù)名、函數(shù)返回值、函數(shù)參數(shù)和類型的聲明;所述接口的聲明文件,包括接口函數(shù)聲明; 步驟5:dll模塊的調(diào)用者調(diào)用dll模塊提供的接口,獲取原導(dǎo)出函數(shù)的加密指針,需在自己程序中編譯dll模塊提供的解密算法; 步驟6:dll模塊的調(diào)用者,調(diào)用解密算法,解密獲得原導(dǎo)出函數(shù)加密函數(shù)地址; 步驟7:dll模塊的調(diào)用者,使用原導(dǎo)出函數(shù),實(shí)現(xiàn)對原導(dǎo)出函數(shù)的使用。
【文檔編號】G06F21/62GK103745138SQ201310625191
【公開日】2014年4月23日 申請日期:2013年11月28日 優(yōu)先權(quán)日:2013年11月28日
【發(fā)明者】李上杰, 劉德建, 陳宏展, 方振華 申請人:福建天晴數(shù)碼有限公司