色拍拍综合-欧美偷拍日韩-亚洲大乳高潮日本专区-97蜜桃网-亚洲v成人天堂影视-黄色拍拍视频-国产无人区码卡功能齐全-91蝌蚪少妇-免费av在线播放不卡-亚洲激情一区二区三区-亚洲午夜在线观看-黄av免费看-十八18禁国产精品www-av午夜在线观看-午夜啪啪小视频-一级a毛片-午夜婷婷色

經(jīng)典案例

聯(lián)系方式

公司名稱(chēng):昆山華航電子有限公司
公司電話:0512-50139595
公司郵箱:eric@kshuahang.com
公司地址:江蘇省昆山市善浦西路

您當(dāng)前的位置:首頁(yè) > 技術(shù)資源 > 芯片解密

小商品軟件的加密方法


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

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

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

---- 隨著操作系統(tǒng)的不斷升級(jí),我們遇到了新的問(wèn)題。Windows的版本越高,應(yīng)用程序?qū)Φ讓拥目刂颇芰驮饺?。比如使用VB開(kāi)發(fā),就無(wú)法直接對(duì)磁盤(pán)進(jìn)行底層訪問(wèn)。

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

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

---- 這里關(guān)鍵的代碼是啟動(dòng)一個(gè)DOS程序,等待它結(jié)束,并得到返回碼。請(qǐng)參看下面的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加密認(rèn)證程序的名稱(chēng)(帶絕對(duì)路徑),在Visibility中給出是否需要DOS程序的窗口可見(jiàn),一般設(shè)為不可見(jiàn)。這種方法在我們的多個(gè)小商品軟件中使用,效果良好。

---- 需要注意的是這種加密方法在Windows NT中無(wú)法運(yùn)行,因?yàn)镹T不支持DOS程序直接訪問(wèn)硬件??紤]到操作系統(tǒng)最終會(huì)過(guò)渡到Windows NT,程序無(wú)法直接訪問(wèn)硬件,如何低成本地實(shí)現(xiàn)小商品的加密就是一個(gè)讓人關(guān)心的問(wèn)題。這方面我們還在探索,歡迎有經(jīng)驗(yàn)的朋友介紹一下。


上一篇:常用軟件加密方法一覽
下一篇我眼中的加密與解密
溫馨提示:
凡在本公司進(jìn)行電路板克隆業(yè)務(wù)的客戶(hù),必須有合法的PCB設(shè)計(jì)版權(quán)來(lái)源聲明,以保護(hù)原創(chuàng)PCB設(shè)計(jì)版權(quán)所有者的合法權(quán)益;
【 字體: 】【打印此頁(yè)】 【返回】【頂部】【關(guān)閉

[小商品軟件的加密方法]^相關(guān)文章


许昌市| 柯坪县| 白朗县| 高阳县| 兴宁市| 台南县| 普定县| 孝义市| 浦北县| 出国| 三门县| 明溪县| 安宁市| 车险| 白山市| 衡山县| 阿坝县| 沙雅县| 门头沟区| 连城县| 海晏县| 五家渠市| 砀山县| 封丘县| 德阳市| 改则县| 吉隆县| 留坝县| 和硕县| 乌鲁木齐市| 嘉义市| 富蕴县| 德令哈市| 建平县| 葫芦岛市| 旌德县| 胶南市| 奉化市| 奇台县| 琼海市| 清丰县|