亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法

文檔序號:6414658閱讀:184來源:國知局

專利名稱::動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法
技術(shù)領(lǐng)域
:本發(fā)明涉及一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,特別是涉及一種在不對原程序碼重新編譯、鏈接的情況下,加入新編程序碼以擴增新功能,且使不同電腦系統(tǒng)都可共用所增加新編程序碼的方法。在一電腦系統(tǒng)中,要發(fā)展出一應用程序,使電腦系統(tǒng)可按設計者在應用程序中的規(guī)劃,進行一連串的處理過程,必須經(jīng)過程序源代碼(sourcecode)撰寫、將程序源代碼編譯(Compile)成電腦系統(tǒng)可執(zhí)行的格式(PortableExecutable以下簡稱PE格式)、再將該PE格式碼與電腦系統(tǒng)提供的公用模組件(UtilityModule)鏈接(Link)等步驟,之后電腦系統(tǒng)才能正確地按設計者的規(guī)劃進行處理。程序源代碼通常是以適合人閱讀的高級語言(HighLevelLanguage)來編寫,用方便程序撰寫者進行思考、規(guī)劃;而PE格式碼則是一種適合電腦系統(tǒng)讀取的機器碼(machinecode),該PE格式碼因涉及電腦系統(tǒng)的硬件結(jié)構(gòu),及其低級運作〔通常與寄存器(Register)、指針(Pointer)、地址(Address)、堆棧(Stack)等有關(guān)〕,極為復雜而難懂;公用模組件則是電腦系統(tǒng)中,將大多數(shù)程序經(jīng)常進行運作,按計算機系統(tǒng)的特定格式,寫成可被其他程序重復引用的模組件,例如微軟公司(Microsoft)視窗(Windows)操作系統(tǒng)(OperatingSystem)下的動態(tài)鏈接庫(DynamicLinkLibrary)。而現(xiàn)今的電腦系統(tǒng)為了減少眾多程序中,每一個別程序都包括其本身引用的公用模組件,造成系統(tǒng)資源的大量浪費(例如一公用模組件被1000個程序所引用,則該各程序中便存在著1000份重復的該公用模組件,占用大量存儲空間),多采用動態(tài)鏈接(DynamicLinking)模式,在該模式下,程序中僅存有其所引用公用模組件的相關(guān)信號(如公用模組件的名稱及其輸入?yún)?shù)、輸出參數(shù)等),電腦系統(tǒng)在程序執(zhí)行時,才動態(tài)地將程序本身與其所引用的公用模組件進行鏈接,之后程序才能正常地執(zhí)行。當設計者依照其構(gòu)想、規(guī)劃、撰寫一應用程序(Applicationprogram)使電腦系統(tǒng)按其意思進行處理后,通常該應用程序的內(nèi)容就不再變動,此時當使用者有了新構(gòu)思,欲在該應用程序中加入新功能,例如,在一程序執(zhí)行以前加入使用期限檢查等功能時,現(xiàn)有技術(shù)通常采用下列兩種方法實施1.應用程序重整即先編寫好一段程序源代碼(sourcecode),此段程序源代碼用以執(zhí)行所希望添加的新功能,再將這段程序源代碼所執(zhí)行的功能加入可執(zhí)行程序中,即將這段新編寫的程序源代碼,與原可執(zhí)行程序的程序源代碼結(jié)合,成為一包括擴增功能的新程序源代碼,再重新編譯(Compile)該新程序源代碼,得到一個新的PE格式碼--PE,再將該PE格式碼與電腦系統(tǒng)的公用模組件鏈接(Link),之后電腦系統(tǒng)才能正確進行處理。如此新的可執(zhí)行程序PE即可完成擴增的功能,并且不影響原可執(zhí)行程序應有的功能,其缺點是必須取得欲擴增功能PE格式文件的程序源代碼,且需要在相關(guān)的電腦系統(tǒng)環(huán)境下進行編譯(Compile)和鏈接(Link),例如微軟公司的Windows操作系統(tǒng)下的程序碼,只能在Windows操作系統(tǒng)環(huán)境下進行編譯(Compile)和鏈接(Link),而微軟公司的NT操作系統(tǒng)下的程序碼只能在NT操作系統(tǒng)環(huán)境下進行編譯(Compile)和鏈接(Link),故應用程序重整的方法受操作系統(tǒng)的限制,費時費力,如圖1A所示。2.用匯編語言(AssemblyLanguage)編寫一段程序碼,這段匯編語言程序碼可以實現(xiàn)附加功能,再修改原PE格式碼的入口點(EntryPoint,即程序開始執(zhí)行的起點),使之與自編程序碼相呼應,指向自編程序碼的開始執(zhí)行位置,此種方法也可在原程序碼中實現(xiàn)附加的功能,但必須修改原來PE格式碼的內(nèi)容,其缺點在(a)復雜,因PE格式碼是電腦所執(zhí)行的機器碼(MachineCode),較為艱澀難懂;(b)由于匯編語言與硬件結(jié)構(gòu)密切相關(guān),不同的硬件結(jié)構(gòu)有不同的匯編語言,因此該方法雖優(yōu)于前一種技術(shù)方法,但對于每一種不同的硬件平臺結(jié)構(gòu)(CPU類型),都要重新編寫一對應的匯編語言程序碼,因而在應用上有很大的限制,如圖1B。本發(fā)明所采用的方法,克服上述兩種現(xiàn)有技術(shù)的缺點,無須重新編譯或鏈接,不受操作系統(tǒng)與硬件平臺的限制,即可達到擴充功能的目的,如圖1C所示。本發(fā)明為一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,該方法主要是利用該電腦系統(tǒng)的動態(tài)鏈接特性,在其可執(zhí)行程序碼(PE格式碼)中,將對公用模組件的引用,改以對新編程序碼的引用取代,使原程序碼在執(zhí)行以前,必先執(zhí)行新編程序碼,以在不對原程序碼重新編譯、鏈接的情況下,加入新編程序碼以擴增功能。本發(fā)明的目的在于由修改可執(zhí)行程序中的動態(tài)鏈接信號,以在不重新編譯、鏈接的情況下,在一可執(zhí)行程序中加入新編程序碼以擴增功能,且使不同電腦系統(tǒng)都可共用所增加的新編程序碼。本發(fā)明的目的是這樣實現(xiàn)的,即提供一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,該方法包括以一新增公用模組件取代一可執(zhí)行程序中引用的一原有公用模組件,并將該原有公用模組件的相關(guān)引用參數(shù)存儲于該可執(zhí)行程序中;在該新增公用模組件執(zhí)行完后,使該可執(zhí)行程序引用該原有公用模組件,隨后執(zhí)行該可執(zhí)行程序。下面結(jié)合附圖,詳細說明本發(fā)明的實施例,其中圖1A,圖1B和圖1C為現(xiàn)有技術(shù)與本發(fā)明的原理對照圖;圖2為本發(fā)明一實施例對一可執(zhí)行程序?qū)嵤┣昂蟮膶φ請D;圖3為本發(fā)明一實施例的部分流程圖;圖4為本發(fā)明一實施例的部分流程圖;圖5為本發(fā)明一實施例的屏幕顯示圖。本發(fā)明是一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,尤指一種一公用模組件,可使自行編寫的程序碼在一可執(zhí)行程序碼之前執(zhí)行,使擴充原可執(zhí)行程序碼的功能,且在此擴充功能的過程,不需對原可執(zhí)行程序碼重新編譯、鏈接,而在執(zhí)行完自行編寫的程序碼以后,動態(tài)地將原可執(zhí)行程序碼還原為未加入自行編寫的程序碼以前的內(nèi)容,使執(zhí)行完自行編寫的程序碼之后,可正常執(zhí)行原可執(zhí)行程序碼的功能。為能清楚揭露本發(fā)明的技術(shù)特點,以下就本發(fā)明在微軟公司W(wǎng)indows操作系統(tǒng)下的一實施例說明,在該實施例中,原可執(zhí)行程序為OLD.exe,該可執(zhí)行程序中引用了公用模組件,文件名為Kerne132.dll的動態(tài)鏈接庫(DynamicLinkLibray-DLL),而自行編寫的程序碼則存于文件名為AddIn.dll的動態(tài)鏈接庫中,而NEW.exe為引用了AddIn.dll新的可執(zhí)行程序,本實施例的實施步驟逐一說明如下在動態(tài)鏈接的電腦系統(tǒng)中,PE格式文件都包括有一引入庫表(ImportLibraryList),其結(jié)構(gòu)如下此引入庫表(ImportLibraryList)中的每一項表示了對一個32比特動態(tài)鏈接庫的引入,其中最主要的信號是要引入的動態(tài)鏈接庫的文件名,及要由此動態(tài)鏈接庫中引入的函數(shù)的函數(shù)名稱或序號表(引入函數(shù)表);在每一動態(tài)鏈接庫中,也都包括一與引入函數(shù)表對應的表(輸出函數(shù)表),其中列出了一動態(tài)鏈接庫文件中的所有輸出函數(shù)。當Windows操作系統(tǒng)執(zhí)行可執(zhí)行程序OLD.exe時,會先行搜尋(Search)其引入庫表(ImportLibraryList),將該表中包括有其文件名的每一動態(tài)鏈接庫(本實施例中為Kerne132.dll),由磁盤載入存儲器內(nèi),然后對照引入庫表中的信號,將存儲器內(nèi)該動態(tài)鏈接庫Kerne132.dll中,每一引入函數(shù)(ImportFunction)的地址(address),填寫到引入函數(shù)表中,之后才執(zhí)行動態(tài)鏈接庫Kerne132.dll的入口點函數(shù)(EntryFunction)。當Windows操作系統(tǒng)完成此搜尋工作后,可執(zhí)行程序OLD.exe所使用到的所有動態(tài)鏈接庫都已載入存儲器內(nèi),也正確填寫了所有要引用的引入函數(shù)(ImportFunction)的地址,此時Windows操作系統(tǒng)才執(zhí)行可執(zhí)行程序OLD.exe的入口點函數(shù)(EntryFunction),并開始執(zhí)行可執(zhí)行程序OLD.exe中的程序碼。由此可知,引入庫表(ImportLibraryList)中所指定的動態(tài)鏈接庫Kerne132.dll,其入口點函數(shù)會優(yōu)先于可執(zhí)行程序OLD.exe的入口點函數(shù)執(zhí)行,即動態(tài)鏈接庫的入口點函數(shù)必先于可執(zhí)行程序的入口點函數(shù)執(zhí)行。故只要自行編寫一個動態(tài)鏈接庫AddIn.dll,在該動態(tài)鏈接庫的入口點函數(shù)中完成欲新加入的功能,再修改可執(zhí)行程序OLD.exe,使其引入庫表中包括有自行編寫的動態(tài)鏈接庫AddIn.dll,即可達成在可執(zhí)行程序OLD.exe執(zhí)行前,先執(zhí)行自編程序碼AddIn.dll的目的。而由于32比特可執(zhí)行程序格式上的限制,在其引入庫表中增加一項相當困難,因此較可行的做法是修改引入庫表中的一項,使其所包括的動態(tài)鏈接庫的文件名、要由此動態(tài)鏈接庫中引入函數(shù)的名稱或序號,變更為自行編寫的動態(tài)鏈接庫的文件名,及由該動態(tài)鏈接庫中引入函數(shù)的名稱或序號的表(引入函數(shù)表)。因此,被修改的可執(zhí)行程序OLD.exe中至少需引入一動態(tài)鏈接庫,而實際上,Windows操作系統(tǒng)下的32比特可執(zhí)行程序都滿足此條件,為便于以下的描述,在此以Kerne132.dll為引入庫表中的待修改項所包括的動態(tài)鏈接庫,詳述本發(fā)明修改可執(zhí)行程序OLD.exe的步驟。為能在一可執(zhí)行程序OLD.exe執(zhí)行之前,先執(zhí)行包括在AddIn.dll中自行編寫的程序碼,首先要對磁盤中存儲的該可執(zhí)行程序碼文件OLD.exe進行修改,其修改的流程如圖3中所示。首先讀取磁盤中要修改的可執(zhí)行程序文件OLD.exe(步驟3-10),并判斷其是否為32比特(Bit)可執(zhí)行程序(步驟3-11),否則結(jié)束修改動作;若OLD.exe為32比特可執(zhí)行程序,對該可執(zhí)行程序文件進行修改,其修改方法與Windows操作系統(tǒng)32比特可執(zhí)行程序的結(jié)構(gòu)密切相關(guān)。若OLD.exe為32比特可執(zhí)行程序,由其引入庫表中,找出對Kerne132.dll引入的項目,而為避免該引入庫表中,原來對Kerne132.dll及其對應的引入函數(shù)表的相關(guān)信號被覆蓋掉,故于修改前,須先將待修改項中所包括的信號(即文件名Kerne132.dll與該文件中所包括引入函數(shù)的名稱或序號的表),保存下來附加于NEW.exe文件尾部(步驟3-12),以便在執(zhí)行完自編程序碼AddIn.dll之后,由NEW.exe文件尾部所保留的該各信號,使可執(zhí)行程序NEW.exe的引入庫表中,被修改項目可還原成Kerne132.dll的文件名,及該文件中所包括引入函數(shù)的名稱或序號的表。進行修改時,將該項目的引入文件名Kerne132.dll更改為自行編寫的動態(tài)鏈接庫的文件名AddIn.dll,并將該項目中的引入函數(shù)表改為由AddIn.dll引入函數(shù)的名稱或序號的表(引入函數(shù)表),且該表只引入AddIn.dll中的一個函數(shù)(步驟3-13),如此,原可執(zhí)行程序OLD.exe的引入庫表中就包括一引入AddIn.dll的項目;之后將存儲器中修改過的可執(zhí)行程序NEW.exe寫回磁盤,以保存修改結(jié)果(步驟3-14)。本發(fā)明該實施例,將原可執(zhí)行程序OLD.exe修改為可執(zhí)行程序NEW.exe,就兩者文件間的內(nèi)容作一比較,如圖2所示。請參閱圖4所示的流程圖,依據(jù)本發(fā)明的方法,在可執(zhí)行程序NEW.exe中加入自行編寫的動態(tài)鏈接庫AddIn.dll后,其處理流程如下Windows操作系統(tǒng)執(zhí)行可執(zhí)行程序NEW.exe時,根據(jù)其引入庫表,將AddIn.dll載入存儲器,并執(zhí)行其入口點函數(shù)(EntryFunction)(步驟4-11),在AddIn.dll的入口點函數(shù)中,可執(zhí)行任何程序碼以進行所希望的新增功能(步驟4-12),之后若不繼續(xù)執(zhí)行程序NEW.exe,則直接結(jié)束(步驟4-18)。執(zhí)行完AddIn.dll的入口點函數(shù)中的新增功能后,判斷是否要繼續(xù)執(zhí)行程序NEW.exe(步驟4-13),如要繼續(xù)執(zhí)行程序NEW.exe,則修改存儲器中的可執(zhí)行程序NEW.exe,使其引入Kerne132.dll動態(tài)鏈接庫,使其可正確執(zhí)行,具體步驟如下將引入庫表中被覆蓋掉,而保存在文件尾部的Kerne132.dll文件名,與其引入函數(shù)的名稱或序號的表(引入函數(shù)表),填寫到可執(zhí)行程序NEW.exe引入庫表中的原來位置(步驟4-14),接著依Windows操作系統(tǒng)的方法,由磁盤中將Kerne132.dll載入至存儲器,并對照引入庫表中Kerne132.dll的引入項,將存儲器內(nèi)Kerne132.dll中引入函數(shù)的正確地址填寫到引入庫表中(步驟4-15),接著由AddIn.dll的入口點函數(shù)返回(步驟4-16),此時存儲器中的可執(zhí)行程序NEW.exe與未在引入庫表中加入AddIn.dll前的OLD.exe相同,因此Windows操作系統(tǒng)可正確執(zhí)行該可執(zhí)行程序NEW.exe,進行原有功能(步驟4-17),直至其完全結(jié)束而退出執(zhí)行(步驟4-18)。本發(fā)明可于AddIn.dll的入口點函數(shù)中,執(zhí)行任何程序碼以進行所希望的新增功能(步驟4-12),以下舉兩具體范例說明在一試用版程序中加入試用期的保護,其目的是在原可執(zhí)行程序中加入試用信息的處理,以于其執(zhí)行前先顯示試用期限信息(請參閱圖5所示),并限制用戶使用該試用版程序期間(如30天),同時顯示購買正式版程序的方法;若用戶選擇繼續(xù)執(zhí)行,而當時尚未超出試用期限,則動態(tài)恢復原可執(zhí)行程序使其正常執(zhí)行,而若當時已超出試用期限,則結(jié)束該試用版程序的執(zhí)行。另一范例應用在限制特定使用者執(zhí)行應用程序上,如將一密碼檢查功能加入解壓縮程序前,則未被授權(quán)的使用者(未持有密碼或密碼錯誤)因無合格密碼以執(zhí)行解壓縮程序,故可使未被授權(quán)的使用者不能解壓縮文件檔案,以防止其查看該文件檔案的內(nèi)容。本發(fā)明的方法因使自行編寫的程序碼在現(xiàn)有的應用程序之前執(zhí)行,且不需對現(xiàn)有應用程序再進行編譯、鏈接,以及修改其可執(zhí)行程序文件,故依本發(fā)明的方法可不受開發(fā)環(huán)境限制,適用于各種硬件平臺,實施簡易且具有移植性。以上所述,僅為本發(fā)明的實施例,但是,本發(fā)明所保護的權(quán)利范圍,并不局限于此,凡熟悉該項技術(shù)人員,依據(jù)本發(fā)明所揭露的技術(shù)內(nèi)容,可作些改變,均應屬于本發(fā)明的保護范圍。權(quán)利要求1.一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,其特征在于,該方法包括以一新增公用模組件取代一可執(zhí)行程序中引用的一原有公用模組件,并將該原有公用模組件的相關(guān)引用參數(shù)存儲于該可執(zhí)行程序中;在該新增公用模組件執(zhí)行完后,使該可執(zhí)行程序引用該原有公用模組件,隨后執(zhí)行該可執(zhí)行程序。2.如權(quán)利要求1所述的一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,其特征在于,該方法以多個新增公用模組件取代一可執(zhí)行程序中引用的多個原有公用模組件,并將該各原有公用模組件的相關(guān)引用參數(shù)存儲于該可執(zhí)行程序中。3.如權(quán)利要求1所述的一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,其特征在于,該電腦系統(tǒng)至少包括一存儲單元,該存儲單元用以存儲執(zhí)行中的可執(zhí)行程序及其相關(guān)數(shù)據(jù)。4.如權(quán)利要求1所述的一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,其特征在于,該新增公用模組件,包括將存儲單元中,一可執(zhí)行程序已修改為引用該新增公用模組件的相關(guān)引用參數(shù),以可執(zhí)行程序文件的尾端所存儲,引用該原有公用模組件的相關(guān)引用參數(shù)值取代。5.如權(quán)利要求1所述的一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,其特征在于,進一步包括建立至少一新增公用模組件,該新增公用模組件可供電腦系統(tǒng)中的一可執(zhí)行程序相關(guān)引用參數(shù)值引用。6.如權(quán)利要求1所述的一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,其特征在于,該電腦系統(tǒng)至少包括一輸出屏幕。7.如權(quán)利要求6所述的一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,其特征在于,新增公用模組件由輸出屏幕輸出至少一顯示畫面。8.如權(quán)利要求7所述的一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,其特征在于,該顯示畫面示出該可執(zhí)行程序的開始使用日期。9.如權(quán)利要求7所述的一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,其特征在于,該顯示畫面顯示出該可執(zhí)行程序的使用期限。10.如權(quán)利要求7所述的一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,其特征在于,該顯示畫面示出該可執(zhí)行程序的版本更新介紹。11.如權(quán)利要求1所述的一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,其特征在于,該電腦系統(tǒng)至少包括一輸入鍵盤。12.如權(quán)利要求11所述的一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,其特征在于,新增公用模組件由輸入鍵盤接收至少一輸入數(shù)據(jù)。13.如權(quán)利要求12所述的一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,該新增公用模組件根據(jù)該輸入數(shù)據(jù),將存儲單元中,該可執(zhí)行程序已修改為引用該新增公用模組件的相關(guān)引用參數(shù),以可執(zhí)行程序文件的尾端所存儲,引用該原有公用模組件的相關(guān)引用參數(shù)值取代。14.如權(quán)利要求11所述的一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,其特征在于,該新增公用模組件根據(jù)該輸入數(shù)據(jù)決定其執(zhí)行方式。15.如權(quán)利要求14所述的一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,其特征在于,該新增公用模組件根據(jù)該輸入數(shù)據(jù),結(jié)束該可執(zhí)行程序的執(zhí)行。全文摘要一種動態(tài)鏈接的電腦系統(tǒng)中擴增程序功能的方法,利用動態(tài)鏈接的運作方式,將擴增功能以公用模組件的形式完成,并在一程序中以公用模組件取代其原先引用的另一公用模組件,同時存儲被取代公用模組件的相關(guān)引用數(shù)據(jù),使該程序執(zhí)行前先執(zhí)行擴增功能的公用模組件,隨后擴增功能的公用模組件按所存儲相關(guān)引用數(shù)據(jù),將被其取代的公用模組件還原至程序中,使其正常執(zhí)行程序并以擴增功能公用模組件的執(zhí)行結(jié)果,決定其執(zhí)行方式。文檔編號G06F9/45GK1254127SQ98124159公開日2000年5月24日申請日期1998年11月12日優(yōu)先權(quán)日1998年11月12日發(fā)明者林光信,陳玄同,侯震宇申請人:英業(yè)達股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1