PVS-Studioのセキュリティ調査

PVS-Studio

ご挨拶! これは原則としてHabréの最初の投稿ですが、ハッキングソフトウェア全般に関する最初の記事ではありません。そのため、初心者クラッカーのために、最初からすべてを段階的に書くスキルがあります。 この記事では、 PVS-Studioのトライアルからどのように学んだかについて説明します。

準備する

始める前に、覚えておいてください:あなた自身の危険とリスクで実行するすべてのアクション。 プログラマーの仕事を尊重してください!

まず、プログラムをダウンロードしてインストールします。 ここではすべてが簡単です。

私たちは何を扱っていますか?

プログラムが何に書かれているのか、そして「 扱う 」必要があるものを見つけましょう。 StardersはこれにPEiDを使用していますが、現在は非常に古く、データベースは更新されておらず、多くのコンパイラーは理解していません。 通常、 ExeInfo PEを使用します。

プログラムと共にディレクトリに移動し、「 目で 」最初の実験ファイルがPVSStudioStandalone.exeになることを決定します。 起動は、それがメインの実行可能ファイルであることも示します。 ExeInfo PEを設定して、以下を取得します。
Microsoft Visual C#/ Basic.NET | .NET Reflectorを使用して.NETアセンブリを探索、閲覧、分析する
ExeInfo PEウィンドウ


液浸。 EXE No. 1

.NET Reflectorをインストールし、その中の実験テーマを開くことをお勧めします 。 やってみましょう。
.NET Reflectorの画面


クラス名は難読化されいないことがわかります(通常のように見えます)。 また、これらのクラスのメソッドのコードを使用すると、それらの上を歩くことができます。 最初の結論を導きます。メインの実行可能ファイルは保護されていません。 わかった さらに来て。

ライセンスチェックとそれに関連するすべてを見つけましょう。
PVS-Studioを起動し、 ツール->オプション...->登録メニューに移動します。 ユーザー名とランダムキーを入力してみましょう(著者に連絡せず、キーを要求しなかったため、形式がわかりません)。
ランダムな登録データを入力してください



これで、 .NET Reflectorでエラーメッセージのテキストを検索できます。 F3検索 )を押してから、 Ctrl + S検索文字列または定数 )を押します。 「 不正な登録情報 」を入力してください。 取得するもの:
間違った登録情報を探しています


見つかったリンクをダブルクリックして、次のコードを取得します。
Get_LicenseType()メソッドコード


このメソッドの呼び出し元を調べてみましょう。 Ctrl + RAnalyze )を押して、リストを展開し、その中のUsed Byリストを展開します。
get_LicenseType()メソッドへの参照のリスト


見つかった方法に従って[RMB]をクリックすると、[ メンバー移動]が表示されます。
ResetRegistrationInformation()メソッドコード


画面で、エラーメッセージが表示される場所を強調表示しました。 ifステートメントの条件で、 無効なライセンスタイプのチェックが表示されます。 そのため、このタイプはコードのどこかにインストールされました。 疑わしいものが見つかるまで、すべての方法を順番に実行します...そして、ここにあります:
メソッドProgramVerificationSystems.PVSStudio.LicenseInfo.Reload()


GetLicenseInfo()メソッドに喜んで行きます!
GetLicenseInfo()メソッドコード


ここで何が起こっていますか? 引数--checkreg = yesを使用して 、何らかの種類のexeファイルが起動され、コンソールへの出力が解析され、結果に基づいてライセンス情報が提供されるようです。 どのファイルが実行されていますか? 簡単に見つけることができます。GetPVSStudioExePath()メソッドにアクセスすると、次のことがわかります。
GetPVSStudioExePath()メソッドコード


exe PVS-Studio.exeがあり、 x86またはx64ディレクトリにあるようです。 プログラムでディレクトリを確認した後、はい-そのようなフォルダ、およびそのような実行可能ファイルがあることを確認します。 いいね!
そのため、彼は、ライセンス要求に関する特別なパラメーター( --checkreg = yes )を渡すときに、ライセンスに関する情報をあなたに吐き出す必要があります。

さらに深く。 EXE No. 2

コマンドラインからPVS-Studio.exeを個別に起動し、ライセンスについて知りたいという要望を伝えましょう。
ライセンスをリクエストする


非常に適切な検索文字列:「 不明なライセンスタイプ 」。 Olly Debugger v2で彼女を探します。 OlkaでPVS-Studio.exeを開き、RMB- > Search for- >すべての参照文字列をクリックします
すべての参照テキスト文字列


Ctrl + Fテキストの検索)を押して、「 不明なライセンスタイプ」と入力します。 そして、1つのリンクを見つけます。
検索結果不明なライセンスタイプ


リンクをダブルクリックすると、コードが表示されます。
興味深いコード


画面上で、興味深い機能を長方形で強調表示しました。
まず、呼び出しの直後に、 EAXレジスタ内の値が0から3までの数でチェックされます( 0- 試行1- 無効2- タイムアウト3- 有効 )。
次に、バイトはアドレスBYTE PTR SSでチェックされます:[LOCAL.12 + 3]Olkaが呼んだように)0から3( 0- 不明なライセンスタイプ1- シングルユーザーライセンス2- チームライセンス3- サイト)ライセンス )。 このアドレスは、 EAXレジスタの関数への入力で提供されます
さらにどこかにコンソールへの日付出力がまだありますが、私はそれに対処しませんでした、なぜなら ライセンスの種類が有効な場合 、日付は関係ありません。

パッチ適用。 EXE No. 1

最も興味深いのは、 CALLが指すアドレス(私の場合は0xA88570 )でコードにパッチを適用して、必要なライセンスとモードのタイプが表示されるようにする必要があることです。 コードをコンパイルしましょう:

まず、ライセンスの種類を担当するバイトを「 修正 」します。 サイトライセンスを選択しました(これは3です )。 入手した情報から判断すると、 Olkaに次のようなコードを記述します(アドレス0xA88570で Spaceを押します)。
movバイトptr [eax]、3

次に、 EAXで返される値を修正します 。 また、 3有効 )を選択しました:
mov eax、3

さて、最後に、関数を終了します。
retn

作業結果


それだけです! 変更を実行可能ファイルに保存し、完全に機能するライセンスをお楽しみください!

パッチ適用。 EXE No. 2

今回は、実行可能ファイルは64ビットなので、Olkaはコードを見つけることができません。 ただし、 x64dbgを使用して見つけることができます。 少し忍耐力を見せて、パッチを当てることもできます!

PSご覧のとおり、30分間の研究の力から、良い結果を待っています。

終わり



みんなありがとう!

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


All Articles