Asprotect практическа полза

Ако анализираме материалите на специализирани форуми (rusf.com, rsdn.ru, ixbt.com и др.), Сред разглеждания клас на програми ние може веднага да се идентифицират в челната тройка. Тя ASProtect. Броненосец и EXECrypt. Тези три продукта осигуряват достатъчно защита на разумна цена, която им даде заслужена популярност сред разработчиците. В тази статия ще се опитам да разкажа за първото от тях.

С ASProtect Знам повече от пет години. Създаден от оставащата български разработчик Alekseem Solodovnikovym, дълго време беше счетено за почти единственият покровител, за когото това е почти невъзможно да се направи една пукнатина.
Както знаете, софтуер абсолютна защита не се случи, и не може да бъде. Единствената цел на мярката качеството на защитата може да бъде стойност на съотношението на продукта и стойността на неговия хакерство. Когато разпространява софтуерни разработчици страдат значителни загуби в резултат на факта, че мрежата се появи серийни номера, ключове и лепенки. Но специално беда доставят ключови генератори, т.нар търсени. Най-ефективният начин да се избегнат финансови загуби от появата на серийния номер е актуализациите на редовни освобождаване, което добавя функционалността на програмата, и незаконно номер или ключ се вписват в "черния списък". Често разработчиците, за да се повиши популярността на продукта, се приложат "оставени" клавиши, за да популярните krekerskie ресурси (по едно време и аз съгреших това
:)). Въпреки това, ако в мрежата се появява пукнатина, тя става все по-трудно да се разграничат от законен фалшиви ключове. В резултат на това се затруднява не само блокира незаконни ползватели на защитения продукт, но също така и подкрепата на правни, предвид факта, че собствениците на продуктите не могат да бъдат по-пълен списък на купувачите.

Преди да се пристъпи към разглеждане на практически примери, нека да обясни теорията на операция в ASProtect. По този начин, на опаковката на създателя на отчета ви позволява да изпълнява следните функции:

  • опаковки приложение;
  • приложения за криптиране;
  • Защита срещу отнемане на сметището с помощта като например
    ProcDump;
  • Почтеност мониторинг приложения;
  • Защита на модификация памет (в паметта кръпка);
  • API за прилагане взаимодействие с функции за сигурност;
  • Създаване и проверка на регистрационните ключове, използващи публични алгоритми;
  • Поддържане на незаконно ключова база;
  • Възможността за създаване на пробни версии, тази функционалност ограничат прилагането на базата на време или брой излитания;
  • Способност за генериране на ключове с позоваване на "желязо";
  • Възможността за създаване на он-лайн keygenratorov за такива регистрационни услуги като RegSoft, RegNow. ShareIt!,
    SWREG.

А програмист използване ASProtect. може да се определи с произволен брой видове, които могат да се движат си програма. Например, тя може да бъде в режим демо, в която програмата е ограничена функционалност и режим, където функционалността защитен продукт става напълно достъпна за регистрирания потребител регистриран.

Основната разлика между втората версия ASProtect първият е да се използва актуализираната API. ASProtect API предоставя на разработчиците с три групи функции:

  • Функция, за да получите информация за регистрация на потребителя;
  • Функции за информация относно параметрите на Trial режим;
  • Функции за управление на шифровани кодови фрагменти, които работят само в регистрираната режим.

Аз използвам термина "функция" в съответствие с документацията ASProtect. въпреки факта, че Delphi език се отнася до разделянето на процедура и функция концепции. Някои от обсъдени по-долу рутинни процедури са описани като процедура.

Първата група включва CheckKey (проверете ключът за всички поддържани режими), GetHardwareID (уникален идентификатор PC), CheckKeyAndDecrypt (проверете ключът за всички поддържани режими и го съхранява във външен файл за конфигуриране), GetRegistrationKeys (получава списък с ключове), GetModeInformation (получава информация режим, в който програмата се изпълнява в момента, както и всички други видове), GetRegistrationInformation (получава информация за начина, по който програмата се изпълнява в момента).
Втората група включва функции GetTrialDays (получава информация за параметрите на пробен период) GetTrialExecs (проверява текущия режим и на изследването), GetKeyDate (проверете ключова дата на създаване), GetExpirationDate (), GetKeyExpirationDate ().

Третата група включва една единствена функция - SetUserKey. Тази функция декриптира криптиран секция.

Освен всичко по-горе, дава описание на структурата ASProtect
TModeStatus:

TModeStatus = опаковани рекорд
ModeID: Byte;
isRegistered,
IsKeyPresent,
IsWrongHarwareID,
IsKeyExpired,
IsModeExpired,
IsBlackListedKey,
IsModeActivated. булева;
приключи;

Тази структура се съдържа информация за начина, по който работят или потенциално може да работи програмата.

Да предположим, че имаме пълно заявление, и ние искаме да го защити. Нека да напише молба за тест, съдържащ проста форма с един бутон, като кликнете върху която произвежда съобщение «Здравей, свят!». След това опитайте да подготвим нашите елементарни защита програма. На първо място, ние извършваме някаква манипулация на кода на приложението.
Като основен пример, вземете Reg Trial. Съответно, ние се интересуваме от неговата Delphi-реализация.

