この記事では、ライセンスソフトウェアの開発者として自己紹介し、海賊によるハッキングからプログラムを保護する方法を検討します。
前書き
コンパイルされた言語で記述されたソフトウェアを、リバースエンジニアリング、著作権侵害、およびサードパーティのマルウェアの導入から保護する方法について説明します。独自のプロジェクトの目標の1つは、このソフトウェアの配布をライセンスおよび制御することであるため、提供される情報は関連性があります。ライセンスを必要とするほとんどすべてのプログラムはハッキングの試みの対象となり、それらの多くは現時点で海賊版の対応物を持っています。以下では、簡単にするために、クラックされたプログラムをクラックと呼び、クラックのプロセスをクラックと呼びます。
この記事では、C ++でライセンスされたソフトウェアの開発者として自己紹介し、プログラムをクラックするプロセスを複雑にするためにどの保護方法を使用する必要があるかを分析します。どのプログラムもハッキングされる可能性があり、絶対的な保護はありません。目標はリバースエンジニアリングを最も困難にすることであり、プログラムのハッキングに必要な時間は、架空のソフトウェアの更新間の時間よりも長くなります。
一般情報
ソフトウェアの著作権侵害は、開発者にとって大きな問題です。ソフトウェアを違法な配布から保護するには、ライセンスだけでは不十分です。プログラムをリバースエンジニアリングから保護する必要があります。プログラムを保護する方法は何百もありますが、それらすべてに独自の回避策もあります。 Windowsオペレーティングシステム用にコンパイルされたC ++で独自のプログラムを作成したいとします。ライセンスを取得し、コピーを販売します。ソフトウェアを入手する唯一の方法が開発者からライセンスを購入することであるように、どのように行動する必要があるかを考えてみましょう。
++ , . : . , . . , , , .
, , , , . , , , , , . (. reverse engineering). ++ , – . , , - , . .
. , :·
()
, (. . , ). – , .
, , , .
, . – . , , . .
, . , , , .
. . , - .
, , . DR7 – debug control register, , . , , DR0 – DR3. , .
– windows, . , DbgUiRemoteBreakin(), , , . , - . , . .
– , , . , , - . , , , , .
– . windows API , , . , :
IsDebuggerPresent() –
CheckRemoteDebuggerPresent() –
NtQueryInformationProcess() –
RtlQueryProcessHeapInformation() –
RtlQueryProcessDebugInformation() –
NtQuerySystemInformation() –
.
. - -, , . . . — , , , . , , .
. . – . , , , , . . , - . , . .
, .
. , , . . VMProtect Themida. : . . , . , – , .
この記事では、海賊からソフトウェアを保護する方法について説明しました。これらすべての保護方法を使用することで、プログラムをクラックするために必要な時間とリソースが大幅に増加しました。絶対的な保護方法はありません。保護をバイパスできます。この場合、保護の主な目的は、更新をリリースするよりもプログラムをクラックするのに時間がかかることを確認することです。この場合、プログラムは十分に保護されていると見なすことができます。