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

    聯系方式

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

    您當前的位置:首頁 > 技術中心 > 關于知識產權

    軟件保護技術--CD-check


    最簡單也最常見的光盤保護就是程序在啟動時判斷光驅中的光盤上是否存在特定的文件,如果不存在則認為用戶沒有正版光盤,拒絕運行。在程序運行的過程當中一般不再檢查光盤的存在與否。Windows下的具體實現一般是這樣的:先用GetLogicalDriveStrings( )或GetLogicalDrives( )得到系統中安裝的所有驅動器的列表,然后再用GetDriveType( )檢查每一個驅動器,如果是光驅則用CreateFileA( )或FindFirstFileA( )等函數檢查特定的文件存在與否,并可能進一步地檢查文件的屬性、大小、內容等。 這種光盤檢查是比較容易被破解的,解密者只要利用上述函數設斷點找到程序啟動時檢查光驅的地方,修改判斷指令就可以跳過光盤檢查。 (1)可將游戲(或其它程序)的光盤拿出,運行游戲,將出現一些錯誤提示,如: Please insert the - CD, or: You need the CD to play the - . 利用這提示可在W32DASM中利用串式數據參考功能查找相應的代碼進行分析。

    (2)相關函數

    1、GetDrivetype(a) 判斷一個磁盤驅動器的類型

    UINT GetDriveType(
    LPCTSTR lpRootPathName // String,包含了驅動器根目錄路徑的一個字串
    );

    返回值
    0 驅動器不能識別
    1 指定的目錄不存在
    2 DriveRemoveable
    3 A Fixed Disk (HardDrive)
    4 Remote Drive(Network)
    5 Cd-Rom驅動器
    6 RamDisk

    如果是普通的程序,你可將EAX由5改成3即可。

    注意:有些程序可能檢測光盤根目錄相關文件,CD的卷標也可能被檢測。

    2、GetLogicalDrives 判斷系統中存在哪些邏輯驅動器字母

    這函數沒有參數

    返回值
    這個結構中的二進制位標志著存在哪些驅動器。其中,位0設為1表示驅動器A:存在于系統中;位1設為1表示存在B:驅動器;以次類推

    3、GetLogicalDriveStrings 獲取一個字串,其中包含了當前所有邏輯驅動器的根驅動器路徑

    DWORD GetLogicalDriveStrings(

    DWORD nBufferLength, // 字串的長度
    LPTSTR lpBuffer   // 用于裝載邏輯驅動器名稱的字串。每個名字都用一個NULL字符分隔,在最后一個名             字后面用兩個NULL表示中止(空中止)
    );

    返回值
    裝載到lpBuffer的字符數量(排除空中止字符)。如緩沖區的長度不夠,不能容下路徑,則返回值就變成要求的緩沖區大小。零表示失敗。會設置GetLastError

    4、GetFileAttributesA 判斷指定文件的屬性

    DWORD GetFileAttributes(

    LPCTSTR lpFileName //指定欲獲取屬性的一個文件的名字
    );


    5、GetFileSize 判斷文件長度

    DWORD GetFileSize(

    HANDLE hFile, // 文件的句柄
    LPDWORD lpFileSizeHigh, // 指定一個長整數,用于裝載一個64位文件長度的頭32位。如這個長度沒有超過               2^32字節,則該參數可以設為NULL(變成ByVal)
    );

    返回值
    返回文件長度。&HFFFFFFFF表示出錯。注意如lpFileSizeHigh不為NULL,且結果為&HFFFFFFFF,那么必須調用GetLastError,判斷是否實際發生了一個錯誤,因為這是一個有效的結果

    6、GetLastError 針對之前調用的api函數,用這個函數取得擴展錯誤信息

    返回值
    由api函數決定。請參考api32.txt文件,其中列出了一系列錯誤常數;都以ERROR_前綴起頭。常用的錯誤代碼見下表
    ERROR_INVALID_HANDLE 無效的句柄作為一個參數傳遞
    ERROR_CALL_NOT_IMPLEMENTED 在win 95下調用專為win nt設計的win32 api函數
    ERROR_INVALID_PARAMETER 函數中有個參數不正確

    7、ReadFile 從文件中讀出數據

    具體參考KEYFILE一節。

    8、其它一些CDROM信息

    中斷2F是mscdex中斷,可用bpint 2f, al=0 ah=15檢測Mmscdex是否安裝。
    也可試著用文件存取設斷


    上一篇:軟件保護技術--功能限制的程序
    下一篇軟件保護技術--軟件保護建議
    溫馨提示:
    凡在本公司進行電路板克隆業務的客戶,必須有合法的PCB設計版權來源聲明,以保護原創PCB設計版權所有者的合法權益;
    【 字體: 】【打印此頁】 【返回】【頂部】【關閉

    主站蜘蛛池模板: 99久久免费国产精精品| 亚洲欧美另类视频| 中国体育生gary飞机| 老师开嫩苞在线观看| 日韩A无V码在线播放| 国产大片内射1区2区| 亚洲AV日韩精品久久久久久A| 8x网站免费入口在线观看| 欧美网站在线观看| 国产萌白酱在线一区二区| 亚洲欧美日韩国产一区图片| 777精品成人影院| 欧美性大战XXXXX久久久√| 国产精品无码一区二区三区免费| 亚洲国产精品专区| 亚洲国产成a人v在线观看| 樱桃视频高清免费观看在线播放| 国产福利vr专区精品| 久爱免费观看在线网站| 韩国朋友夫妇:交换4| 日本三级带日本三级带黄国产 | 久久人人爽天天玩人人妻精品| 麻豆久久久9性大片| 日本人六九视频jⅰzzz| 吃奶摸下的激烈免费视频播放| 一级毛片黄色片| 熟女性饥渴一区二区三区| 国产黄三级高清在线观看播放| 亚洲日韩第一页| 国产91小视频| 无码少妇一区二区三区芒果| 军人武警gay男同gvus69| videoshd泰国| 欧美日韩一区二区三区久久| 国产无遮挡无码视频免费软件| 久久久久人妻一区精品色| 精品国产综合区久久久久久| 在线观看精品视频一区二区三区| 亚洲宅男精品一区在线观看| 麻豆安全免费网址入口| 成人欧美一区二区三区在线观看 |