Преработени от OnShow () на основната форма на прилагане. В началото на процедурата по манипулатор повикване GetRegistrationInformation (0, UserKey и потребителско име) и по този начин се знае дали ключа и потребителското име за всяка операция. Като правило, на съдебния процес или функционално-ограничен режим на работа не се изисква регистрация. Ето защо, ние ще проверим дали това е (регистрация) се произвежда на всички и ако е така, какъв режим да съвпадне (функция
GetModeInformation).

Веднага забелязваме, че веднага след като ние също са били предизвикателство GetRegistrationInformation, програмата вече няма да работи, като в събитието Log'e когато работи нещо подобно на следното:

Модул Load: UNKNOWN_MODULE_12. Не Debug Info. База Адрес: $ 00,35 милиона. Метод Project2.exe (280)

Въпреки това съставянето е успешно. Разбира се, предварително трябва да декларират константи:

конст
UserKey. PChar = нула;
Потребителско име. PChar = нула;
MODENAME. PChar = нула;
TrialDaysTotal. DWORD = DWORD (-1);
TrialDaysLeft. DWORD = DWORD (-1);

Стартирайте програмата за изпълнение, ние можем само когато .exe файла, ще бъдат обработени ома ASProtect ".

процедура TForm2.Button1Click (Sender: TObject);
Var
ModeStatus. TModeStatus;
започвам
GetRegistrationInformation (0, UserKey, потребителско име);
ShowMessage (UserKey);
ShowMessage (потребителско име);
ако (UserKey <> нула) и (StrLen (UserKey)> 0), след това
започвам

GetModeInformation (0, MODENAME, ModeStatus);
ShowMessage ( "Здравей, свят!");

