Key File(注冊文件)是一種利用文件來注冊軟件的保護(hù)方式。Key File一般是一個(gè)小文件,可以是純文本文件,也可以是包含不可顯示字符的二進(jìn)制文件,其內(nèi)容是一些加密過或未加密的數(shù)據(jù),其中可能有用戶名、注冊碼等信息。文件格式則由軟件作者自己定義。試用版軟件沒有注冊文件,當(dāng)用戶向作者付費(fèi)注冊之后,會(huì)收到作者寄來的注冊文件,其中可能包含用戶的個(gè)人信息。用戶只要將該文件放入指定的目錄,就可以讓軟件成為正式版。該文件一般是放在軟件的安裝目錄中或系統(tǒng)目錄下。軟件每次啟動(dòng)時(shí),從該文件中讀取數(shù)據(jù),然后利用某種算法進(jìn)行處理,根據(jù)處理的結(jié)果判斷是否為正確的注冊文件,如果正確則以注冊版模式來運(yùn)行。 (1)破解Key File一般思路
1. 最好分析Key File的工具是十六進(jìn)制工具,普通的文本編輯工具不太適合。
2. 對(duì)付這類程序,你首先建立一假的Key File文件。一般的軟件容許Key File有不同的大小和文件名,你建立的文件內(nèi)容必須易讀,跟據(jù)情況調(diào)整Key File的大小和文件名。為什么要易讀呢?因?yàn)槟繕?biāo)程序從KeyFile中讀取數(shù)據(jù),然后進(jìn)行處理,易讀有利于你分析其運(yùn)算過程。
3. Key File文件在大多數(shù)情況下,是以'*.key'形式存在的。
4. Key File文件名可用W32DASM或十六進(jìn)制工具打開程序用查找字符串方式確定;
5. 讀用戶手冊(有時(shí)作者可能會(huì)提到);
6. 用Filemon 這一工具,它能實(shí)時(shí)監(jiān)視系統(tǒng)各文件的狀態(tài),因此運(yùn)行程序時(shí),如它去讀指定文件名的Key File時(shí),會(huì)在Filemon顯示Key File文件名。一但你發(fā)現(xiàn)Key File文件名,就建立一假的Key File到要被crack軟件目錄下,然后去crack。
(2)Windows下破解Key File幾個(gè)常用的函數(shù):
函數(shù)ReadFile
作用:從文件中讀出數(shù)據(jù)
參數(shù):其中Long,非零表示成功,零表示失敗。
BOOL ReadFile(
HANDLE hFile, // Long,文件的句柄
LPVOID lpBuffer, // Any,用于保存讀入數(shù)據(jù)的一個(gè)緩沖區(qū)
DWORD nNumberOfBytesToRead, //Long,要讀入的字符數(shù)
LPDWORD lpNumberOfBytesRead, // Long,從文件中實(shí)際讀入的字符數(shù)
LPOVERLAPPED lpOverlapped // address of structure for data
);
函數(shù)CreateFileA
作用:可打開和創(chuàng)建文件、管道、郵槽、通信服務(wù)、設(shè)備以及控制臺(tái)
HANDLE CreateFileA(
LPCTSTR lpFileName, // String,要打開的文件的名字
DWORD dwDesiredAccess, // 允許對(duì)設(shè)備進(jìn)行讀寫訪問;
DWORD dwShareMode, // 共享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes// 指向一個(gè)SECURITY_ATTRIBUTES結(jié)構(gòu)的指針,定義了文件的安全特性(如果操作系統(tǒng)支持的)
DWORD dwCreationDistribution, // 如何創(chuàng)建文件
DWORD dwFlagsAndAttributes, // file attributes
HANDLE hTemplateFile //Long,如果不為零,則指定一個(gè)文件句柄。新文件將從這個(gè)文件中復(fù)制 擴(kuò)展屬性
);
函數(shù)_lopen( )
作用:以二進(jìn)制模式打開指定的文件
HFILE _lopen(
LPCSTR lpPathName, // 欲打開文件的名字
int iReadWrite // 訪問模式和共享模式常數(shù)的一個(gè)組合
);
函數(shù)FindFirstFileA( )
作用:根據(jù)文件名查找文件
HANDLE FindFirstFile(
LPCTSTR lpFileName, // 欲搜索的文件名??砂ㄅ浞?,并可包含一個(gè)路徑或相對(duì)路徑名
LPWIN32_FIND_DATA lpFindFileData // WIN32_FIND_DATA,這個(gè)結(jié)構(gòu)用于裝載與找到的文件有關(guān)的信息。該結(jié)構(gòu)可用于后續(xù)的搜索
);
上一篇:軟件保護(hù)技術(shù)--時(shí)間限制
下一篇軟件保護(hù)技術(shù)--功能限制的程序
溫馨提示:
凡在本公司進(jìn)行電路板克隆業(yè)務(wù)的客戶,必須有合法的PCB設(shè)計(jì)版權(quán)來源聲明,以保護(hù)原創(chuàng)PCB設(shè)計(jì)版權(quán)所有者的合法權(quán)益;