日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當前位置:雨林木風下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

小商品軟件的加密辦法

小商品軟件的加密辦法

更新時間:2022-05-13 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

最近讀到《計算機世界》的文章《用VB給商品軟件加密的方法》,對此我也有比較多的實際體驗,和大家探討一下。

---- 我曾經(jīng)參與了一些小商品軟件的開發(fā)工作,每次的加密工作總是讓人頭痛。既然是商品軟件,在目前的情況下,就不得不考慮防止非法拷貝的問題。加密的方法很多,最終目的無非都是確認用戶具有合法的軟件使用權(quán)。所以,必須給合法用戶一個使用軟件的授權(quán)憑證,這種憑證是難以復制的。確實,采用加密狗做授權(quán)憑證是不現(xiàn)實的,加密狗的價格在小軟件的成本中占的比例太大了。由于小軟件一般是使用軟磁盤發(fā)布的,所以一般的方法是讓軟磁盤充當發(fā)行媒體和授權(quán)憑證的雙重角色,這種方法的成本是比較低的。《用VB給商品軟件加密的方法》中提到的辦法我認為是行不通的。盜用者拷貝軟件時,一般是拷貝你出售的磁盤上的軟件包,而不是拷貝安裝以后程序所在目錄的內(nèi)容。所以,要想防止非法拷貝,就需要安裝程序或者是應用程序具有確認鑰匙盤的功能。

---- 我涉及到的幾個產(chǎn)品按照時間順序來說,最初的是在DOS平臺使用Turbo C++3.0開發(fā)的。后來的產(chǎn)品是在Windows 3.2下使用VB 4.0進行開發(fā)的。最近又改為在Windows95/98下使用Delphi 4.0進行開發(fā)。

---- 在DOS平臺下的軟磁盤加密技術(shù)很多,也比較成熟。我們采用的方法是直接調(diào)用中斷進行底層的磁盤訪問,在軟磁盤的特殊部位讀寫一些特殊的信息。這些信息使用一般的拷貝方法是無法復制的,這樣就可以達到加密的作用。接觸過軟磁盤加密的人都知道,這種方法有一定的缺陷,就是兼容性不強。比如在有些機型上,或者如果用戶的軟驅(qū)性能不夠好,都無法正確識別鑰匙盤。經(jīng)過在實踐中不斷地完善,我們?nèi)〉昧吮容^好的效果。

---- 隨著操作系統(tǒng)的不斷升級,我們遇到了新的問題。Windows的版本越高,應用程序?qū)Φ讓拥目刂颇芰驮饺酢1热缡褂肰B開發(fā),就無法直接對磁盤進行底層訪問。

---- 經(jīng)過不斷的摸索,我們現(xiàn)在采取的辦法是把原來DOS程序中完成加密認證的部分獨立出來,編譯成一個加密認證程序。讓在Windows下使用VB、Delphi開發(fā)的應用程序啟動這個DOS加密認證程序進行底層讀寫,返回是否有鑰匙盤的判斷結(jié)果以確定是否繼續(xù)執(zhí)行。由于我們在DOS平臺下的加密技術(shù)已經(jīng)比較穩(wěn)定,這是最簡便有效的方式。這種做法的前提是DOS程序在Windows 3.2/95/98下均可順利地執(zhí)行。

---- 具體的實現(xiàn)方式是由應用程序調(diào)用Windows API啟動DOS加密認證程序,并等待該程序結(jié)束,判斷其返回碼,以確定是否有鑰匙盤。為此,需要對原來的DOS程序略加改動,將判斷結(jié)果以返回碼的形式輸出,例如在Turbo C++ 3.0中使用exit(0)返回0,使用exit(1)返回1(至于DOS實現(xiàn)磁盤加密的方法由于資料很多,這里不作詳細介紹)。而Windows應用程序讀取到返回碼以后,就可以確定下一步的動作。

---- 這里關(guān)鍵的代碼是啟動一個DOS程序,等待它結(jié)束,并得到返回碼。請參看下面的Delphi函數(shù)WinExecAndWait32:

Function WinExecAndWait32(FileName :
String; Visibility : integer):dWord;
var
zAppName:array[0..512] of char;
zCurDir:array[0..255] of char;
WorkDir:String;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
StrPCopy(zAppName,FileName);
GetDir(0,WorkDir);
StrPCopy(zCurDir,WorkDir);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);

StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if not CreateProcess(nil,
zAppName, { pointer to command line string }
nil, { pointer to process security attributes }
nil, { pointer to thread security attributes }
false, { handle inheritance flag }
CREATE_NEW_CONSOLE or { creation flags }
NORMAL_PRIORITY_CLASS,
nil, { pointer to new environment block }
nil, { pointer to current directory name }
StartupInfo, { pointer to STARTUPINFO }
ProcessInfo)
then
Result := 0 { pointer to PROCESS_INF }
else
begin
WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,Result);
end;
end;


---- 在FileName中給出DOS加密認證程序的名稱(帶絕對路徑),在Visibility中給出是否需要DOS程序的窗口可見,一般設(shè)為不可見。這種方法在我們的多個小商品軟件中使用,效果良好。
---- 需要注意的是這種加密方法在Windows NT中無法運行,因為NT不支持DOS程序直接訪問硬件。考慮到操作系統(tǒng)最終會過渡到Windows NT,程序無法直接訪問硬件,如何低成本地實現(xiàn)小商品的加密就是一個讓人關(guān)心的問題。這方面我們還在探索,歡迎有經(jīng)驗的朋友介紹一下。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

主站蜘蛛池模板: 久久久久久久久女黄9999 | 日本一区二区视频在线观看 | 国产一级爱c片免费观看 | 欧美粗大 | 日韩欧美~中文字幕 | 国产一级毛片一区二区三区 | 99久久久久国产 | 狠狠干97| 久草综合网| 日本啪啪网站 | 久草视频中文在线 | 欧美日韩亚洲一区二区 | 男人视频网站 | 午夜在线观看视频在线播放版 | 亚洲久久久久久久 | 人人做人人爽人人爱 | 中文字幕亚洲欧美日韩不卡 | 四虎黄色网址 | 日本高清不卡网站免费 | 亚洲国产精品lv | 第一页欧美 | 国产欧美在线观看视频 | 午夜宅男在线永远免费观看网 | 午夜影院免费观看 | 亚洲日日做天天做日日谢 | 国产1区精品 | 午夜免费影院 | 五月天激情在线 | 国产在线小视频 | 亚洲 欧美 在线 一区 | 91亚洲va在线天线va天堂va国产 | 日本三级韩国三级欧美三级 | 久草网在线视频 | 啊操| 午夜视频色 | 亚洲精品成人一区二区www | 巨熟乳波霸若妻中文观看免费 | 99久久精品久久久久久清纯 | 日本人xx视频免费视频 | 欧美日韩永久久一区二区三区 | 大陆一级毛片 |