край
останало ShowMessage ( "Регистрация Моля! ');
приключи;

Предварително съставяне на проекта, тичам ASProtect. Пред нас са четири раздела, които съдържат всички необходими настройки за работа. На първия раздел, разположен на пътя към нашата програма, ние публикуват тази информация на своята версия, задайте ниво на компресия и ако е необходимо, да направи допълнителни настройки.

Преминете към раздела Modes (режими). В нашия случай, има два варианта: или програмата е регистрирана или не. Съответно, ние създаваме два режима, първият се нарича «Регистриран», втората - «проба». Направете както активен режим (натиснете птица «Дали този режим Active»).

За «Регистрирани» режим, активирайте «Дали това Mode в Регистриран членка?» И «Използвайте ключ за активиране». Смисълът на тези стойности е доста прозрачна. За първия режим (на процеса), задаване на броя на дните, през които можете да използвате нашия софтуер за свободно (Изтекъл Дни номер) и въведете етикета на текст, като уведоми за края на пробния период (за това натиснете бутона «Редактиране на съобщение», разположен в непосредствена близост до него).
След това, просто преминете към четвъртия раздел (Защита). Ако полето за статистиката, виждаме надпис «Готови ли сте за защита ...», това показва, че сме направили всичко правилно. Натиснете бутона "Защита" и да видите статистиката на операциите на изходния файл.

започна защита.
функция (и) 4 API намерено:
- GetHardwareID
- GetModeInformation
- CheckKeyAndDecrypt
- GetRegistrationInformation
Режими успешно запазени.
1 чифт марка (и) за криптиране намерен.
0 двойка марка (и) пристъпи.
Внос маса защитена, размер = 7666 байта
направено защита.

Размер на файла: 420KB компресира до 494KB, Ratio: 117,6%

Когато операция бутона «Run» става активен, и ние можем да го използвате, за да стартирате приложението. Ако всичко върви добре, приложението ще работи без проблеми. Въпреки това, не се опитате да си защити вече защитен файл, ASProtect не позволи това да се направи.
Изпълнете ясно доказва, че защитата работи. Нулевите стойности, и вместо да пишете «Здравей, свят!» Вие ще видите "Регистъра Моля» ще бъде показана като потребителско име и ключ. Ако включите системата време напред,
програмата ще откаже да работи изобщо. И дори "връщане на времето", вие няма да можете да го стартирате.

Сега ще се опитаме да организира извършването на регистрация на програмата. За да направите това, да копирате папката в нашия формуляр за проект RegForm Пример Reg Trial, която е част от ASProtect. и да го добавите към проекта. На основната форма ние ще публикуваме друг бутон и ние осъзнаваме, предизвикателството на формуляра за регистрация:

По-долу е регистрационния код на програмата.

процедура TfrmRegKey.btnRegOkClick (Sender: TObject);
започвам

Ако CheckKeyAndDecrypt (PChar (eCode.Text), PChar (eName.Text), True), след това
започвам
MessageBox (дръжка, "Благодарим Ви за регистрация!", "Регистрация", MB_ICONINFORMATION);
В близост;
сложи край на друг
MessageBox (дръжка, "Ключът не е валидна, моля свържете се с производство!", "Регистрация", MB_ICONWARNING);

Както знаете, валидността на ключа се проверява функцията CheckKeyAndDecrypt.

функция CheckKeyAndDecrypt (Key: PChar; Име: PChar; SaveKey: Булева): Boolean;
stdcall;

Тя проверява ключът за всички видове реализира и го съхранява във външен файл с конфигурация (в този случай, ако последния параметър на функцията - вярно). В този случай, ако ключът е името, функцията връща истина, в противен случай -
невярно.

Друга задача е генератор ключов производител. Тази задача е много важно, тъй като се използва директно ASProtect не винаги е удобно и възможно производството на ключа. Значително по-практично за тази цел има самостоятелно приложение.
Още веднъж, ние се опитваме да се справим с начина на работа примери осигурени. Отвори (Търсения папка), ще видим достатъчно сложен на пръв поглед, на кода.

Функция GenerateKey (Var KeyStr, NameStr String; Var Res .. DWORD): булева;
Var
Params. TParams;
RegData. масив [1..100] на байт;

FillChar (Params, SizeOf (Params), 0);
С Params правя
започвам
// име Регистрация
RegName: = PChar (NameStr);
// брой режим (1..15)
ModeID: = 2;
// Срок на годност
ExpirationDate.Day: = 0;
ExpirationDate.Month: = 0;
ExpirationDate.Year: = 0;
// Constant за криптиране
EncryptionConst: = 699935518;
// HardwareID
HardwareID: = "";
// размер подпис в бита
SignatureBits: = 96;
// константи от проектен файл
С1: =
"AC08B45461D28EB";
С3: =
"A93A5FB8C78D04F1";
С6: =
"26D6BB434014649375231C68A655B81D314AEAF3CE32C6DC8BD '+
"CBCB9EEDC61EBA3C4A2119685E22205B782C88BFAF21FE98D4 '+
"474FBDB1AFA539B05F09EF60DDF5BA8224161942B9582D37DD '+
"D624A97C373E5BB33BFC2335A674E4839D72253BA62B97F0B3 '+
"6BCA5B4001353FED5D28FED31FA53C343F381BE121E106F669 '+
"5B3CB";
С7: =
"1726DAE1BD153379F1FB0F4F2E00C06D39A733B7715D108EF0C '+
"518A11DF528394E37F744E1CEE1B4B411FEAFD7DDE0E281042 '+
"A728F85FEDB91C8C2ECECF31873C77D68053D550EB8549FDE2 '+
"C1885F40B68E1F0FF3383B747882AA517EB6F9061E23650222 '+
"85F1B1BEA91F83E2C4CD66BF0C636FC79B81A738D65D6F5BF8 '+
"0234D7";
RegKey: = @RegData [1]; // Буфер за регистрационен ключ
RegKeySize: = SizeOf (RegData); // Размер на буфер за рег. ключ
// Генериране.
Res: = RegistrationKeyGenerate (Params);
Резултати: = (Res = kgERROR_SUCCESS);
Ако Резултати след SetString (KeyStr, RegKey, RealKeySize);
приключи;
приключи;

процедура TfrmMain.btnGenerateClick (Sender: TObject);
Var
KeyStr. String;
NameStr. String;
Res. DWORD;
ResStr. String;
започвам
NameStr: = eRegName.Text;
Ако не GenerateKey (KeyStr, NameStr, Res), тогава
започвам
Res случай на
kgERROR_KG_ERROR. ResStr: = "Key грешка генератор! ';
kgERROR_MODE_UNKNOWN. ResStr: "Непознат номер режим! =;
kgERROR_REGNAME_ERROR. ResStr: = "Неправилно име регистрация! ';
kgERROR_SIGNATURE_ERROR. ResStr: = "Неизвестна режим подпис! ';
kgERROR_BUFFER_TOO_SMALL. ResStr: = "Резултати буфер твърде малка!";
kgERROR_CONSTANTS_UNDEFINED. ResStr: = 'Неправилни константи!';
kgERROR_HARDWAREID_ERROR. ResStr: = 'Невалидно HardwareID ключ!';
още
ResStr: = "Неизвестна грешка! ';
приключи;

MessageBox (дръжка, PChar (ResStr), "грешка", 0);
сложи край на друг
eRegKey.Text: = KeyStr;

Разбира се, в статията, аз описана само една проста схема на "виси" за защита на софтуерни продукти, използващи ASProtect. В действителност, на опаковката заради изобилието от възможности за адаптиране на защитните механизми на най-различни схеми на разпространение на софтуер.

В заключение, искам да дам някои препоръки. На първо място, защитено от ASProtect фиксирана версия. Тъй като дори малка промяна на защитения продукт може да доведе до значително главоболие. В резултат на това не се пренебрегва създаването на BAK-копие защитени
продукт и добра структура кодови фрагменти, съдържащи призовава ASProtect API, така че ако е необходимо, те могат лесно да бъдат деактивирани.
Тук няма да се опитвам да изразят мнението си за приложимостта и практичността на разглеждането на придобиване на пакета. Аз също няма да сравни своите функционалност и надеждност конкуренти. Вместо това, аз съм прикрепен към статията откъси от форумите, в които преувеличени проблема.

Покажете тази статия на приятел: