Win32および.NETアプリケーション保護:Themida Treadの概要(X-Protector)

このレビューは、最も強力で信頼性の高いWin32アプリケーションプロテクターの1つであるThemida (以前のX-Protector)に関するものです。 最近、アプリケーションの1つにThemidaが必要になったので、短いレビューを書くことにしました。 同時に、彼は著者に私に興味のあるいくつかの質問に答えるように頼みました。 答えもあなたにとって興味深いものになると思います。 記事の最後で、この短いインタビューの結果を探してください。

この記事がこのレビューの日付時点で最新のThemidaバージョン2.1.3.30に基づいて書かれているという事実に注目したいと思います。 マクロに関するいくつかの新機能があります。 2年前の公式サイトからのデモでは、彼らは奪われています。




基本情報



実際、Themidaテクノロジーに基づいた4つの製品があります。

Professionalの基本バージョンの違いは、.NETアプリケーションを操作する能力がないことだけです。 これから説明するすべてのことは、ThemidaとWinLicenseの両方で機能します。

Themida Auto-Protect機能


まず、「退屈な態度」について。

説明した機能のほとんどすべてを、必要に応じてオン/オフにできます。

CodeReplaceテクノロジー


CodeReplaceテクノロジーは、アプリケーションの一部を抽出し、その場所にジャンクコードを挿入し、元のコードとセキュリティコードを混合して、アプリケーションの別の場所に保存します。 CodeReplaceで保護されたコードを実行すると、何度もチェックした後、抽出されて復号化されます。 実行後、再びガベージに置き換えられます。 Themida自体がアプリケーションを分析し、そのような保護に適していると思われる機能を選択できます。 しかし、マクロの助けを借りて自分でやる方が良いでしょう(後で説明します)。



仮想マシン


Themida Virtual Machineは、アプリケーションを保護する最も強力な方法の1つです。 その本質は、コードの一部が生成されたアセンブラコードで置き換えられますが、Intelプロセッサにネイティブではなく、独自の命令システムと内部構造を持つ抽象仮想プロセッサのコードです。 Themidaは毎回、そのアーキテクチャの計画をランダムに生成します。 したがって、セキュリティコードを理解することが難しくなります。
Themidaは、いくつかのタイプの仮想プロセッサをサポートしています。

CISCプロセッサは、同じ種類の複数の仮想プロセッサを安全なアプリケーションに同時に埋め込むことができますが、命令のシステムは異なります。 これによりセキュリティが向上しますが、アプリケーションの実行可能コードのサイズが増加します。

ノイズ生成により、有用な作業指示を意味のないものと混ぜて、ハッカーの作業をさらに難しくすることができます。

CodeReplaceと同様に、Themidaは、仮想マシンのコードに変換することにより、プログラム内のどの機能を保護するかを選択できます。 ただし、自分で行うことをお勧めします(以下を参照)。



その他



さて、悲しいことについて少し。 上記のすべてを使用しても、アプリケーションが破損する可能性があります。 ハッカーをより困難にするには、Themidaマクロを使用します。 今からそれらについて話します。

Themidaマクロ。


Themidaマクロは、アプリケーションに埋め込まれたバイトシーケンスであり、Themidaアプリケーションを保護するまで動作に影響を与えません。 トレッドには特別な意味があります。 実際、彼らはあなたのコードの内部構造の複雑さについてThemidaに通知し、より効果的にそれを保護できるようにします。
マクロには、適用するソースコードの量を決定する開始マーカーと終了マーカーがあります。 SDKには、アセンブラ、C、D、Delphi、およびVisualBasic / Pure Basic用の既製のマクロがあります。 しかし、原則として、アセンブラーまたはコードへのバイト挿入をサポートする言語であれば、2分でやり直すことができます。 ここでは、私に最も近いDelphi構文を使用します。

注意! マクロは、.NETアプリケーションまたはPコードにコンパイルされたVisual Basicアプリケーションでは使用できません。

VM


VMマクロは、Themidaが仮想化するコードの領域を制限します(インターフェイスで設定を指定する仮想マシンの指示に変換します)。 次のように使用します。

{$I VM_Start.inc}
//
{$I VM_End.inc}


このマクロのコードセクションをラップすることをお勧めします。アルゴリズムの秘密は特に重要です。 たとえば、アクティベーションキーの確認、データファイルの復号化、セキュリティキーの確認など。

制限事項:


VM_WithLevel


