• <rt id="imqiw"></rt>
  • <rt id="imqiw"><acronym id="imqiw"></acronym></rt>
    
    
  • 經典案例

    聯系方式

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

    您當前的位置:首頁 > 技術資源 > 芯片解密

    小商品軟件的加密方法


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

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

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

    ---- 隨著操作系統的不斷升級,我們遇到了新的問題。Windows的版本越高,應用程序對底層的控制能力就越弱。比如使用VB開發,就無法直接對磁盤進行底層訪問。

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

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

    ---- 這里關鍵的代碼是啟動一個DOS程序,等待它結束,并得到返回碼。請參看下面的Delphi函數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程序的窗口可見,一般設為不可見。這種方法在我們的多個小商品軟件中使用,效果良好。

    ---- 需要注意的是這種加密方法在Windows NT中無法運行,因為NT不支持DOS程序直接訪問硬件。考慮到操作系統最終會過渡到Windows NT,程序無法直接訪問硬件,如何低成本地實現小商品的加密就是一個讓人關心的問題。這方面我們還在探索,歡迎有經驗的朋友介紹一下。


    上一篇:常用軟件加密方法一覽
    下一篇我眼中的加密與解密
    溫馨提示:
    凡在本公司進行電路板克隆業務的客戶,必須有合法的PCB設計版權來源聲明,以保護原創PCB設計版權所有者的合法權益;
    【 字體: 】【打印此頁】 【返回】【頂部】【關閉

    主站蜘蛛池模板: 日韩精品久久无码人妻中文字幕| 亚洲午夜久久久久妓女影院| 三级演员苏畅简历及个人资料简介 | 国产91精品在线| 最近最新2019中文字幕高清| 国产精品一区二区三乱码| 亚洲人配人种jizz| sss欧美华人整片在线观看| 欧美人妻精品一区二区三区| 国产精品午夜小视频观看| 六月天丁香婷婷| 久久久久88色偷偷| 色婷婷综合久久久久中文一区二区 | 亚洲AV无码精品国产成人| 国产精品www| 日本最新免费二区| 国产AV无码专区亚洲AV| 三级网站在线播放| 真实的国产乱xxxx在线| 大胆gogo高清在线观看| 亚洲欧美日韩在线精品2021| 2018天天操| 明星ai换脸资源在线播放| 国产啊v在线观看| 亚洲91精品麻豆国产系列在线| 人妖在线精品一区二区三区| 日韩电影中文字幕在线观看| 国产免费人成在线视频| 中文字幕中文字幕中中文| 韩国无遮挡羞羞漫画| 收集最新中文国产中文字幕| 免费看又黄又无码的网站| 99久久99久久精品国产片果冻| 白丝女班长被弄得娇喘不停 | 国产亚洲美女精品久久久久| 中文字幕av无码专区第一页| 男人把女人桶到爽| 好湿好紧好痛a级是免费视频| 亚洲视频第一页| jlzzjlzz亚洲jzjzjz| 日本三级带日本三级带黄国产 |