delphi加密演算法
㈠ 如何給dvd視頻光碟加密
9月6日 15:47 軟體名稱:《加密王2005》
最新版本: 2006版
軟體網址:
軟體直接下載地址:
軟體簡介:
國內唯一從主板獲取機器碼(硬體ID)的加密軟體,而且支持軟體\硬體(加密狗)多種加密方式.
除非更換電腦主板,否則注冊碼不會因為硬碟格式化、更換硬碟而改變!!!
特別適合共享軟體的加密、光碟教學的加密。
加密組件,可以對各種音頻、視頻、EXE文件進行加密。
並且可以獲得機器碼,用戶必須注冊後,才可以正式使用。
1、一個DLL組件,採用硬體信息標識技術,可獲取唯一的ID號,不會因為格式化硬碟、重裝系統而失效。
伺服器端使用此組件,將獲取到ID號寫入到一個共享目錄中,例如 server\\DI\ 。
2、客戶端從server\\DI\獲取到機器碼(唯一ID號),根據此加密。(我公司可提供加密演算法,注冊機)
3、客戶端驗證 機器碼(唯一ID號)和注冊碼的唯一對應有效性,來判斷是否是合法用戶。
機器碼生成模塊用VC/C++編寫;
加密演算法為VB源代碼;
不使用任何第三方控制項、組件,完全獨立自主開發;
我公司內部多年使用,可靠性、穩定性極好,不依賴機器中的易損件(比如硬碟),無法用機器克隆方式迴避,使用者無任何修改餘地;
它可以在所有windows操作系統下運行。作為中間件,可在c、c++、java、delphi、vc、vb、vf、Masm32、pb、php、Authorware等各種工具開發的軟體中嵌入使用,它的兼容性非常好。核心代碼經全域均勻抽值測試 ,各種特值測試和可行的全域測試均通過。
超強的安全的加密演算法(專利技術),安全強度1024bit *32n 該演算法目前是無法破譯的。
新進的反跟蹤演算法,使等計算機"黑客 Crack"望而卻步。
加密傳輸,所有的數據在傳輸的過程中都是被動態加密的,使"黑客 Crack"無從下手。
揪錯 ┆
㈡ delphi 怎樣安全地保存密碼到文件
用字元串加密演算法加密, 比如md5
㈢ Delphi軟體的破解
第一招:製造假相
反匯編和調試器跟蹤都是不可能防止的,因為所有的Win32程序都必須通過API來調用Windows系統中的關鍵DLL的(如Kernel32.dll、GDI32.dll等),然而API是可以Hook的。我們只能從自己的代碼著手來保護我們的勞動果實了。
為了自己調試和以後維護的方便,我們一般採用有意義的名字給我們的函數命名,可這給了Cracker可乘之機。例如這樣的函數是什麼意思大家應該一目瞭然吧?IsRegistered(),IsLicensed(),LicenseVerify(),CheckReg()……這樣Cracker就可以輕松地從數千個函數中找到他的目標——你的注冊碼校驗函數!而且破解Delphi編寫的軟體還有一件TMG小組的破解利器——DeDe。它可以輕松地看到你軟體里的Form、Unit和函數名,還可以反匯編一部分代碼,更可以和Win32DASM合作反匯編更多的代碼,對Delphi編出的程序威脅極大。
為了不給Cracker創造溫馨舒適的破解環境,要故意混亂(Obfuscate)我們的代碼,將軟體中所有的函數名全部替換成隨機生成的函數名。例如Func_3dfsa_fs32zlfv��這個函數是什麼意思?恐怕只有天知道了。網上有現成的代碼混亂器,按你使用的編程語言的種類可以找到一些。但要注意,只有當你要發布軟體時才使用它,而且一定注意備份源代碼。否則,當你看不懂你自己的代碼時就著急了:)
第二招:用公匙,並改名
另外,一定要使用公開密匙演算法保護你的軟體。RSA、DSA和El Gamal之類的演算法都可以從網上找到。但注意:將你演算法單元中所有涉及到演算法名稱的字元串全部改名。避免被Cracker發現你用的演算法而模仿寫出注冊機來!你還可以張冠李戴,明明用的DSA,將名字全部替換成RSA。
其它演算法,如對稱演算法和Hash演算法也要注意改名,否則這樣:
EncryptedCode = Blowfish(MD5(UserName),MD5(Key));
//你的加密演算法,使用了Blowfish(對稱演算法)和MD5(Hash演算法)
雖然那些Cracker不了解Blowfish和MD5演算法的原理,也不會逆向推測它們,但他們了解你的校驗演算法的流程和演算法名,便可馬上從網上找到類似的Blowfish和MD5演算法包,從而模擬你的軟體仿造出注冊機。
如果你用不常見的,演算法如Skipjack(NASA美國航天局標准演算法)、LOKI、3-WAY、Safer之類不出名但保密程度很高的演算法,並且全部改名,這樣就會傷透他們腦筋了。
當然,最好把Hash演算法也全部改名,會給他們製造更多的困難。但注意,MD5和SHA之類的Hash初始值會被Cracker從內存中找到,這樣他就知道你用的Hash了。所以建議同時使用MD5的變形演算法Ripe-MD(RMD)128或160或其它的Hash,如Tiger、Haval等演算法。
第三招:阻止別人調試
還有一點,調試器對我們的威脅很大,我們不會讓Cracker們舒舒服服地使用SoftICE、TRW或OllyDbg來調試我們的程序。除了常用的MeItICE方法外,這里我給一個筆者寫的方法:
{檢查自己的進程的父進程是否為Explorer.exe,否則是被調試器載入了}
�
{不過注意,控制台程序的父進程在WinNT下是Cmd.exe!}
{注意載入TlHelp32.pas單元}
procere CheckParentProc;
var //檢查自己的進程的父進程
Pn: TProcesseNtry32;
sHandle:THandle;
H,ExplProc,ParentProc:Hwnd;
Found:Boolean;
Buffer:array[0..1023]of Char;
Path:string;
begin
H:= 0;
ExplProc:= 0;
ParentProc:= 0;
//得到Windows的目錄
SetString(Path,Buffer)
GetWindowsDirectory(Buffer,Sizeof(Buffer)- 1));
Path:= UpperCase(Path)+ '\EX PLORER.EXE';//得到Explorer的路徑
//得到所有進程的列錶快照
sHandle:= CreateToolHelp32Snap Shot(TH32CS_SNAPALL,0);
Found:= Process32First(sHandle,Pn);//查找進程
while Found do //遍歷所有進程
begin
if Pn.szExeFile = ParamStr(0)then //自己的進程
begin
ParentProc:= Pn.th32ParentProcessID://得到父進程的進程ID
//父進程的句柄
H:= OpenProcess(PRO CESS_ALL_ACCESS,True,Pn.th32Parent ProcessID);
end
else if UpperCase(Pn.szExeFile)= Path then
ExplProc:= Pn.th32ProcessID;//Ex plorer的PID
Found:= Process32Next(sHandle,Pn);//查找下一個
end;
//父進程不是Explorer,是調試器……
if ParentProc <> ExplProc then
begin
TerminateProcess(H,0);//殺之!除之而後快也! :)
//你還可以加上其它什麼死機代碼來消遣消遣這位可愛的Cracker:)
end�
end�
你可以在Delphi或者VC中試試,這樣可以把Delphi和VC殺掉了,因為你現在用的是Delphi和VC的內置調試器來運行你的程序。調試的時候你還是把它的注釋刪掉吧,發布時別忘記激活喲!