マクロはすべてVMマクロに似ていますが、指定した量だけ仮想化のレベルを上げることで追加の保護を提供します。 また使用されます。 必要な仮想化レベルを指定するには、Delphiで対応する* .incファイルを編集する必要があります(その中のコメントを参照)。 仮想化レベルの高い価値は、コードの強力な肥大化につながります。 レベル0では、マクロはVMマクロと同じように動作します。

制限はVMマクロの場合と同じです。

CodeReplace


このマクロは、上で説明したCodeReplaceテクノロジーによって処理するコードをマークします。 VMマクロと同じ方法で使用されます。
制限はVMマクロの場合と同じです。
エンコード
マクロは、実行前に排他的に暗号化および復号化する必要があるコードのブロックをマークし、ブロックを出るときに暗号化して戻します。 VMマクロと同じように使用されます。 このマクロはVMおよびCodeReplaceマクロよりも弱い保護を提供しますが、その下のコードははるかに高速に動作します。

制限事項:


クリア


このマクロは、最初の呼び出し後にプロセスから削除されるコードブロックをマークします。 このマクロは、プログラムが起動時に一度だけ実行する操作に推奨されます。 たとえば、データを交換するためのセッションキーを計算したり、ライセンスキーを確認したりします。 VMマクロと同じ方法で使用されます。

制限事項:


保護されていない


保護後にアプリケーションから削除されるブロックをマークします。 たとえば、保護されていない場合、アプリケーションレポートを作成するために使用できます。 説明されているすべてのマクロと同様に使用されます。 制限はありません。

チェック保護


Themidaのデモ版では、このマクロは使用できません。 これは、アプリケーションセキュリティシステムの正当性を検証するために使用されます。 その使用法は、Themida SDKからの例によって最もよく示されています。
 procedure TForm1.Button4Click(Sender:TObject);
 var
   StatusProtection:整数。
始める
     {$ CheckProtection_Prolog.inc}
     asm
      プッシュ$ 33333333
      ステータス保護をポップ
    終わり;
     {$ CheckProtection_Epilog.inc}
     StatusProtection = 33333333ドルの場合
       MessageBox(0、「保護OK」、「セキュリティ検証マクロ」、MB_OK + MB_ICONINFORMATION)
    他に
       MessageBox(0、「アプリケーション保護に違反しています!」、「注意!」、MB_OK + MB_ICONERROR);
終わり;

すべてが保護されている場合にマクロが返す必要のある(整数/カーディナルタイプの)数値を定義します。 この例では、0x33333333。 保護されている場合、アセンブラのプッシュおよびポップ命令はプログラムから削除されます。 代わりに、複雑な検証手順が挿入されます。これは、セキュリティ違反を検出しない場合にのみ、指定した変数(この例ではStatusProtection)で指定した番号を返します。 セキュリティ違反が検出された場合、番号はランダムになります。

もちろん、実際には、示されているように、このマクロは使用できません。 最も簡単なことは、プロジェクトで使用される重要な定数を使用することです。その定数の値はコンテキストであまり明確ではなく、変数で置き換えます。 次に、コード内のどこかでこの新しい変数でこのマクロを使用します。 保護が解除されると、この定数/変数の値が正しくなくなり、最も予期しない場所でアプリケーションがクラッシュする可能性が高くなります。

マクロブロック内には、指定されたアセンブラー命令以外は何もありません。

CheckCodeIntegrity


Themidaのデモ版では、このマクロは使用できません。 このマクロはCheckProtectionと非常によく似ており、セキュリティシステムの別の部分でのみ機能します。 その使用方法はまったく同じです。

CheckVirtualPC


Themidaのデモ版では、このマクロは使用できません。 マクロは前の2つと似ていますが、セキュリティシステムをチェックするのではなく、VirtualPCやVMWareなどのハイパーバイザーの下で保護されたアプリケーションを起動するためのものです。 その使用方法はまったく同じです。 プログラムインターフェイスの対応するチェックマークと組み合わせる必要がある場合を除きます。 次に、保護されたアプリケーションで、Themidaハイパーバイザーの下で起動が検出されると警告が表示され、VirtualPCの下でThemida保護部分が削除されたアプリケーションのバリアントを実行しようとすると、マクロによって支援されます。

.NETアプリケーションのセキュリティ機能。


Themidaは.NETアプリケーションを保護できるという事実にもかかわらず、次の点に留意する必要があります。


ラファエルとの短いインタビュー




Source: https://habr.com/ru/post/J106920/


All Articles