نوشته شده توسط
Strong Bytes
شما رشته پسورد رو انکریپت کنید به آرایه تبدیل در رجیستری ذخیره موقع چک کردن پسورد از رجیستری بخونید با پسورد وارد شده توسط کاربر به صورت دو آرایه مقایسه کنید 1000 جور مختلف میشه اینو نوشت که بستگی به خلاقیت شما داره
من این کد رو نوشتم (البته بدون رمزنگاری رشته گفتم کوتاه باشه). درسته
procedure TForm1.Button1Click(Sender: TObject);
function SetPassInReg(const Pass: string): Boolean;
var
Reg: TRegistry;
EncryptString: array of string;
i, PassLen: Integer;
begin
PassLen:= Length(Pass);
SetLength(EncryptString, PassLen);
{Variable Pass Encrypt and then move to array // no this code}
{String copy to array}
for i:= 1 to PassLen do
EncryptString[i - 1]:= Copy(Pass, i, 1);
try
Reg:= TRegistry.Create;
Reg.RootKey:= HKEY_CURRENT_USER;
if (Reg.OpenKey('Software\AVF\My Program', True)) then
begin
Reg.DeleteValue('My Pass');
for i:= 0 to PassLen - 1 do
begin
{Write Array by index in Reg}
Reg.WriteString('My Pass' , Reg.ReadString('My Pass') +
EncryptString[i]);
end;
end;
finally
FreeAndNil(Reg);
end;
end;
begin
SetPassInReg('SeCuRiTy_ToKen');
end;
آنتی دیباگ استفاده نکردید مهم نیست برای VM هم از VMProtect استفاده کنید.
میشه لطفا بیشتر توضیح بدهید(من با VM و VMProtect آشنا نیستم).